Skip to content

fix(transactions): isolate failed storage writes - #10375

Merged
ReubenBond merged 1 commit into
dotnet:mainfrom
ReubenBond:reubenbond-fix-transaction-storage-writes
Aug 10, 2026
Merged

ReubenBond merged 1 commit into
dotnet:mainfrom
ReubenBond:reubenbond-fix-transaction-storage-writes

Conversation

@ReubenBond

@ReubenBond ReubenBond commented Aug 8, 2026

Copy link
Copy Markdown
Member

Failed transactional state writes could leave speculative metadata, pending states, and committed state in the wrapper's cached record, allowing later same-instance operations to observe or persist changes which were not durably confirmed.

This change constructs each write as a copy-on-write candidate and only retains it after the storage provider completes with a valid ETag. Failed or ambiguous writes restore the previously loaded record and ETag, preserving safe retry and load-based recovery semantics across storage providers. Focused tests cover failed-write reuse, speculative mutation isolation, ambiguous-write recovery, strict ETag handling, no-change writes, and successful prepare/abort/commit behavior.

Microsoft Reviewers: Open in CodeFlow

ReubenBond added a commit to ReubenBond/orleans that referenced this pull request Aug 8, 2026
Remove direct wrapper coverage which is already provided by upstream PR dotnet#10375, keeping this change focused on the storage contract and shared TestKit coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
ReubenBond added a commit to ReubenBond/orleans that referenced this pull request Aug 9, 2026
Remove direct wrapper coverage which is already provided by upstream PR dotnet#10375, keeping this change focused on the storage contract and shared TestKit coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@ReubenBond
ReubenBond force-pushed the reubenbond-fix-transaction-storage-writes branch from 19d5318 to 5fff8a8 Compare August 9, 2026 00:03
@ReubenBond
ReubenBond merged commit a30ffe6 into dotnet:main Aug 10, 2026
66 of 67 checks passed
@ReubenBond
ReubenBond deleted the reubenbond-fix-transaction-storage-writes branch August 10, 2026 00:41
This was referenced Aug 28, 2026
This was referenced Sep 7, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant