Skip to content

kv: PushTxn(PUSH_TIMESTAMP) without Raft consensus #94728

@nvb

Description

@nvb

Currently, a PushTxn request that has a high-enough priority to push a transaction rewrites that transaction's record with a new write_timestamp. This new write timestamp is treated as the minimum commit timestamp of the pushee.

The rewrite incurs a Raft consensus round. As a result, reads need to perform writes to move conflicting transactions out of their way. This is undesirable.

We could avoid this by having the pusher bump the timestamp cache using the transactionPushMarker. The pushee could then check this timestamp cache entry when committing, even when its record already exists. This is similar to how things behave today (since lazy_txn_record_creation.md), except we currently only check the transactionPushMarker when creating the txn record. After this change, we would do so when committing.

Jira issue: CRDB-23102

Epic CRDB-25218

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-kv-transactionsRelating to MVCC and the transactional model.C-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