From 3a539efcbf6074f1c543d0565ab7e9dfb36940dd Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Sat, 24 Sep 2022 17:09:59 +0000 Subject: [PATCH] fix: Retry reporting agent version It's possible that an agent starts before a build is reported as complete. This ensures the version is successfully sent before the startup completes. Fixes #4151. --- cli/agent.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cli/agent.go b/cli/agent.go index 052c89d5888dc..ff127325be2a5 100644 --- a/cli/agent.go +++ b/cli/agent.go @@ -168,6 +168,18 @@ func workspaceAgent() *cobra.Command { } } + ctx, cancelFunc := context.WithTimeout(cmd.Context(), time.Hour) + defer cancelFunc() + for retry.New(100*time.Millisecond, 5*time.Second).Wait(ctx) { + err := client.PostWorkspaceAgentVersion(cmd.Context(), version) + if err != nil { + logger.Warn(cmd.Context(), "post agent version: %w", slog.Error(err), slog.F("version", version)) + continue + } + logger.Info(ctx, "updated agent version", slog.F("version", version)) + break + } + executablePath, err := os.Executable() if err != nil { return xerrors.Errorf("getting os executable: %w", err) @@ -177,10 +189,6 @@ func workspaceAgent() *cobra.Command { return xerrors.Errorf("add executable to $PATH: %w", err) } - if err := client.PostWorkspaceAgentVersion(cmd.Context(), version); err != nil { - logger.Error(cmd.Context(), "post agent version: %w", slog.Error(err), slog.F("version", version)) - } - closer := agent.New(agent.Options{ FetchMetadata: client.WorkspaceAgentMetadata, Logger: logger,