Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL), 10.3(EOL), 10.4(EOL), 10.5
Description
Testing a fix of MDEV-15326 revealed that if the call to trx->lock.table_locks.clear(); is skipped at transaction commit when trx->lock.trx_locks is empty, occasionally a transaction would be left with nonempty trx->lock.table_locks list. This proves that the table_locks is not a subset of trx_locks, like it is expected to be.
We will need a test case for this, so that the bug can be found and fixed. To repeat the assertion failures, revert the following part of the MDEV-15326 fix:
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
|
index 1dcca7c1f72..b06e15d4f37 100644
|
--- a/storage/innobase/trx/trx0trx.cc
|
+++ b/storage/innobase/trx/trx0trx.cc
|
@@ -561,8 +561,6 @@ inline void trx_t::release_locks()
|
|
if (UT_LIST_GET_LEN(lock.trx_locks))
|
lock_trx_release_locks(this);
|
- else
|
- lock.table_locks.clear(); /* Work around MDEV-20483 */
|
}
|
|
/********************************************************************//** |
This should lead to occasional assertion failures on trx->lock.table_locks.empty() on transaction commit.
Attachments
Issue Links
- relates to
-
MDEV-13426 Assertion failure ib_vector_is_empty at trx0trx.cc line 1078
-
- Closed
-
-
MDEV-15326 InnoDB: Failing assertion: !other_lock || wsrep_thd_is_BF(lock->trx->mysql_thd, FALSE) || wsrep_thd_is_BF(other_lock->trx->mysql_thd, FALSE)
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue relates to |
Description |
Testing a fix of We will need a test case for this, so that the bug can be found and fixed. |
Testing a fix of We will need a test case for this, so that the bug can be found and fixed. To repeat the assertion failures, revert the following part of the {code:diff} diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index 1dcca7c1f72..b06e15d4f37 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -561,8 +561,6 @@ inline void trx_t::release_locks() if (UT_LIST_GET_LEN(lock.trx_locks)) lock_trx_release_locks(this); - else - lock.table_locks.clear(); /* Work around } /********************************************************************//** {code} This should lead to occasional assertion failures on {{trx->lock.table_locks.empty()}} on transaction commit. |
Attachment | MDEV-20483-B.test [ 48890 ] |
Attachment | MDEV-20483-C.test [ 48891 ] |
Assignee | Matthias Leich [ mleich ] | Thirunarayanan Balathandayuthapani [ thiru ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Status | In Progress [ 3 ] | Stalled [ 10000 ] |
Assignee | Thirunarayanan Balathandayuthapani [ thiru ] | Matthias Leich [ mleich ] |
Assignee | Matthias Leich [ mleich ] | Thirunarayanan Balathandayuthapani [ thiru ] |
Assignee | Thirunarayanan Balathandayuthapani [ thiru ] | Marko Mäkelä [ marko ] |
Status | Stalled [ 10000 ] | In Review [ 10002 ] |
Assignee | Marko Mäkelä [ marko ] | Thirunarayanan Balathandayuthapani [ thiru ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Fix Version/s | 10.2.28 [ 23910 ] | |
Fix Version/s | 10.3.19 [ 23908 ] | |
Fix Version/s | 10.4.9 [ 23906 ] | |
Fix Version/s | 10.2 [ 14601 ] | |
Fix Version/s | 10.3 [ 22126 ] | |
Fix Version/s | 10.4 [ 22408 ] | |
Fix Version/s | 10.5 [ 23123 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Link |
This issue relates to |
Workflow | MariaDB v3 [ 99386 ] | MariaDB v4 [ 156694 ] |
Assertion `(trx)->lock.table_locks.empty()' failed