Browse Source

Merge pull request #235 from xiangli-cmu/0.2

Test both of the condition if given
Xiang Li 12 years ago
parent
commit
812fd4393e
1 changed files with 3 additions and 1 deletions
  1. 3 1
      store/store.go

+ 3 - 1
store/store.go

@@ -180,7 +180,9 @@ func (s *store) TestAndSet(nodePath string, prevValue string, prevIndex uint64,
 		return nil, etcdErr.NewError(etcdErr.EcodeNotFile, nodePath, index, term)
 	}
 
-	if n.Value == prevValue || n.ModifiedIndex == prevIndex {
+	// If both of the prevValue and prevIndex are given, we will test both of them.
+	// Command will be executed, only if both of the tests are successful.
+	if (prevValue == "" || n.Value == prevValue) && (prevIndex == 0 || n.ModifiedIndex == prevIndex) {
 		e := newEvent(TestAndSet, nodePath, index, term)
 		e.PrevValue = n.Value