From 46a9a9f8744e0c6fd49cf3d3f58752355608fbd2 Mon Sep 17 00:00:00 2001 From: Ibrahim Jarif Date: Mon, 21 Sep 2020 21:29:05 +0530 Subject: [PATCH] fix(maxVersion): Use choosekey instead of KeyToList (#1532) (cherry picked from commit f07dcfcd69bb9b56d86a4a8dfd7573966a43b88f) --- db.go | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/db.go b/db.go index 820f599d9..9a3be1ee4 100644 --- a/db.go +++ b/db.go @@ -1831,36 +1831,15 @@ func (db *DB) MaxVersion() (uint64, error) { stream = db.NewStream() } - stream.KeyToList = func(key []byte, itr *Iterator) (*pb.KVList, error) { - maxVs := uint64(0) - for ; itr.Valid(); itr.Next() { - item := itr.Item() - if item.IsDeletedOrExpired() { - break - } - if !bytes.Equal(key, item.Key()) { - // Break out on the first encounter with another key. - break - } - - if item.Version() > maxVs { - maxVs = item.Version() - } - if db.opt.NumVersionsToKeep == 1 { - break - } - - if item.DiscardEarlierVersions() { - break - } - } + stream.ChooseKey = func(item *Item) bool { mu.Lock() - if maxVs > maxVersion { - maxVersion = maxVs + if item.Version() > maxVersion { + maxVersion = item.Version() } mu.Unlock() - return nil, nil + return false } + stream.KeyToList = nil stream.Send = nil if err := stream.Orchestrate(context.Background()); err != nil { return 0, err