Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6a79965

Browse files
authored
fix(agent/agentcontainers): handle race between docker ps and docker inspect (#17447)
Fixescoder/internal#586 (comment)
1 parentb3aba6d commit6a79965

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

‎agent/agentcontainers/containers_dockercli.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,6 @@ import (
2424
"github.com/coder/coder/v2/codersdk"
2525
)
2626

27-
// DockerCLILister is a ContainerLister that lists containers using the docker CLI
28-
typeDockerCLIListerstruct {
29-
execer agentexec.Execer
30-
}
31-
32-
var_Lister=&DockerCLILister{}
33-
34-
funcNewDocker(execer agentexec.Execer)Lister {
35-
return&DockerCLILister{
36-
execer:agentexec.DefaultExecer,
37-
}
38-
}
39-
4027
// DockerEnvInfoer is an implementation of agentssh.EnvInfoer that returns
4128
// information about a container.
4229
typeDockerEnvInfoerstruct {
@@ -241,6 +228,19 @@ func run(ctx context.Context, execer agentexec.Execer, cmd string, args ...strin
241228
returnstdout,stderr,err
242229
}
243230

231+
// DockerCLILister is a ContainerLister that lists containers using the docker CLI
232+
typeDockerCLIListerstruct {
233+
execer agentexec.Execer
234+
}
235+
236+
var_Lister=&DockerCLILister{}
237+
238+
funcNewDocker(execer agentexec.Execer)Lister {
239+
return&DockerCLILister{
240+
execer:agentexec.DefaultExecer,
241+
}
242+
}
243+
244244
func (dcl*DockerCLILister)List(ctx context.Context) (codersdk.WorkspaceAgentListContainersResponse,error) {
245245
varstdoutBuf,stderrBuf bytes.Buffer
246246
// List all container IDs, one per line, with no truncation
@@ -319,9 +319,12 @@ func runDockerInspect(ctx context.Context, execer agentexec.Execer, ids ...strin
319319
stdout=bytes.TrimSpace(stdoutBuf.Bytes())
320320
stderr=bytes.TrimSpace(stderrBuf.Bytes())
321321
iferr!=nil {
322+
ifbytes.Contains(stderr, []byte("No such object:")) {
323+
// This can happen if a container is deleted between the time we check for its existence and the time we inspect it.
324+
returnstdout,stderr,nil
325+
}
322326
returnstdout,stderr,err
323327
}
324-
325328
returnstdout,stderr,nil
326329
}
327330

‎agent/agentcontainers/devcontainercli_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ func TestDockerDevcontainerCLI(t *testing.T) {
229229
ifos.Getenv("CODER_TEST_USE_DOCKER")!="1" {
230230
t.Skip("skipping Docker test; set CODER_TEST_USE_DOCKER=1 to run")
231231
}
232+
if_,err:=exec.LookPath("devcontainer");err!=nil {
233+
t.Fatal("this test requires the devcontainer CLI: npm install -g @devcontainers/cli")
234+
}
232235

233236
// Connect to Docker.
234237
pool,err:=dockertest.NewPool("")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp