diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-09-04 17:52:04 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-09-04 17:52:04 +0300 |
commit | 537f8594a60a1e09d6da0933b55764e0f8abbf5c (patch) | |
tree | 628c68bccb01538df826045ba6f3aaa45c29b93a /storage/innobase/trx/trx0roll.cc | |
parent | 647d5b243020b799fd7112a801965f5780b86349 (diff) | |
parent | f605ce08b5c0e6ed6907d0639bcc5b5630e9b40a (diff) | |
download | mariadb-git-537f8594a60a1e09d6da0933b55764e0f8abbf5c.tar.gz |
Merge 10.2 into 10.3
Diffstat (limited to 'storage/innobase/trx/trx0roll.cc')
-rw-r--r-- | storage/innobase/trx/trx0roll.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc index 65aa454808f..709ec98259c 100644 --- a/storage/innobase/trx/trx0roll.cc +++ b/storage/innobase/trx/trx0roll.cc @@ -764,6 +764,10 @@ static my_bool trx_rollback_recovered_callback(rw_trx_hash_element_t *element, mutex_enter(&element->mutex); if (trx_t *trx= element->trx) { + /* The trx->is_recovered flag and trx->state are set + atomically under the protection of the trx->mutex in + trx_t::commit_state(). We do not want to accidentally clean up + a non-recovered transaction here. */ mutex_enter(&trx->mutex); if (trx->is_recovered && trx_state_eq(trx, TRX_STATE_ACTIVE)) trx_list->push_back(trx); |