瀏覽代碼

Merge pull request #790 from LK4D4/fix_race

bitseq: fix race between CopyTo and set
Jana Radhakrishnan 9 年之前
父節點
當前提交
6f3c0e34f3
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      libnetwork/bitseq/sequence.go

+ 6 - 2
libnetwork/bitseq/sequence.go

@@ -250,8 +250,12 @@ func (h *Handle) set(ordinal, start, end uint64, any bool, release bool) (uint64
 	)
 	)
 
 
 	for {
 	for {
-		if h.store != nil {
-			if err := h.store.GetObject(datastore.Key(h.Key()...), h); err != nil && err != datastore.ErrKeyNotFound {
+		var store datastore.DataStore
+		h.Lock()
+		store = h.store
+		h.Unlock()
+		if store != nil {
+			if err := store.GetObject(datastore.Key(h.Key()...), h); err != nil && err != datastore.ErrKeyNotFound {
 				return ret, err
 				return ret, err
 			}
 			}
 		}
 		}