Pārlūkot izejas kodu

Merge pull request #790 from LK4D4/fix_race

bitseq: fix race between CopyTo and set
Jana Radhakrishnan 9 gadi atpakaļ
vecāks
revīzija
6f3c0e34f3
1 mainītis faili ar 6 papildinājumiem un 2 dzēšanām
  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 {
-		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
 			}
 		}