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.
release-2.3
Xiang Li 2015-12-09 10:11:51 -08:00
parent 5a4a5998a3
commit d7a027e476
1 changed files with 3 additions and 2 deletions

View File

@ -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
}