Enhance proposal task error handling in tbtcpg #3862
Merged
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.
Modified pkg/tbtcpg/tbtcpg.go - Generate method
Before: If any task's Run method returned an error, the entire proposal generation would fail and return that error.
After:
• If a task fails with an error, it logs the error with context (action name, wallet PKH, error details)
• Continues to the next task in the checklist instead of returning
• Only returns a NoopProposal if all tasks fail or complete without result
• Never returns an error from Generate (always succeeds with either a proposal or Noop)
Impact
• Resilience: Proposal generation continues even if individual tasks fail
• Better coordination: Leaders can still generate proposals (Noop or other actions) even when some tasks encounter errors
• Improved debugging: Errors are logged with full context for investigation
• No coordination failures: Proposal generation always succeeds, preventing leader routine failures that cause follower timeouts
This ensures that coordination messages are always sent, preventing the "coordination message not received on time" errors you were seeing.