From 9998573298a2edd0e52ff2b59397cdabcddbfe32 Mon Sep 17 00:00:00 2001 From: Sean Chittenden Date: Fri, 27 May 2016 03:49:51 -0700 Subject: [PATCH] Clear the backup server list when a Nomad heartbeat arives with servers If Nomad is heartbeating during a transition from using backup servers to Nomad servers, make Nomad the canonical source of servers and flush the list of servers populated from Consul. --- client/rpcproxy/rpcproxy.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/rpcproxy/rpcproxy.go b/client/rpcproxy/rpcproxy.go index 1811e211e..5dbbf53d2 100644 --- a/client/rpcproxy/rpcproxy.go +++ b/client/rpcproxy/rpcproxy.go @@ -642,6 +642,12 @@ func (p *RpcProxy) UpdateFromNodeUpdateResponse(resp *structs.NodeUpdateResponse p.serverListLock.Lock() defer p.serverListLock.Unlock() + // Clear the backup server list when a heartbeat contains at least + // one server. + if len(resp.Servers) > 0 && len(p.backupServers.L) > 0 { + p.backupServers.L = make([]*ServerEndpoint, len(resp.Servers)) + } + // 1) Create a map to reconcile the difference between // m.primaryServers and resp.Servers. type targetServer struct {