[Tarantool-patches] [PATCH 2/3] txn: split complete into success and fail paths
Cyrill Gorcunov
gorcunov at gmail.com
Mon Nov 2 15:15:06 MSK 2020
On Sat, Oct 31, 2020 at 07:01:41PM +0100, Vladislav Shpilevoy wrote:
> txn_complete used to handle all the transaction outcomes:
> - manual rollback;
> - error at WAL write;
> - successful WAL write and commit;
> - successful WAL write and wait for synchronization with replicas.
Looks ok to me. Ack.
Here is a diff on top of the patch I would add, but up to you, feel free to ignore.
---
src/box/txn.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: tarantool.git/src/box/txn.c
===================================================================
--- tarantool.git.orig/src/box/txn.c
+++ tarantool.git/src/box/txn.c
@@ -533,7 +533,7 @@ txn_complete_fail(struct txn *txn)
stailq_reverse(&txn->stmts);
stailq_foreach_entry(stmt, &txn->stmts, next)
txn_rollback_one_stmt(txn, stmt);
- if (txn->engine)
+ if (txn->engine != NULL)
engine_rollback(txn->engine, txn);
if (txn_has_flag(txn, TXN_HAS_TRIGGERS))
txn_run_rollback_triggers(txn, &txn->on_rollback);
@@ -544,12 +544,12 @@ void
txn_complete_success(struct txn *txn)
{
double stop_tm = ev_monotonic_now(loop());
- if (stop_tm - txn->start_tm > too_long_threshold) {
+ double delta = stop_tm - txn->start_tm;
+ if (delta > too_long_threshold) {
int n_rows = txn->n_new_rows + txn->n_applier_rows;
say_warn_ratelimited("too long WAL write: %d rows at LSN %lld: "
"%.3f sec", n_rows,
- txn->signature - n_rows + 1,
- stop_tm - txn->start_tm);
+ txn->signature - n_rows + 1, delta);
}
assert(!txn_has_flag(txn, TXN_IS_DONE));
assert(!txn_has_flag(txn, TXN_WAIT_SYNC));
More information about the Tarantool-patches
mailing list