You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* skip deduping running nested exec function calls
De-duping currently running nested execs, such as module function calls, can break when:
1. Client A starts the function call
2. Client B makes the same call, gets deduped with the existing one
3. Client A cancels the call (i.e. ctrl-C's, CI job shuts down for whatever reason, etc.)
4. The call continues running, but now is trying to talk back to a session that doesn't exist anymore when dagger APIs are invoked
Errors vary, but example from the new integ test that repros this:
```
testctx.go:197: 29 : │ [15.0s] | failed to return error: input: get or init client: initialize client: failed to load module: load moduleSource(refString: ".").asModule: Module!: load base: load: failed to stat local path: failed to stat path: failed to get requester session: session for "b9y05fidme5ahpym64tr8ymq5" not found
testctx.go:197: 29 : │ [15.0s] |
testctx.go:197: 29 : │ [15.0s] | original error: input: get or init client: initialize client: failed to load module: load moduleSource(refString: ".").asModule: Module!: load base: load: failed to stat local path: failed to stat path: failed to get requester session: session for "b9y05fidme5ahpym64tr8ymq5" not found
testctx.go:197: 29 : │ [15.0s] | Stderr:
testctx.go:197: 29 : │ [15.0s] | time=2025-04-24T20:39:19.608Z level=ERROR msg="failed to emit telemetry" error="failed to upload metrics: failed to send metrics to http://127.0.0.1:38113/v1/metrics: 400 Bad Request"
```
Fixing this by adding support for skipping the dedupe behavior for selected calls.
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
* use optional buildkit edge merging
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
* cleanup zillions of return vals
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
* add extra unit test coverage for skip dedupe
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
* add changelog
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
* de-dupe all dagql calls for now
There were occasional failures in the newly added integ test from
non-nested calls. This turned out to be because buildkit refs were
attempted to be used from the session that closed, which makes sense
since those buildkit refs get released when the session closes.
This is fairly tricky to address while buildkit refs are still being
used in our codebase, so this disables all de-duping on the dagql level
for now. The ability to de-dupe is left in (and still used in other
codepaths that use that code, namely filesync), so it can be re-enabled
in the future.
So far there doesn't seem to be a huge difference in test runtime, so
the performance impact is likely not that great. The dagql cache is
still enabled so we only lose de-duping of exactly overlapping
concurrent calls.
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
---------
Signed-off-by: Erik Sipsma <erik@sipsma.dev>
0 commit comments