mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge MDEV-4506: Parallel replication into 10.0-base.
This commit is contained in:
@@ -1253,6 +1253,8 @@ int ha_commit_trans(THD *thd, bool all)
|
||||
bool need_prepare_ordered, need_commit_ordered;
|
||||
my_xid xid;
|
||||
DBUG_ENTER("ha_commit_trans");
|
||||
DBUG_PRINT("info",("thd: %p option_bits: %lu all: %d",
|
||||
thd, (ulong) thd->variables.option_bits, all));
|
||||
|
||||
/* Just a random warning to test warnings pushed during autocommit. */
|
||||
DBUG_EXECUTE_IF("warn_during_ha_commit_trans",
|
||||
@@ -1312,6 +1314,8 @@ int ha_commit_trans(THD *thd, bool all)
|
||||
/* rw_trans is TRUE when we in a transaction changing data */
|
||||
bool rw_trans= is_real_trans && (rw_ha_count > 0);
|
||||
MDL_request mdl_request;
|
||||
DBUG_PRINT("info", ("is_real_trans: %d rw_trans: %d rw_ha_count: %d",
|
||||
is_real_trans, rw_trans, rw_ha_count));
|
||||
|
||||
if (rw_trans)
|
||||
{
|
||||
@@ -1460,8 +1464,11 @@ int ha_commit_one_phase(THD *thd, bool all)
|
||||
transaction.all.ha_list, see why in trans_register_ha()).
|
||||
*/
|
||||
bool is_real_trans=all || thd->transaction.all.ha_list == 0;
|
||||
int res;
|
||||
DBUG_ENTER("ha_commit_one_phase");
|
||||
int res= commit_one_phase_2(thd, all, trans, is_real_trans);
|
||||
if (is_real_trans && (res= thd->wait_for_prior_commit()))
|
||||
DBUG_RETURN(res);
|
||||
res= commit_one_phase_2(thd, all, trans, is_real_trans);
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
||||
@@ -1500,7 +1507,10 @@ commit_one_phase_2(THD *thd, bool all, THD_TRANS *trans, bool is_real_trans)
|
||||
}
|
||||
/* Free resources and perform other cleanup even for 'empty' transactions. */
|
||||
if (is_real_trans)
|
||||
{
|
||||
thd->wakeup_subsequent_commits(error);
|
||||
thd->transaction.cleanup();
|
||||
}
|
||||
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
@@ -1575,7 +1585,10 @@ int ha_rollback_trans(THD *thd, bool all)
|
||||
}
|
||||
/* Always cleanup. Even if nht==0. There may be savepoints. */
|
||||
if (is_real_trans)
|
||||
{
|
||||
thd->wakeup_subsequent_commits(error);
|
||||
thd->transaction.cleanup();
|
||||
}
|
||||
if (all)
|
||||
thd->transaction_rollback_request= FALSE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user