-
-
Notifications
You must be signed in to change notification settings - Fork 707
Fix cancelled runs breaking realtime subscriptions #1533
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🦋 Changeset detectedLatest commit: a361492 The changes in this PR will be included in the next version bump. This PR includes changesets to release 11 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughThis pull request introduces several changes aimed at improving error handling and stability within the task run management system. Key updates include a patch for the Changes
Possibly related PRs
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
apps/webapp/app/v3/services/finalizeTaskRun.server.tsOops! Something went wrong! :( ESLint: 8.45.0 ESLint couldn't find the config "custom" to extend from. Please check that the name of the config is correct. The config "custom" was referenced from the config file in "/.eslintrc.js". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team. Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
references/nextjs-realtime/src/trigger/example.ts (1)
18-21
: Consider making error simulation deterministicUsing
Math.random()
to simulate failures introduces non-determinism, which can complicate testing and debugging. Consider using a configurable parameter or dependency injection to control the failure condition for more predictable testing.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (5)
.changeset/shaggy-donkeys-hammer.md
(1 hunks)apps/webapp/app/v3/services/finalizeTaskRun.server.ts
(1 hunks)packages/core/src/v3/apiClient/runStream.ts
(2 hunks)packages/core/src/v3/schemas/api.ts
(2 hunks)references/nextjs-realtime/src/trigger/example.ts
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- .changeset/shaggy-donkeys-hammer.md
🔇 Additional comments (6)
references/nextjs-realtime/src/trigger/example.ts (1)
23-23
: Ensure extended timeout aligns with system constraints
The timeout has been increased from 2000ms to 20000ms. Verify that this change does not conflict with any system timeouts or performance expectations.
apps/webapp/app/v3/services/finalizeTaskRun.server.ts (1)
67-73
: Consolidating error updates improves efficiency and consistency
Combining the error update with the main database update ensures atomicity and prevents potential issues where the error might be lost if the status update causes the stream to shut down prematurely. This change enhances efficiency and data integrity.
packages/core/src/v3/apiClient/runStream.ts (2)
2-2
: Importing createJsonErrorObject
for consistent error transformation
The addition of createJsonErrorObject
ensures that errors are uniformly formatted across the application. This is a good practice for consistent error handling.
351-351
: Updating error handling for consistent error representation
Using createJsonErrorObject(row.error)
ensures that error objects are consistently structured, improving error handling and debugging processes.
packages/core/src/v3/schemas/api.ts (2)
3-3
: Updating import to include TaskRunError
Importing TaskRunError
from ./common.js
reflects the shift to a more specific error type, aligning with the updated error handling strategy.
711-711
: Using TaskRunError
in SubscribeRunRawShape
for improved error clarity
Replacing SerializedError
with TaskRunError
in the SubscribeRunRawShape
schema enhances error specificity and aligns with the new error handling conventions.
@trigger.dev/core
@trigger.dev/build
@trigger.dev/rsc
@trigger.dev/sdk
@trigger.dev/react-hooks
trigger.dev
commit: |
This fixes an issue with cancelled runs and other runs in an error state that would cause realtime to throw an error because we weren't using the correct schema for the
error
column. I've also made setting the final run status and error atomic to prevent realtime from closing the subscription too early.