Repository navigation
[2026.10.7] mp: an SSI abort while dirtying a page is not an error to report - #270
Merged
Merged
Conversation
__memp_dirty, upgrading a snapshot page to a writable copy, refetches the page with __memp_fget. For a snapshot-safe txn that fetch can return DB_SNAPSHOT_CONFLICT (SSI mechanism (b) in __memp_si_rwconflict). __memp_dirty skipped "BDB3010 error getting a page for writing" only for DB_LOCK_DEADLOCK, so every such SSI abort also printed that message, though the caller aborts the txn normally and nothing is lost. It shows up after the SSI write-skew fixes, which raise the abort rate on contended workloads. ssi_livelock on FreeBSD 14.5 x86_64 printed it 30-89 times in 3 s; every txn that printed it returned DB_SNAPSHOT_CONFLICT or DB_SNAPSHOT_UNSAFE and aborted, and no txn returned any other code. Skip the message for the two SSI codes as for a deadlock. The return value is unchanged. (cherry picked from commit 2a582f3)
Contributor
ABI diff vs
|
Contributor
Coccinelle convention checksNo new violations. ✅ Resolved since baseline (3) -- update dist/cocci/baseline.txt to lock these in. |
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.
Backport of #261 to
lts/2026.10.7for v2026.10.7.3:cherry-pick -xof 2a582f3, which applied cleanly.__memp_dirtyprinted BDB3010 "error getting a page for writing" whenever an SSI transaction aborted withDB_SNAPSHOT_CONFLICTorDB_SNAPSHOT_UNSAFEwhile upgrading a snapshot page. The caller aborts the transaction normally and no data is affected, so the message is noise. It now skips those two codes, as it already did forDB_LOCK_DEADLOCK. The return value is unchanged.This is a one-line change in
src/mp/mp_fset.c, with no format, ABI or region change. It has no unit test, because it only changes a log message. The release qualification counts the BDB3010 linesssi_livelockprints on FreeBSD: base against release.