From c329e7031be79505d67425f7c9c5b464c0a6ce8f Mon Sep 17 00:00:00 2001 From: Georgiy Lebedev <g.lebedev@tarantool.org> Date: Tue, 17 Jan 2023 16:42:25 +0300 Subject: [PATCH] box: reset transaction's PSN if transaction preparation fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, if transaction preparation fails, the transaction is left in an inconsistent state: it has a PSN assigned to it, but its status is not 'prepared' — fix this by resetting its PSN. Needed for #7930 NO_CHANGELOG=refactoring NO_DOC=refactoring NO_TEST=refactoring --- src/box/txn.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/box/txn.c b/src/box/txn.c index 75dacff390..daf6264fca 100644 --- a/src/box/txn.c +++ b/src/box/txn.c @@ -988,8 +988,10 @@ txn_prepare(struct txn *txn) * we have a bunch of IPROTO_NOP statements. */ if (txn->engine != NULL) { - if (engine_prepare(txn->engine, txn) != 0) + if (engine_prepare(txn->engine, txn) != 0) { + txn->psn = 0; return -1; + } } trigger_clear(&txn->fiber_on_stop); -- GitLab