소스 검색

store: fix data race when modify event in watchHub.

The event got from watchHub should be considered as readonly.
To modify it, we first need to get a clone of it or there might
be a data race.
Xiang Li 10 년 전
부모
커밋
d7a027e476
1개의 변경된 파일3개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 2
      store/watcher_hub.go

+ 3 - 2
store/watcher_hub.go

@@ -78,8 +78,9 @@ func (wh *watcherHub) watch(key string, recursive, stream bool, index, storeInde
 	defer wh.mutex.Unlock()
 	// If the event exists in the known history, append the EtcdIndex and return immediately
 	if event != nil {
-		event.EtcdIndex = storeIndex
-		w.eventChan <- event
+		ne := event.Clone()
+		ne.EtcdIndex = storeIndex
+		w.eventChan <- ne
 		return w, nil
 	}