Fix status NPE if worker has been sitting waiting for registration (#2781)
This commit is contained in:
1 parent
12415990ac
commit
bb281e494f
1 file changed
+18
-16
@@ -211,25 +211,27 @@ func (w *Worker) sendWorkerStatus(cancelCtx context.Context, sessionManager sess
|
||||
// append initial upstreams/ cluster addr to the resolver to try
|
||||
if w.GrpcClientConn.GetState() == connectivity.TransientFailure {
|
||||
lastStatus := w.lastStatusSuccess.Load().(*LastStatusInformation)
|
||||
addrs := lastStatus.LastCalculatedUpstreams
|
||||
if lastStatus != nil && lastStatus.LastCalculatedUpstreams != nil {
|
||||
addrs := lastStatus.LastCalculatedUpstreams
|
||||
|
||||
if len(w.conf.RawConfig.Worker.InitialUpstreams) > 0 {
|
||||
addrs = append(addrs, w.conf.RawConfig.Worker.InitialUpstreams...)
|
||||
}
|
||||
if len(w.conf.RawConfig.HcpbClusterId) > 0 {
|
||||
clusterAddress := fmt.Sprintf("%s%s", w.conf.RawConfig.HcpbClusterId, hcpbUrlSuffix)
|
||||
addrs = append(addrs, clusterAddress)
|
||||
}
|
||||
if len(w.conf.RawConfig.Worker.InitialUpstreams) > 0 {
|
||||
addrs = append(addrs, w.conf.RawConfig.Worker.InitialUpstreams...)
|
||||
}
|
||||
if len(w.conf.RawConfig.HcpbClusterId) > 0 {
|
||||
clusterAddress := fmt.Sprintf("%s%s", w.conf.RawConfig.HcpbClusterId, hcpbUrlSuffix)
|
||||
addrs = append(addrs, clusterAddress)
|
||||
}
|
||||
|
||||
addrs = strutil.RemoveDuplicates(addrs, false)
|
||||
if strutil.EquivalentSlices(lastStatus.LastCalculatedUpstreams, addrs) {
|
||||
// Nothing to update
|
||||
return
|
||||
}
|
||||
addrs = strutil.RemoveDuplicates(addrs, false)
|
||||
if strutil.EquivalentSlices(lastStatus.LastCalculatedUpstreams, addrs) {
|
||||
// Nothing to update
|
||||
return
|
||||
}
|
||||
|
||||
w.updateAddresses(cancelCtx, addrs, addressReceivers)
|
||||
lastStatus.LastCalculatedUpstreams = addrs
|
||||
w.lastStatusSuccess.Store(lastStatus)
|
||||
w.updateAddresses(cancelCtx, addrs, addressReceivers)
|
||||
lastStatus.LastCalculatedUpstreams = addrs
|
||||
w.lastStatusSuccess.Store(lastStatus)
|
||||
}
|
||||
}
|
||||
|
||||
// Exit out of status function; our work here is done and we don't need to create closeConnection requests
|
||||
|
||||
Reference in new issue
Block a user