ci: replace package workflows with Dagger gate - #25
Conversation
|
Important Review skippedToo many files! This PR contains 377 files, which is 277 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (377)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 069fe6a416
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| int generation, | ||
| ) async { | ||
| try { | ||
| await _broker.extendLease(delivery, interval); |
There was a problem hiding this comment.
Preserve the full lease when scheduling renewals
When a task runs beyond the first half of its visibility timeout, interval is both the timer cadence and the duration passed to extendLease, so PostgreSQL, SQLite, and memory adapters move expiration to exactly the next timer tick with no safety margin. The Redis adapter is more severe: its extendLease implementation XACKs the current receipt and inserts a delayed copy, so this automatic renewal makes another worker able to execute the same still-running task concurrently. Keep the renewal cadence separate from the full lease duration and use an adapter operation that actually extends Redis visibility.
Useful? React with 👍 / 👎.
| INSERT INTO stem_locks | ||
| (key, namespace, owner, expires_at, created_at, fencing_token) | ||
| VALUES (?, ?, ?, ?, ?, ?) | ||
| ''', | ||
| [key, namespace, ownerValue, expiresAt, now, fencingToken], |
There was a problem hiding this comment.
Serialize first acquisition before inserting lock rows
When two PostgreSQL clients concurrently acquire a previously unseen key, both SELECT ... FOR UPDATE queries return no rows, so neither transaction holds a lock before reaching this insert. One insert succeeds while the other raises a unique-key violation instead of returning null as the LockStore.acquire contract requires; this is a normal scheduler/coordination race. Use an atomic insert-or-ignore/upsert path or otherwise serialize creation of absent keys.
Useful? React with 👍 / 👎.
| .listen( | ||
| (status) async { | ||
| if (status.state == TaskState.succeeded) { | ||
| final decoded = step.decode(status.payload); |
There was a problem hiding this comment.
Catch decoder failures in typed chains
If a typed task's decoder rejects a malformed or incompatible successful payload, this call throws before entering the following try block. Because the stream listener is asynchronous, that becomes an unhandled future error while the chain's completer and subscription remain pending, so TypedCanvasChain.run() never completes. Decoder and completion-callback failures should cancel the subscription and complete the chain future with the error.
Useful? React with 👍 / 👎.
Summary
task test:alland maketask test:daggerrun the complete gate.Validation
./tool/dagger_test.sh allgo test ./...in.dagger: passedbash -n tool/dagger_test.sh: passedThis is a draft PR to observe the GitHub Actions run.