Merged
Conversation
Wrap task handler execution with panic recovery to prevent worker goroutines from crashing when handlers panic. Panics are now captured as PanicError and flow through the normal error handling and retry logic. - Add PanicError type with panic value and stack trace - Add SafeExecute generic function for panic-safe execution - Add SafeHandler and SafeResourceKeyHandler wrappers - Integrate panic recovery into runLoop for all handler types - Add comprehensive unit tests for panic recovery Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove PanicError struct and helper functions (IsPanicError, AsPanicError) - Log stack trace immediately via slog.ErrorContext instead of storing it - Return simple error with panic value - Update SafeExecute to take context parameter for logging - Simplify tests to match new API Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace SafeHandler and SafeResourceKeyHandler wrappers with a single generic SafeExecute[P, R] function that works with any handler signature. Usage: result, err := SafeExecute(ctx, handler, param) This reduces code and makes the panic recovery more flexible - it works with any function matching func(context.Context, P) (R, error). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Consolidate individual test functions into table-driven tests - Group related test cases: basic execution, panic recovery, handler types - Fix struct field alignment for linter Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
🤖 Generated with Claude Code