From 7a7157f67e40d504993016930619557445130a91 Mon Sep 17 00:00:00 2001 From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Date: Thu, 16 Jan 2020 22:50:32 +0100 Subject: [PATCH] box: remove dead code from box_process_call/eval() box_process_call/eval() in the end check if there is an active transaction. If there is, it is rolled back, and an error is set. But rollback is not needed anymore, because anyway in the end of the request the fiber is stopped, and its not finished transaction is rolled back. Just setting of the error is enough. Follow-up #4662 (cherry picked from commit f5d514485e583fdac94b9f003cb9f0c6529e4350) --- src/box/call.c | 28 ++++------------------------ src/box/txn.c | 1 + 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/src/box/call.c b/src/box/call.c index 48b19f81ac..30976e4ea3 100644 --- a/src/box/call.c +++ b/src/box/call.c @@ -121,23 +121,13 @@ box_process_call(struct call_request *request, struct port *port) SC_FUNCTION, tt_cstr(name, name_len))) == 0) { rc = box_lua_call(name, name_len, &args, port); } - - struct txn *txn = in_txn(); - if (rc != 0) { - if (txn != NULL) - txn_rollback(txn); - fiber_gc(); + if (rc != 0) return -1; - } - - if (txn != NULL) { + if (in_txn() != NULL) { diag_set(ClientError, ER_FUNCTION_TX_ACTIVE); port_destroy(port); - txn_rollback(txn); - fiber_gc(); return -1; } - return 0; } @@ -153,21 +143,11 @@ box_process_eval(struct call_request *request, struct port *port) request->args_end - request->args); const char *expr = request->expr; uint32_t expr_len = mp_decode_strl(&expr); - struct txn *txn; - if (box_lua_eval(expr, expr_len, &args, port) != 0) { - txn = in_txn(); - if (txn != NULL) - txn_rollback(txn); - fiber_gc(); + if (box_lua_eval(expr, expr_len, &args, port) != 0) return -1; - } - - txn = in_txn(); - if (txn != NULL) { + if (in_txn() != 0) { diag_set(ClientError, ER_FUNCTION_TX_ACTIVE); port_destroy(port); - txn_rollback(txn); - fiber_gc(); return -1; } return 0; diff --git a/src/box/txn.c b/src/box/txn.c index c9b02a23f8..05b1195e48 100644 --- a/src/box/txn.c +++ b/src/box/txn.c @@ -852,6 +852,7 @@ txn_on_stop(struct trigger *trigger, void *event) (void) trigger; (void) event; txn_rollback(in_txn()); /* doesn't yield or fail */ + fiber_gc(); } /** -- GitLab