Browse Source

libnetwork/datastore: minor code cleanup

While there is nothing inherently wrong with goto statements, their use
here is not helping with readability.

Signed-off-by: Cory Snider <csnider@mirantis.com>
Cory Snider 1 năm trước cách đây
mục cha
commit
9536fabaa8
1 tập tin đã thay đổi với 19 bổ sung31 xóa
  1. 19 31
      libnetwork/datastore/datastore.go

+ 19 - 31
libnetwork/datastore/datastore.go

@@ -189,11 +189,6 @@ func (ds *Store) Scope() string {
 
 // PutObjectAtomic provides an atomic add and update operation for a Record.
 func (ds *Store) PutObjectAtomic(kvObject KVObject) error {
-	var (
-		previous *store.KVPair
-		pair     *store.KVPair
-		err      error
-	)
 	ds.mu.Lock()
 	defer ds.mu.Unlock()
 
@@ -207,27 +202,23 @@ func (ds *Store) PutObjectAtomic(kvObject KVObject) error {
 		return types.InvalidParameterErrorf("invalid KV Object with a nil Value for key %s", Key(kvObject.Key()...))
 	}
 
-	if kvObject.Skip() {
-		goto add_cache
-	}
-
-	if kvObject.Exists() {
-		previous = &store.KVPair{Key: Key(kvObject.Key()...), LastIndex: kvObject.Index()}
-	} else {
-		previous = nil
-	}
+	if !kvObject.Skip() {
+		var previous *store.KVPair
+		if kvObject.Exists() {
+			previous = &store.KVPair{Key: Key(kvObject.Key()...), LastIndex: kvObject.Index()}
+		}
 
-	pair, err = ds.store.AtomicPut(Key(kvObject.Key()...), kvObjValue, previous)
-	if err != nil {
-		if err == store.ErrKeyExists {
-			return ErrKeyModified
+		pair, err := ds.store.AtomicPut(Key(kvObject.Key()...), kvObjValue, previous)
+		if err != nil {
+			if err == store.ErrKeyExists {
+				return ErrKeyModified
+			}
+			return err
 		}
-		return err
-	}
 
-	kvObject.SetIndex(pair.LastIndex)
+		kvObject.SetIndex(pair.LastIndex)
+	}
 
-add_cache:
 	// If persistent store is skipped, sequencing needs to
 	// happen in cache.
 	return ds.cache.add(kvObject, kvObject.Skip())
@@ -318,18 +309,15 @@ func (ds *Store) DeleteObjectAtomic(kvObject KVObject) error {
 
 	previous := &store.KVPair{Key: Key(kvObject.Key()...), LastIndex: kvObject.Index()}
 
-	if kvObject.Skip() {
-		goto deleteCache
-	}
-
-	if err := ds.store.AtomicDelete(Key(kvObject.Key()...), previous); err != nil {
-		if err == store.ErrKeyExists {
-			return ErrKeyModified
+	if !kvObject.Skip() {
+		if err := ds.store.AtomicDelete(Key(kvObject.Key()...), previous); err != nil {
+			if err == store.ErrKeyExists {
+				return ErrKeyModified
+			}
+			return err
 		}
-		return err
 	}
 
-deleteCache:
 	// cleanup the cache only if AtomicDelete went through successfully
 	// If persistent store is skipped, sequencing needs to
 	// happen in cache.