server: Extract unsafeHashByRev function

Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
This commit is contained in:
Marek Siarkowicz
2022-05-17 13:45:18 +02:00
parent 336fef4ce2
commit bc592c7b01

View File

@@ -191,12 +191,16 @@ func (s *store) HashByRev(rev int64) (hash uint32, currentRev int64, compactRev
defer tx.RUnlock() defer tx.RUnlock()
s.mu.RUnlock() s.mu.RUnlock()
upper := revision{main: rev + 1} hash, err = unsafeHashByRev(tx, revision{main: compactRev + 1}, revision{main: rev + 1}, keep)
lower := revision{main: compactRev + 1} hashRevSec.Observe(time.Since(start).Seconds())
return hash, currentRev, compactRev, err
}
func unsafeHashByRev(tx backend.ReadTx, lower, upper revision, keep map[revision]struct{}) (uint32, error) {
h := crc32.New(crc32.MakeTable(crc32.Castagnoli)) h := crc32.New(crc32.MakeTable(crc32.Castagnoli))
h.Write(buckets.Key.Name()) h.Write(buckets.Key.Name())
err = tx.UnsafeForEach(buckets.Key, func(k, v []byte) error { err := tx.UnsafeForEach(buckets.Key, func(k, v []byte) error {
kr := bytesToRev(k) kr := bytesToRev(k)
if !upper.GreaterThan(kr) { if !upper.GreaterThan(kr) {
return nil return nil
@@ -212,10 +216,7 @@ func (s *store) HashByRev(rev int64) (hash uint32, currentRev int64, compactRev
h.Write(v) h.Write(v)
return nil return nil
}) })
hash = h.Sum32() return h.Sum32(), err
hashRevSec.Observe(time.Since(start).Seconds())
return hash, currentRev, compactRev, err
} }
func (s *store) updateCompactRev(rev int64) (<-chan struct{}, error) { func (s *store) updateCompactRev(rev int64) (<-chan struct{}, error) {