diff --git a/internal/ceb/config.go b/internal/ceb/config.go index e52626c622d..d78c7665900 100644 --- a/internal/ceb/config.go +++ b/internal/ceb/config.go @@ -48,11 +48,14 @@ func (ceb *CEB) initConfigStream(ctx context.Context, cfg *config, isRetry bool) ceb.childCmd.Env = append(ceb.childCmd.Env, cv.Name+"="+cv.Value) } - // If we have URL service configuration, start it. + // If we have URL service configuration, start it. We start this in a goroutine + // since we don't need to block starting up our application on this. if url := resp.Config.UrlService; url != nil { - if err := ceb.initURLService(ctx, cfg.URLServicePort, url); err != nil { - return err - } + go func() { + if err := ceb.initURLService(ctx, cfg.URLServicePort, url); err != nil { + log.Warn("error starting URL service", "err", err) + } + }() } else { log.Debug("no URL service configuration, will not register with URL service") } diff --git a/internal/ceb/url.go b/internal/ceb/url.go index 41115a8d51e..dd8e9bb9423 100644 --- a/internal/ceb/url.go +++ b/internal/ceb/url.go @@ -29,34 +29,37 @@ func (ceb *CEB) initURLService(ctx context.Context, port int, cfg *pb.Entrypoint g, err := agent.NewAgent(L.Named("agent")) if err != nil { + // NewAgent should never fail, this just sets some fields and returns + // a struct. Therefore, we won't ever retry on this. return errors.Wrapf(err, "error configuring agent") } - g.RootCAs, _ = gocertifi.CACerts() - g.Token = cfg.Token - target := fmt.Sprintf(":%d", port) - labels := hznpb.ParseLabelSet(cfg.Labels) + // Setup the Mozilla CA cert bundle. We can ignore the error because + // this never fails, it only returns an error for backwards compat reasons. + g.RootCAs, _ = gocertifi.CACerts() + // Add our service to route to. + labels := hznpb.ParseLabelSet(cfg.Labels) + target := fmt.Sprintf(":%d", port) _, err = g.AddService(&agent.Service{ Type: "http", Labels: labels, Handler: agent.HTTPHandler("http://" + target), }) - if err != nil { + // This can also never fail. return errors.Wrapf(err, "error registering service") } L.Debug("discovering hubs") - dc, err := discovery.NewClient(cfg.ControlAddr) if err != nil { + // This shouldn't fail so we don't have to retry at the time of writing. return errors.Wrapf(err, "error conecting to waypoint control service") } L.Debug("refreshing data") - err = dc.Refresh(ctx) if err != nil { return errors.Wrapf(err, "error discovering network endpoints")