fix: preserve signature notifications across transaction retries - #149
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (17)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change adds optional request-owned completion channels to transaction requests. Priority: ➖ Normal Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to The transaction reply and subscription changes appear internally consistent and ready to merge after normal checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What changed
Resending a transaction can currently give a signature subscriber
AlreadyProcessedinstead of the transaction's execution result. This change keeps submission errors separate from signature notifications, so retries cannot consume observers.The common
schedule()path still allocates no completion channel. Publishing updates when nobody is subscribed now skips the subscription map entirely, for signatures as well as persistent streams.Closes #148
Impact
execute()receives submission errors directly;schedule()remains queue-only. Duplicate and invalid-blockhash rejections no longer appear as execution status. Rejected signatures still retain their deduplication reservation until expiry.MBV #1710 tracks the consumer-side work. Stored and replicated formats are unchanged.
Reviewer notes
A subscriber joining during commit must not fall between notification and status lookup. Registration happens before the lookup, and commit makes the result readable before notifying subscribers.