[Tarantool-patches] [PATCH 09/16] tx: introduce prepare sequence number
Aleksandr Lyapunov
alyapunov at tarantool.org
Wed Jul 8 18:14:16 MSK 2020
---
src/box/txn.c | 4 ++++
src/box/txn.h | 5 +++++
2 files changed, 9 insertions(+)
diff --git a/src/box/txn.c b/src/box/txn.c
index 0ba86cb..5964ca7 100644
--- a/src/box/txn.c
+++ b/src/box/txn.c
@@ -39,6 +39,8 @@
struct tx_manager
{
+ /** Last prepare-sequence-number that was assigned to preped TX. */
+ int64_t last_psn;
};
static struct tx_manager txm;
@@ -564,6 +566,8 @@ txn_journal_entry_new(struct txn *txn)
static int
txn_prepare(struct txn *txn)
{
+ txn->psn = ++txm.last_psn;
+
if (txn_has_flag(txn, TXN_IS_ABORTED_BY_YIELD)) {
assert(!txn_has_flag(txn, TXN_CAN_YIELD));
diag_set(ClientError, ER_TRANSACTION_YIELD);
diff --git a/src/box/txn.h b/src/box/txn.h
index e2194b6..cd1665f 100644
--- a/src/box/txn.h
+++ b/src/box/txn.h
@@ -214,6 +214,11 @@ struct txn {
* Valid IDs start from 1.
*/
int64_t id;
+ /**
+ * A sequential ID that is assigned when the TX become prepared.
+ * Transactions are committed on in that order.
+ */
+ int64_t psn;
/** Status of the TX */
enum txn_status status;
/** List of statements in a transaction. */
--
2.7.4
More information about the Tarantool-patches
mailing list