Browse Source

storage: let range work in the process of txn

range should work in the process of txn to help check the status during the
txn.
Yicheng Qin 10 years ago
parent
commit
9960651c3f
1 changed files with 7 additions and 5 deletions
  1. 7 5
      storage/kvstore.go

+ 7 - 5
storage/kvstore.go

@@ -259,14 +259,16 @@ func (a *store) Equal(b *store) bool {
 
 // range is a keyword in Go, add Keys suffix.
 func (s *store) rangeKeys(key, end []byte, limit, rangeRev int64) (kvs []storagepb.KeyValue, rev int64, err error) {
-	if rangeRev > s.currentRev.main {
+	curRev := int64(s.currentRev.main)
+	if s.currentRev.sub > 0 {
+		curRev += 1
+	}
+
+	if rangeRev > curRev {
 		return nil, s.currentRev.main, ErrFutureRev
 	}
 	if rangeRev <= 0 {
-		rev = int64(s.currentRev.main)
-		if s.currentRev.sub > 0 {
-			rev += 1
-		}
+		rev = curRev
 	} else {
 		rev = rangeRev
 	}