Explorar el Código

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 hace 10 años
padre
commit
9960651c3f
Se han modificado 1 ficheros con 7 adiciones y 5 borrados
  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
 	}
 	}