From 1ff59923d6a18d067bfd3a7c1acdef841a596280 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Thu, 19 May 2022 14:13:54 +0200 Subject: [PATCH] server: Store real rv range in hasher Signed-off-by: Marek Siarkowicz --- server/mvcc/hash.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/server/mvcc/hash.go b/server/mvcc/hash.go index 91550e327..9b7b61574 100644 --- a/server/mvcc/hash.go +++ b/server/mvcc/hash.go @@ -33,7 +33,7 @@ func unsafeHashByRev(tx backend.ReadTx, lower, upper int64, keep map[revision]st type kvHasher struct { hash hash.Hash32 - lower, upper revision + lower, upper int64 keep map[revision]struct{} } @@ -42,20 +42,22 @@ func newKVHasher(lower, upper int64, keep map[revision]struct{}) kvHasher { h.Write(buckets.Key.Name()) return kvHasher{ hash: h, - lower: revision{main: lower + 1}, - upper: revision{main: upper + 1}, + lower: lower, + upper: upper, keep: keep, } } func (h *kvHasher) WriteKeyValue(k, v []byte) { kr := bytesToRev(k) - if !h.upper.GreaterThan(kr) { + upper := revision{main: h.upper + 1} + if !upper.GreaterThan(kr) { return } + lower := revision{main: h.lower + 1} // skip revisions that are scheduled for deletion // due to compacting; don't skip if there isn't one. - if h.lower.GreaterThan(kr) && len(h.keep) > 0 { + if lower.GreaterThan(kr) && len(h.keep) > 0 { if _, ok := h.keep[kr]; !ok { return }