From 72cc5dcf39cca8d9cd109feb6d81dddac4617c64 Mon Sep 17 00:00:00 2001 From: shenjiangc Date: Sat, 14 Sep 2019 15:23:07 +0800 Subject: [PATCH] mvcc/kvstore:when the number key-value is greater than one million, compact take too long and blocks other requests --- mvcc/kvstore.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mvcc/kvstore.go b/mvcc/kvstore.go index 7e6c0046b..76792141b 100644 --- a/mvcc/kvstore.go +++ b/mvcc/kvstore.go @@ -272,15 +272,15 @@ func (s *store) updateCompactRev(rev int64) (<-chan struct{}, error) { } func (s *store) compact(trace *traceutil.Trace, rev int64) (<-chan struct{}, error) { - start := time.Now() - keep := s.kvindex.Compact(rev) - trace.Step("compact in-memory index tree") ch := make(chan struct{}) var j = func(ctx context.Context) { if ctx.Err() != nil { s.compactBarrier(ctx, ch) return } + start := time.Now() + keep := s.kvindex.Compact(rev) + indexCompactionPauseMs.Observe(float64(time.Since(start) / time.Millisecond)) if !s.scheduleCompaction(rev, keep) { s.compactBarrier(nil, ch) return @@ -289,8 +289,6 @@ func (s *store) compact(trace *traceutil.Trace, rev int64) (<-chan struct{}, err } s.fifoSched.Schedule(j) - - indexCompactionPauseMs.Observe(float64(time.Since(start) / time.Millisecond)) trace.Step("schedule compaction") return ch, nil }