Replace panic calls with proper error propagation#530
Merged
nickeskov merged 8 commits intowavesplatform:mainfrom Mar 30, 2026
Merged
Replace panic calls with proper error propagation#530nickeskov merged 8 commits intowavesplatform:mainfrom
nickeskov merged 8 commits intowavesplatform:mainfrom
Conversation
Replace all panic() calls with structured error handling using buffered channels and select-based multiplexing. Errors from goroutines are now propagated to callers instead of crashing the process. Key changes: - Add ServeErr() channel to API and BotAPI for HTTP server error reporting - Convert runMessagingClients/Services to return error channels - Use FanInCtx for composing error sources with proper context cancellation - Fix nil pointer dereference in vault.go when login fails with context.Canceled - Ensure scheduler shutdown runs on all exit paths in bot binaries - Log shutdown reason on service failure in nodemon - Simplify statementLogWrapper.String() and BaseTargetAlert.Message() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
alexeykiselev
previously requested changes
Mar 24, 2026
Remove unused //nolint:mnd directives in discord and telegram bots. Replace slog.NewTextHandler(io.Discard, nil) with slog.DiscardHandler in test files.
nickeskov
reviewed
Mar 25, 2026
Instead of stopping the renewal cycle on transient errors, retry with exponential backoff (1s initial, 5m max). Backoff resets on success.
catena2w
reviewed
Mar 25, 2026
Replace hand-rolled waitBackoff/nextBackoff with cenkalti/backoff/v4 exponential backoff which provides jitter out of the box. Add MaxElapsedTime of 60 minutes so we fail loudly if Vault is unreachable for an extended period rather than retrying silently forever.
nickeskov
approved these changes
Mar 30, 2026
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
Closes #409
panic()calls with structured error handling using buffered channels andselect-based multiplexingServeErr()channel toAPIandBotAPIfor HTTP server error reportingrunMessagingClients/runMessagingServicesto return error channelsFanInCtxwith proper context cancellation for composing error sources in nodemonvault.gowhen login fails withcontext.CanceledstatementLogWrapper.String()andBaseTargetAlert.Message()error handlingTest plan
makecompletes without errorspaniccalls remain in the codebaseapi_nopanic_test.go,alerts_nopanic_test.go🤖 Generated with Claude Code