summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@skysql.com>2014-04-09 12:25:47 -0400
committerNirbhay Choubey <nirbhay@skysql.com>2014-04-09 12:25:47 -0400
commit9d911608f15005be48dad55440e87a6982067233 (patch)
tree34312354f96d6d796547f8934c9da4ba680bb7f7 /storage
parent421326310168e2b0a83eddcf9520336e1d58ea42 (diff)
downloadmariadb-git-9d911608f15005be48dad55440e87a6982067233.tar.gz
Fixes for some test failures.
Diffstat (limited to 'storage')
-rw-r--r--storage/innobase/handler/ha_innodb.cc7
-rw-r--r--storage/xtradb/handler/ha_innodb.cc5
2 files changed, 10 insertions, 2 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 3b704208bbc..b6913bd2e94 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -16998,6 +16998,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
lock_cancel_waiting_and_release(wait_lock);
}
+ wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
} else {
/* abort currently executing query */
@@ -17005,6 +17006,9 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
wsrep_thd_thread_id(thd)));
WSREP_DEBUG("kill query for: %ld",
wsrep_thd_thread_id(thd));
+ /* Note that innobase_kill_connection will take lock_mutex
+ and trx_mutex */
+ wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
/* for BF thd, we need to prevent him from committing */
@@ -17061,15 +17065,16 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
WSREP_DEBUG("signaling aborter");
mysql_cond_signal(&COND_wsrep_rollback);
mysql_mutex_unlock(&LOCK_wsrep_rollback);
+ wsrep_thd_UNLOCK(thd);
break;
}
default:
WSREP_WARN("bad wsrep query state: %d",
wsrep_thd_query_state(thd));
+ wsrep_thd_UNLOCK(thd);
break;
}
- wsrep_thd_UNLOCK(thd);
DBUG_RETURN(0);
}
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index e2c7b1158aa..d3d90ebeab9 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -17905,6 +17905,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
lock_cancel_waiting_and_release(wait_lock);
}
+ wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
} else {
/* abort currently executing query */
@@ -17914,6 +17915,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
wsrep_thd_thread_id(thd));
/* Note that innobase_kill_connection will take lock_mutex
and trx_mutex */
+ wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
/* for BF thd, we need to prevent him from committing */
@@ -17970,15 +17972,16 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
WSREP_DEBUG("signaling aborter");
mysql_cond_signal(&COND_wsrep_rollback);
mysql_mutex_unlock(&LOCK_wsrep_rollback);
+ wsrep_thd_UNLOCK(thd);
break;
}
default:
WSREP_WARN("bad wsrep query state: %d",
wsrep_thd_query_state(thd));
+ wsrep_thd_UNLOCK(thd);
break;
}
- wsrep_thd_UNLOCK(thd);
DBUG_RETURN(0);
}