From 2b6dd3778fc468d499c2207dc64d5c72e1a7d643 Mon Sep 17 00:00:00 2001 From: Paul Dix <paul@pauldix.net> Date: Mon, 24 Feb 2014 13:55:43 -0500 Subject: [PATCH] Lock the connection when setting it on the protobuf client. --- src/coordinator/protobuf_client.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/coordinator/protobuf_client.go b/src/coordinator/protobuf_client.go index ed72f134d7..6e4cf854d7 100644 --- a/src/coordinator/protobuf_client.go +++ b/src/coordinator/protobuf_client.go @@ -186,16 +186,20 @@ func (self *ProtobufClient) reconnect() { if !swapped { return } + defer func() { + self.connectionStatus = IS_CONNECTED + }() self.Close() conn, err := net.DialTimeout("tcp", self.hostAndPort, self.writeTimeout) if err == nil { + self.connLock.Lock() + defer self.connLock.Unlock() self.conn = conn log.Info("connected to %s", self.hostAndPort) } else { log.Error("failed to connect to %s", self.hostAndPort) } - self.connectionStatus = IS_CONNECTED return }