Persist payjoin receiver sessions across restarts#6
Draft
chavic wants to merge 2 commits intoValeraFinebits:masterfrom
Draft
Persist payjoin receiver sessions across restarts#6chavic wants to merge 2 commits intoValeraFinebits:masterfrom
chavic wants to merge 2 commits intoValeraFinebits:masterfrom
Conversation
- add durable receiver session and event entities plus EF migration - replace the in-memory session store with a database-backed replay store - persist contributed receiver input metadata for restart-time replay - start plugin migrations before background session processing
55a99ed to
05b232e
Compare
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
This makes Payjoin receiver-session state durable enough for milestone one so active negotiations can survive a BTCPay restart and replay deterministically enough to keep progressing.
What changed
ReceiverSessionsandReceiverSessionEventspersistence tables plus the EF migrationWantsInputsWhy
The previous implementation kept receiver negotiations in memory. A restart lost active session state and made recovery non-deterministic, which is below the milestone-one durability bar.
Impact
Validation
dotnet build BTCPayServer.Plugins.Payjoin/BTCPayServer.Plugins.Payjoin.csproj -p:NuGetAudit=falsebtcpayserver/BTCPayServer/BTCPayServer.csproj)Follow-up
A full checkout still needs: