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.
 // 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) {
 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
 		return nil, s.currentRev.main, ErrFutureRev
 	}
 	}
 	if rangeRev <= 0 {
 	if rangeRev <= 0 {
-		rev = int64(s.currentRev.main)
-		if s.currentRev.sub > 0 {
-			rev += 1
-		}
+		rev = curRev
 	} else {
 	} else {
 		rev = rangeRev
 		rev = rangeRev
 	}
 	}