moved releasing of wsrep THD mutex and thd->awake later, so that wsrep->abort_pre_commit()
is guaranteed to run for a thread which is still in conflict state
This commit is contained in:
Seppo Jaakola 2014-03-20 16:03:20 +02:00
parent 8a99be643c
commit 7b57c5ea6f
2 changed files with 4 additions and 2 deletions

0
BUILD/compile-amd64-debug-wsrep Normal file → Executable file
View file

View file

@ -16771,8 +16771,6 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
WSREP_DEBUG("kill query for: %ld",
wsrep_thd_thread_id(thd));
wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
WSREP_DEBUG("kill trx QUERY_COMMITTING for %llu",
victim_trx->id);
@ -16789,6 +16787,8 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
case WSREP_WARNING:
WSREP_DEBUG("cancel commit warning: %llu",
victim_trx->id);
wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
DBUG_RETURN(1);
break;
case WSREP_OK:
@ -16806,6 +16806,8 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
break;
}
}
wsrep_thd_UNLOCK(thd);
wsrep_thd_awake(thd, signal);
break;
case QUERY_EXEC:
/* it is possible that victim trx is itself waiting for some