mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: Extract unsafeHashByRev function
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user