commit | d34299ebe13211802739d698e526be78161eac6f | [log] [tgz] |
---|---|---|
author | Serge Bazanski <serge@monogon.tech> | Thu Jun 15 11:07:47 2023 +0200 |
committer | Tim Windelschmidt <tim@monogon.tech> | Thu Jun 15 11:47:12 2023 +0000 |
tree | 2016915e8cb17311904638c13f934b2150b25aa4 | |
parent | 89974c6f9e4f81d6d819d041a7f5286772df7124 [diff] |
m/n/core/network/hostsfile: fix nodeMap data race Change-Id: I7c052691712ebd39e2a23a9497d4d6d0c0ab1e0c Reviewed-on: https://review.monogon.dev/c/monogon/+/1817 Reviewed-by: Lorenz Brun <lorenz@monogon.tech> Tested-by: Jenkins CI
diff --git a/metropolis/node/core/network/hostsfile/hostsfile.go b/metropolis/node/core/network/hostsfile/hostsfile.go index ea0a357..5198f9a 100644 --- a/metropolis/node/core/network/hostsfile/hostsfile.go +++ b/metropolis/node/core/network/hostsfile/hostsfile.go
@@ -264,6 +264,13 @@ for _, t := range ev.NodeTombstones { delete(nodes, t.NodeId) } - s.clusterC <- nodes + + // Copy nodemap before passing it over to the main goroutine. The values don't + // need to be deep copied as they're not ever changed (only inserted). + nodesCopy := make(nodeMap) + for k, v := range nodes { + nodesCopy[k] = v + } + s.clusterC <- nodesCopy } }