summaryrefslogtreecommitdiff
path: root/storage/xtradb/lock
diff options
context:
space:
mode:
authorsjaakola <seppo.jaakola@iki.fi>2016-06-08 15:19:01 +0300
committerNirbhay Choubey <nirbhay@mariadb.com>2016-08-21 16:20:09 -0400
commit415823a41cb7f302e9620f2b0fb57bcc69140d3f (patch)
tree7a6438004cd292bebe2e78de0749a2ea2ec5301c /storage/xtradb/lock
parentfec296cc10f0d1319e032b72e92e3c824b7fc390 (diff)
downloadmariadb-git-415823a41cb7f302e9620f2b0fb57bcc69140d3f.tar.gz
Refs: MW-279
- fixes in innodb to skip wsrep processing (like kill victim) when running in native mysql mode - similar fixes in mysql server side - forcing tc_log_dummy in native mysql mode when no binlog used. wsrep hton messes up handler counter and used to lead in using tc_log_mmap instead. Bad news is that tc_log_mmap does not seem to work at all
Diffstat (limited to 'storage/xtradb/lock')
-rw-r--r--storage/xtradb/lock/lock0lock.cc22
1 files changed, 15 insertions, 7 deletions
diff --git a/storage/xtradb/lock/lock0lock.cc b/storage/xtradb/lock/lock0lock.cc
index c9b9eea3808..b5b9f27e3aa 100644
--- a/storage/xtradb/lock/lock0lock.cc
+++ b/storage/xtradb/lock/lock0lock.cc
@@ -1695,6 +1695,10 @@ wsrep_kill_victim(
{
ut_ad(lock_mutex_own());
ut_ad(trx_mutex_own(lock->trx));
+
+ /* quit for native mysql */
+ if (!wsrep_on(trx->mysql_thd)) return;
+
my_bool bf_this = wsrep_thd_is_BF(trx->mysql_thd, FALSE);
my_bool bf_other = wsrep_thd_is_BF(lock->trx->mysql_thd, TRUE);
@@ -1781,9 +1785,11 @@ lock_rec_other_has_conflicting(
#ifdef WITH_WSREP
if (lock_rec_has_to_wait(TRUE, trx, mode, lock, is_supremum)) {
- trx_mutex_enter(lock->trx);
- wsrep_kill_victim((trx_t *)trx, (lock_t *)lock);
- trx_mutex_exit(lock->trx);
+ if (wsrep_on(trx->mysql_thd)) {
+ trx_mutex_enter(lock->trx);
+ wsrep_kill_victim(trx, lock);
+ trx_mutex_exit(lock->trx);
+ }
#else
if (lock_rec_has_to_wait(trx, mode, lock, is_supremum)) {
#endif /* WITH_WSREP */
@@ -2089,7 +2095,9 @@ lock_rec_create(
ut_ad(index->table->n_ref_count > 0 || !index->table->can_be_evicted);
#ifdef WITH_WSREP
- if (c_lock && wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
+ if (c_lock &&
+ wsrep_on(trx->mysql_thd) &&
+ wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
lock_t *hash = (lock_t *)c_lock->hash;
lock_t *prev = NULL;
@@ -4667,10 +4675,10 @@ lock_table_create(
trx_mutex_exit(c_lock->trx);
}
} else {
- UT_LIST_ADD_LAST(un_member.tab_lock.locks, table->locks, lock);
- }
-#else
+#endif /* WITH_WSREP */
UT_LIST_ADD_LAST(un_member.tab_lock.locks, table->locks, lock);
+#ifdef WITH_WSREP
+ }
#endif /* WITH_WSREP */
if (UNIV_UNLIKELY(type_mode & LOCK_WAIT)) {