-
Notifications
You must be signed in to change notification settings - Fork 141
feat(dashboard): surface actor errors in ui #3743
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
feat(dashboard): surface actor errors in ui #3743
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR Review: feat(dash): surface actor errors in uiSummaryThis PR enhances the frontend UI to display Actor errors, improving the developer experience when debugging Actor failures. The implementation adds error handling and display logic across several components. Code Quality & Best Practices✅ Strengths
🔍 Observations1. Status Determination Priority (queries/index.ts:128-130) if (error) {
return "crashed";
}Consider: Should an Actor with both 2. Query Structure (default-data-provider.tsx:199-204) actorErrorQueryOptions(actorId: ActorId) {
return queryOptions({
...this.actorQueryOptions(actorId),
select: (data) => data.error,
});
}However, this creates a separate query subscription. If the parent 3. Exhaustive Pattern Matching (actor-status-label.tsx:76-97) return match(error)
.with(P.string, (errMsg) =>
match(errMsg)
.with("no_capacity", () => (...))
.exhaustive(),
)
.with(P.shape({ runnerPoolError: P.any }), ...)
.with(P.shape({ runnerNoResponse: P.any }), ...)
.exhaustive();Potential Issue: The inner match on .with(P.string, (errMsg) =>
match(errMsg)
.with("no_capacity", () => (...))
.otherwise(() => <span>Unknown error: {errMsg}</span>),
)Potential Bugs & Issues
|
eaf51c1 to
d9ea998
Compare
PR Review: feat(dashboard): surface actor errors in uiSummaryThis PR successfully adds error handling and display functionality for Rivet Actors in the frontend UI. The implementation is well-structured and follows good TypeScript patterns using ts-pattern for type-safe error handling. ✅ Strengths
🔍 Code Quality ObservationsGood Patterns:
Minor Issues:
🎯 Functionality ReviewError Flow:
Status Priority (correct order):
🔒 Security ConsiderationsNo security concerns identified:
⚡ Performance ConsiderationsMinor optimization opportunities:
🧪 Test CoverageMissing test coverage concerns:
Recommendation: Add unit tests for:
🐛 Potential BugsNone identified. The implementation appears solid with proper type safety and null handling. 💡 Suggestions for Improvement
✍️ Style & ConventionsAdherence to CLAUDE.md:
📋 Checklist
🎯 Verdict: Approve with Minor SuggestionsThis is a solid implementation that meaningfully improves the developer experience. The only required change is removing the blank lines. Test coverage would be beneficial but not blocking. Required Changes:
Recommended Enhancements:
Great work on improving error visibility! 🚀 |
Graphite Automations"Test" took an action on this PR • (01/05/26)1 assignee was added to this PR based on Kacper Wojciechowski's automation. |
a4972a8 to
d8be1a7
Compare
d9ea998 to
d93db97
Compare
More templates
@rivetkit/cloudflare-workers
@rivetkit/db
@rivetkit/framework-base
@rivetkit/next-js
@rivetkit/react
rivetkit
@rivetkit/sql-loader
@rivetkit/virtual-websocket
@rivetkit/engine-runner
@rivetkit/engine-runner-protocol
commit: |
More templates
@rivetkit/cloudflare-workers
@rivetkit/db
@rivetkit/framework-base
@rivetkit/next-js
@rivetkit/react
rivetkit
@rivetkit/sql-loader
@rivetkit/virtual-websocket
@rivetkit/engine-runner
@rivetkit/engine-runner-protocol
commit: |
NathanFlurry
left a comment
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.
- crash policy needs to be sleep
- serverless on undefined error
d8be1a7 to
5435aff
Compare
d93db97 to
241eca3
Compare
Merge activity
|
### TL;DR Added error handling and display for Actors in the frontend UI. ### What changed? - Added `error` field to Actor data structure and query options - Created new `actorErrorQueryOptions` for retrieving Actor errors - Moved `RunnerPoolError` component from runner-config-table to actor-status-label for reuse - Added `ActorError` component to display different types of Actor errors - Updated `GuardConnectableInspector` to show appropriate error messages based on Actor status - Changed "Stopped" status label to "Destroyed" for better clarity - Enhanced Actor status determination to consider error state as "crashed" ### How to test? 1. Create an Actor that encounters an error (e.g., by configuring an invalid serverless endpoint) 2. Observe the error message displayed in the Actor UI 3. Verify different error types are properly formatted and displayed 4. Check that the Actor status correctly shows as "Crashed" when an error is present ### Why make this change? This change improves the developer experience by providing clearer feedback when Actors fail to start or encounter errors. Previously, error information was limited, making it difficult to diagnose issues. Now, specific error messages are displayed based on the error type, helping users understand and resolve problems more efficiently.

TL;DR
Added error handling and display for Actors in the frontend UI.
What changed?
errorfield to Actor data structure and query optionsactorErrorQueryOptionsfor retrieving Actor errorsRunnerPoolErrorcomponent from runner-config-table to actor-status-label for reuseActorErrorcomponent to display different types of Actor errorsGuardConnectableInspectorto show appropriate error messages based on Actor statusHow to test?
Why make this change?
This change improves the developer experience by providing clearer feedback when Actors fail to start or encounter errors. Previously, error information was limited, making it difficult to diagnose issues. Now, specific error messages are displayed based on the error type, helping users understand and resolve problems more efficiently.