Commit 2e02967a authored by Kouhei Ueno's avatar Kouhei Ueno

Avoid data race in Proxier.OnUpdate

The bug was that the proxier is passed as value on method decleration. This caused a copy of Proxier to be created when the method was invoked. The copy being a shallow copy turned out to have them both reference a same map instance, but their mutexes were different instances. This turned out to use different mutexes before operating on a same map instance, which didn't make sense.
parent 6f85a5b8
......@@ -193,7 +193,7 @@ func (proxier *Proxier) addServiceCommon(service string, l net.Listener) {
// OnUpdate manages the active set of service proxies.
// Active service proxies are reinitialized if found in the update set or
// shutdown if missing from the update set.
func (proxier Proxier) OnUpdate(services []api.Service) {
func (proxier *Proxier) OnUpdate(services []api.Service) {
glog.Infof("Received update notice: %+v", services)
activeServices := util.StringSet{}
for _, service := range services {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment