Hello core engineers ๐
I am currently exploring this bug: https://linear.app/dagger/issue/DEV-3286/services-timeout-or-run-forever-in-dagger-cloud
Basically, whenever we run a pipeline: dagger run go main.go, with such pipeline:
package main
import (
"context"
"os"
"dagger.io/dagger"
)
func main() {
ctx := context.Background()
// create Dagger client
client, err := dagger.Connect(ctx, dagger.WithLogOutput(os.Stderr))
if err != nil {
panic(err)
}
defer client.Close()
_, err = client.Container().From("alpine").WithExec([]string{"sleep", "123"}).Sync(ctx)
if err != nil {
panic(err)
}
}
When we sigint before the sleep ends, we seem to exit prior flushing all events, leading to this output:
dagger run go run .
โ [0.48s] connect
โฃ [0.20s] starting engine
...
โ โป โ
โ โ [14.26s] ERROR go run .
โโโโโฏ [11.82s] exec sleep 123
โป
โข Cloud URL: https://dagger.cloud/runs/a04410bb-c785-49e0-b09f-83f0e4c5db78
โข Engine: 622e40844c39 (version devel ())
โง 14.78s โ 10 โ 1
signal: terminated
and to an incorrect state on dagger.cloud. The journal looks like this, with events that were properly completed
{"vertexes":[{"id":"[root-vtx]","name":"go run .","started":{"seconds":1707353206,"nanos":615720000},"error":"signal: terminated"}],"sent":{"seconds":1707353220,"nanos":737305000}}
{"vertexes":[{"id":"[root-vtx]","name":"go run .","started":{"seconds":1707353206,"nanos":615720000},"completed":{"seconds":1707353220,"nanos":737359000},"error":"signal: terminated"}],"sent":{"seconds":1707353220,"nanos":737360000}}
{"groups":[{"id":"_root","started":{"seconds":1707353206,"nanos":74872000},"completed":{"seconds":1707353220,"nanos":763963000}}],"sent":{"seconds":1707353220,"nanos":763970000}}