aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-08-08 16:06:34 +0200
committerJunio C Hamano <gitster@pobox.com>2024-08-08 10:14:42 -0700
commit5f0ed603a1653f2394c468814bde4b0dca2cff45 (patch)
treed29206b98814668e072709f087d283df3f816f62
parent8030100bdafc508eaa7900ebcfd67a2d6b02749e (diff)
downloadgit-5f0ed603a1653f2394c468814bde4b0dca2cff45.tar.xz
reftable/stack: update stats on failed full compaction
When auto-compaction fails due to a locking error, we update the statistics to indicate this failure. We're not doing the same when performing a full compaction. Fix this inconsistency by using `stack_compact_range_stats()`, which handles the stat update for us. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--reftable/stack.c14
-rw-r--r--reftable/stack_test.c3
2 files changed, 8 insertions, 9 deletions
diff --git a/reftable/stack.c b/reftable/stack.c
index ba8234b486..e5959d2c76 100644
--- a/reftable/stack.c
+++ b/reftable/stack.c
@@ -1205,13 +1205,6 @@ done:
return err;
}
-int reftable_stack_compact_all(struct reftable_stack *st,
- struct reftable_log_expiry_config *config)
-{
- return stack_compact_range(st, 0, st->merged->stack_len ?
- st->merged->stack_len - 1 : 0, config);
-}
-
static int stack_compact_range_stats(struct reftable_stack *st,
size_t first, size_t last,
struct reftable_log_expiry_config *config)
@@ -1222,6 +1215,13 @@ static int stack_compact_range_stats(struct reftable_stack *st,
return err;
}
+int reftable_stack_compact_all(struct reftable_stack *st,
+ struct reftable_log_expiry_config *config)
+{
+ size_t last = st->merged->stack_len ? st->merged->stack_len - 1 : 0;
+ return stack_compact_range_stats(st, 0, last, config);
+}
+
static int segment_size(struct segment *s)
{
return s->end - s->start;
diff --git a/reftable/stack_test.c b/reftable/stack_test.c
index 1d109933d3..3ed8e44924 100644
--- a/reftable/stack_test.c
+++ b/reftable/stack_test.c
@@ -1005,8 +1005,7 @@ static void test_reftable_stack_compaction_with_locked_tables(void)
*/
err = reftable_stack_compact_all(st, NULL);
EXPECT(err == REFTABLE_LOCK_ERROR);
- /* TODO: this is wrong, we should get notified about the failure. */
- EXPECT(st->stats.failures == 0);
+ EXPECT(st->stats.failures == 1);
EXPECT(st->merged->stack_len == 3);
reftable_stack_destroy(st);