From 89b10cf967f495c643f8add6ff429db7f4e24b0d 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 ed05bc288..997aaaf56 100644 --- a/mvcc/kvstore.go +++ b/mvcc/kvstore.go @@ -271,15 +271,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 @@ -288,8 +288,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 }