fix(electric-db-collection): prevent orphan transactions after must-refetch in progressive mode #1069
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.
When a
must-refetchmessage is received in progressive mode, it starts a transaction withbegin()and callstruncate(). This resetshasReceivedUpToDatetofalse, causingisBufferingInitialSync()to returntrue.The bug: subsequent messages after must-refetch were being buffered instead of written to the existing transaction. When
up-to-datewas received, the atomic swap code would create a NEW transaction, leaving the first transaction (from must-refetch) uncommitted forever. This "orphan transaction" caused the collection to become corrupted with undefined values.The fix: Add
&& !transactionStartedchecks to 5 places so that when a transaction is already started (from must-refetch), messages are written directly to it instead of being buffered for atomic swap.🤖 Generated with Claude Code
🚀 Release Impact