Skip to content

kv: read committed transactions should not wait on PENDING intents #102014

@nvb

Description

@nvb

Sibling issue of #94729. When a read committed transaction encounters an intent (with any isolation level), or when a transaction (with any isolation level) encounters a read committed intent, the push should not block.

From the Read Committed RFC:

Instead of waiting on these conflicting intents until the intent's transaction completes, the non-locking readers will perform a "status check" RPC in the form of a PushTxn(PUSH_TIMESTAMP) to the transaction record of encountered intent to determine its visibility. If the intent's transaction has already been committed or aborted, the reader must initiate and wait for intent resolution and then observe the post-resolution state. However, if the intent's transaction is in progress, the reader can push the minimum commit timestamp of the intent holder to prevent it from committing at or before the reader's read timestamp. The reader can then proceed to ignore the intent and continue with its scan.

Jira issue: CRDB-27217

Epic CRDB-26539

Metadata

Metadata

Assignees

Labels

A-kv-transactionsRelating to MVCC and the transactional model.A-read-committedRelated to the introduction of Read CommittedC-enhancementSolution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)T-kvKV Team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions