Browse Source

refactor(update) more clear dir checking

Xiang Li 12 years ago
parent
commit
4ba7d85d56
1 changed files with 8 additions and 15 deletions
  1. 8 15
      store/store.go

+ 8 - 15
store/store.go

@@ -366,23 +366,16 @@ func (s *store) Update(nodePath string, newValue string, expireTime time.Time) (
 	e := newEvent(Update, nodePath, nextIndex, n.CreatedIndex)
 	e := newEvent(Update, nodePath, nextIndex, n.CreatedIndex)
 	eNode := e.Node
 	eNode := e.Node
 
 
-	if len(newValue) != 0 {
-		if n.IsDir() {
-			// if the node is a directory, we cannot update value
-			s.Stats.Inc(UpdateFail)
-			return nil, etcdErr.NewError(etcdErr.EcodeNotFile, nodePath, currIndex)
-		}
-
-		eNode.PrevValue = n.Value
-		n.Write(newValue, nextIndex)
-		eNode.Value = newValue
-
-	} else {
-		// update value to empty
-		eNode.Value = n.Value
-		n.Value = ""
+	if n.IsDir() && len(newValue) != 0 {
+		// if the node is a directory, we cannot update value to non-empty
+		s.Stats.Inc(UpdateFail)
+		return nil, etcdErr.NewError(etcdErr.EcodeNotFile, nodePath, currIndex)
 	}
 	}
 
 
+	eNode.PrevValue = n.Value
+	n.Write(newValue, nextIndex)
+	eNode.Value = newValue
+
 	// update ttl
 	// update ttl
 	n.UpdateTTL(expireTime)
 	n.UpdateTTL(expireTime)