Merge pull request #2078 from sipsma/fix-client-deadlock

This commit is contained in:
Andrea Luzzardi 2022-04-07 20:03:49 -07:00 committed by GitHub
commit def93a2942
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View File

@ -189,12 +189,6 @@ func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFu
wg.Done() wg.Done()
} }
// Catch solver's events
// Closed manually
eventsCh := make(chan *bk.SolveStatus)
wg.Add(1)
go catchOutput(eventsCh)
// Catch build events // Catch build events
// Closed by buildkit // Closed by buildkit
buildCh := make(chan *bk.SolveStatus) buildCh := make(chan *bk.SolveStatus)
@ -202,6 +196,12 @@ func (c *Client) buildfn(ctx context.Context, pctx *plancontext.Context, fn DoFu
go catchOutput(buildCh) go catchOutput(buildCh)
resp, err := c.c.Build(ctx, opts, "", func(ctx context.Context, gw bkgw.Client) (*bkgw.Result, error) { resp, err := c.c.Build(ctx, opts, "", func(ctx context.Context, gw bkgw.Client) (*bkgw.Result, error) {
// Catch solver's events
// Closed by solver.Stop
eventsCh := make(chan *bk.SolveStatus)
wg.Add(1)
go catchOutput(eventsCh)
s := solver.New(solver.Opts{ s := solver.New(solver.Opts{
Control: c.c, Control: c.c,
Gateway: gw, Gateway: gw,

View File

@ -248,3 +248,13 @@ setup() {
assert_failure assert_failure
assert_output --partial "no match for platform in manifest" assert_output --partial "no match for platform in manifest"
} }
@test "plan/do: invalid BUILDKIT_HOST results in error" {
cd "$TESTDIR"
# ip address is in a reserved range that should be unroutable
export BUILDKIT_HOST=tcp://192.0.2.1:1234
run timeout 30 "$DAGGER" "do" -p ./plan/do/actions.cue test
assert_failure
assert_output --partial "Unavailable: connection error"
}