diff --git a/internal/daemon/worker/status.go b/internal/daemon/worker/status.go index 1a29642b3..4ddad3862 100644 --- a/internal/daemon/worker/status.go +++ b/internal/daemon/worker/status.go @@ -189,16 +189,12 @@ func (w *Worker) sendWorkerStatus(cancelCtx context.Context) { } } else { w.updateTags.Store(false) - addrs := make([]resolver.Address, 0, len(result.Controllers)) - strAddrs := make([]string, 0, len(result.Controllers)) - for _, v := range result.Controllers { - addrs = append(addrs, resolver.Address{Addr: v.Address}) - strAddrs = append(strAddrs, v.Address) - } - switch len(strAddrs) { - case 0: - event.WriteError(statusCtx, op, errors.New("got no controller addresses from controller; possibly prior to first status save, not persisting")) - default: + // This may be nil if we are in a multiple hop scenario + if len(result.Controllers) > 0 { + addrs := make([]resolver.Address, 0, len(result.Controllers)) + for _, v := range result.Controllers { + addrs = append(addrs, resolver.Address{Addr: v.Address}) + } w.Resolver().UpdateState(resolver.State{Addresses: addrs}) } w.lastStatusSuccess.Store(&LastStatusInformation{StatusResponse: result, StatusTime: time.Now()}) diff --git a/internal/daemon/worker/worker_proxy_service.go b/internal/daemon/worker/worker_proxy_service.go index 54e657ed2..e70b4451a 100644 --- a/internal/daemon/worker/worker_proxy_service.go +++ b/internal/daemon/worker/worker_proxy_service.go @@ -31,7 +31,15 @@ var ( ) func (ws *workerProxyServiceServer) Status(ctx context.Context, req *pbs.StatusRequest) (*pbs.StatusResponse, error) { - return ws.scsClient.Load().(pbs.ServerCoordinationServiceClient).Status(ctx, req) + resp, err := ws.scsClient.Load().(pbs.ServerCoordinationServiceClient).Status(ctx, req) + + if resp != nil { + // We don't currently support distributing new addreses to workers + // multiple hops away so ensure they're stripped out + resp.Controllers = nil + } + + return resp, err } func (ws *workerProxyServiceServer) LookupSession(ctx context.Context, req *pbs.LookupSessionRequest) (*pbs.LookupSessionResponse, error) {