diff --git a/server/modules/routing/readwritesplit/readwritesplit.c b/server/modules/routing/readwritesplit/readwritesplit.c index 6d0cc0c2c..6415c40a2 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.c +++ b/server/modules/routing/readwritesplit/readwritesplit.c @@ -293,8 +293,6 @@ static void *newSession(ROUTER *router_inst, SESSION *session) client_rses->router = router; client_rses->client_dcb = session->client_dcb; - client_rses->rses_autocommit_enabled = true; - client_rses->rses_transaction_active = false; client_rses->have_tmp_tables = false; client_rses->forced_node = NULL; spinlock_init(&client_rses->rses_lock); diff --git a/server/modules/routing/readwritesplit/readwritesplit.h b/server/modules/routing/readwritesplit/readwritesplit.h index 6c17e7ab1..d5da3abd3 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.h +++ b/server/modules/routing/readwritesplit/readwritesplit.h @@ -270,8 +270,6 @@ struct router_client_session rwsplit_config_t rses_config; /*< copied config info from router instance */ int rses_nbackends; int rses_nsescmd; /*< Number of executed session commands */ - bool rses_autocommit_enabled; - bool rses_transaction_active; bool rses_load_active; /*< If LOAD DATA LOCAL INFILE is being currently executed */ bool have_tmp_tables; uint64_t rses_load_data_sent; /*< How much data has been sent */ diff --git a/server/modules/routing/readwritesplit/rwsplit_mysql.c b/server/modules/routing/readwritesplit/rwsplit_mysql.c index 6f1b31410..c259fbdd1 100644 --- a/server/modules/routing/readwritesplit/rwsplit_mysql.c +++ b/server/modules/routing/readwritesplit/rwsplit_mysql.c @@ -167,9 +167,10 @@ log_transaction_status(ROUTER_CLIENT_SES *rses, GWBUF *querybuf, qc_query_type_t char *data = (char *)&packet[5]; char *contentstr = strndup(data, MXS_MIN(len, RWSPLIT_TRACE_MSG_LEN)); char *qtypestr = qc_typemask_to_string(qtype); + SESSION *ses = rses->client_dcb->session; MXS_INFO("> Autocommit: %s, trx is %s, cmd: %s, type: %s, stmt: %s%s %s", - (rses->rses_autocommit_enabled ? "[enabled]" : "[disabled]"), - (rses->rses_transaction_active ? "[open]" : "[not open]"), + (session_is_autocommit(ses) ? "[enabled]" : "[disabled]"), + (session_trx_is_active(ses) ? "[open]" : "[not open]"), STRPACKETTYPE(ptype), (qtypestr == NULL ? "N/A" : qtypestr), contentstr, (querybuf->hint == NULL ? "" : ", Hint:"), (querybuf->hint == NULL ? "" : STRHINTTYPE(querybuf->hint->type))); diff --git a/server/modules/routing/readwritesplit/rwsplit_route_stmt.c b/server/modules/routing/readwritesplit/rwsplit_route_stmt.c index 9457e5f6c..b5e7fc0bf 100644 --- a/server/modules/routing/readwritesplit/rwsplit_route_stmt.c +++ b/server/modules/routing/readwritesplit/rwsplit_route_stmt.c @@ -78,41 +78,6 @@ bool route_single_stmt(ROUTER_INSTANCE *inst, ROUTER_CLIENT_SES *rses, } handle_multi_temp_and_load(rses, querybuf, packet_type, (int *)&qtype); rses_end_locked_router_action(rses); - /** - * If autocommit is disabled or transaction is explicitly started - * transaction becomes active and master gets all statements until - * transaction is committed and autocommit is enabled again. - */ - if (rses->rses_autocommit_enabled && - qc_query_is_type(qtype, QUERY_TYPE_DISABLE_AUTOCOMMIT)) - { - rses->rses_autocommit_enabled = false; - - if (!rses->rses_transaction_active) - { - rses->rses_transaction_active = true; - } - } - else if (!rses->rses_transaction_active && - qc_query_is_type(qtype, QUERY_TYPE_BEGIN_TRX)) - { - rses->rses_transaction_active = true; - } - /** - * Explicit COMMIT and ROLLBACK, implicit COMMIT. - */ - if (rses->rses_autocommit_enabled && rses->rses_transaction_active && - (qc_query_is_type(qtype, QUERY_TYPE_COMMIT) || - qc_query_is_type(qtype, QUERY_TYPE_ROLLBACK))) - { - rses->rses_transaction_active = false; - } - else if (!rses->rses_autocommit_enabled && - qc_query_is_type(qtype, QUERY_TYPE_ENABLE_AUTOCOMMIT)) - { - rses->rses_autocommit_enabled = true; - rses->rses_transaction_active = false; - } if (MXS_LOG_PRIORITY_IS_ENABLED(LOG_INFO)) { @@ -721,7 +686,7 @@ return_succp: route_target_t get_route_target(ROUTER_CLIENT_SES *rses, qc_query_type_t qtype, HINT *hint) { - bool trx_active = rses->rses_transaction_active; + bool trx_active = session_trx_is_active(rses->client_dcb->session); bool load_active = rses->rses_load_active; target_t use_sql_variables_in = rses->rses_config.rw_use_sql_variables_in; route_target_t target = TARGET_UNDEFINED;