Fix status NPE if worker has been sitting waiting for registration (#2781)

pull/2783/head
Irena Rindos 3 years ago committed by GitHub
parent 12415990ac
commit bb281e494f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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

Loading…
Cancel
Save