From 17b308fcac4e9c539dfbef5e9d4e155ae2a1144a Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Fri, 27 Jun 2025 10:39:30 +0000 Subject: [PATCH 1/2] fix(agent): delay containerAPI init to ensure startup scripts run before --- agent/agent.go | 30 +++++++++++++----------------- agent/agentcontainers/api.go | 3 +-- agent/api.go | 2 +- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index b0a99f118475e..452b8d10989f1 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1158,20 +1158,8 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, } } - var ( - scripts = manifest.Scripts - scriptRunnerOpts []agentscripts.InitOption - devcontainerScripts map[uuid.UUID]codersdk.WorkspaceAgentScript - ) - if a.devcontainers { - a.containerAPI.Init( - agentcontainers.WithManifestInfo(manifest.OwnerName, manifest.WorkspaceName, manifest.AgentName), - agentcontainers.WithDevcontainers(manifest.Devcontainers, scripts), - agentcontainers.WithSubAgentClient(agentcontainers.NewSubAgentClientFromAPI(a.logger, aAPI)), - ) - - scripts, devcontainerScripts = agentcontainers.ExtractDevcontainerScripts(manifest.Devcontainers, scripts) - } + var scriptRunnerOpts []agentscripts.InitOption + scripts, devcontainerScripts := agentcontainers.ExtractDevcontainerScripts(manifest.Devcontainers, manifest.Scripts) err = a.scriptRunner.Init(scripts, aAPI.ScriptCompleted, scriptRunnerOpts...) if err != nil { return xerrors.Errorf("init script runner: %w", err) @@ -1190,9 +1178,17 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, // autostarted devcontainer will be included in this time. err := a.scriptRunner.Execute(a.gracefulCtx, agentscripts.ExecuteStartScripts) - for _, dc := range manifest.Devcontainers { - cErr := a.createDevcontainer(ctx, aAPI, dc, devcontainerScripts[dc.ID]) - err = errors.Join(err, cErr) + if a.containerAPI != nil { + a.containerAPI.Init( + agentcontainers.WithManifestInfo(manifest.OwnerName, manifest.WorkspaceName, manifest.AgentName), + agentcontainers.WithDevcontainers(manifest.Devcontainers, scripts), + agentcontainers.WithSubAgentClient(agentcontainers.NewSubAgentClientFromAPI(a.logger, aAPI)), + ) + + for _, dc := range manifest.Devcontainers { + cErr := a.createDevcontainer(ctx, aAPI, dc, devcontainerScripts[dc.ID]) + err = errors.Join(err, cErr) + } } dur := time.Since(start).Seconds() diff --git a/agent/agentcontainers/api.go b/agent/agentcontainers/api.go index 26ebafd660fb1..6e56d4235e473 100644 --- a/agent/agentcontainers/api.go +++ b/agent/agentcontainers/api.go @@ -530,7 +530,6 @@ func (api *API) updateContainers(ctx context.Context) error { // will clear up on the next update. if !errors.Is(err, context.Canceled) { api.mu.Lock() - api.containers = codersdk.WorkspaceAgentListContainersResponse{} api.containersErr = err api.mu.Unlock() } @@ -947,7 +946,7 @@ func (api *API) CreateDevcontainer(workspaceFolder, configPath string, opts ...D slog.F("devcontainer_id", dc.ID), slog.F("devcontainer_name", dc.Name), slog.F("workspace_folder", dc.WorkspaceFolder), - slog.F("config_path", configPath), + slog.F("config_path", dc.ConfigPath), ) ) diff --git a/agent/api.go b/agent/api.go index c6b1af7347bcd..0458df7c58e1f 100644 --- a/agent/api.go +++ b/agent/api.go @@ -36,7 +36,7 @@ func (a *agent) apiHandler() http.Handler { cacheDuration: cacheDuration, } - if a.devcontainers { + if a.containerAPI != nil { r.Mount("/api/v0/containers", a.containerAPI.Routes()) } else { r.HandleFunc("/api/v0/containers", func(w http.ResponseWriter, r *http.Request) { From b305e99c71489b9f29355454799358a3dc42b9ae Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Fri, 27 Jun 2025 10:41:39 +0000 Subject: [PATCH 2/2] oops --- agent/agent.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 452b8d10989f1..a2f2ea0dafaba 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1158,8 +1158,14 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, } } - var scriptRunnerOpts []agentscripts.InitOption - scripts, devcontainerScripts := agentcontainers.ExtractDevcontainerScripts(manifest.Devcontainers, manifest.Scripts) + var ( + scripts = manifest.Scripts + scriptRunnerOpts []agentscripts.InitOption + devcontainerScripts map[uuid.UUID]codersdk.WorkspaceAgentScript + ) + if a.containerAPI != nil { + scripts, devcontainerScripts = agentcontainers.ExtractDevcontainerScripts(manifest.Devcontainers, scripts) + } err = a.scriptRunner.Init(scripts, aAPI.ScriptCompleted, scriptRunnerOpts...) if err != nil { return xerrors.Errorf("init script runner: %w", err) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy