commit | 98a6cccb052c5d17f4f2429edf41d57bd74b7ffd | [log] [tgz] |
---|---|---|
author | Serge Bazanski <serge@monogon.tech> | Tue Jun 20 13:09:12 2023 +0200 |
committer | Serge Bazanski <serge@monogon.tech> | Tue Jun 20 14:18:27 2023 +0000 |
tree | da656463788abd785a884743e5c5f75e0da7f7c7 | |
parent | c1ce95f7e86c74a76ae2b29986905cb34cb19e56 [diff] |
metropolis/consensus: fix race condition This returns a copy of each status, instead of the same status, possibly mutated. Change-Id: Ic4ed425a38b001b0139a81c46c61af551b966166 Reviewed-on: https://review.monogon.dev/c/monogon/+/1826 Tested-by: Jenkins CI Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/consensus/consensus.go b/metropolis/node/core/consensus/consensus.go index c000bb0..c36386c 100644 --- a/metropolis/node/core/consensus/consensus.go +++ b/metropolis/node/core/consensus/consensus.go
@@ -336,7 +336,8 @@ cl: cl, ca: s.ca, } - s.value.Set(st) + st2 := *st + s.value.Set(&st2) // Wait until server dies for whatever reason, update status when that // happens. @@ -348,8 +349,10 @@ server.Close() err = ctx.Err() } + st.stopped = true - s.value.Set(st) + st3 := *st + s.value.Set(&st3) return err }