[MDEV-15284] innodb_gis.rtree_concurrent_srch fails with COUNT(*) mismatch Created: 2018-02-11 Updated: 2023-04-27 |
|
| Status: | Confirmed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Tests |
| Affects Version/s: | 10.2, 10.3 |
| Fix Version/s: | 10.4 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Thirunarayanan Balathandayuthapani |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | race, upstream | ||
| Attachments: |
|
||||||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||||||
| Description |
|
|
| Comments |
| Comment by Marko Mäkelä [ 2018-02-19 ] | |||||||||||||||||||
|
The test is executing the SELECT concurrently with ROLLBACK. In
| |||||||||||||||||||
| Comment by Marko Mäkelä [ 2018-02-21 ] | |||||||||||||||||||
|
The same problem affects also CHECK TABLE, which is counting the records in each index, using a read view.
This test would start a large transaction, then kill and restart the server, and execute CHECK TABLE.
As far as I understand, the COMMIT might not be durable at the time the server is killed (timeout 0 causes kill), because there is no SET GLOBAL innodb_flush_log_at_trx_commit=1 in the test. So, on the subsequent startup, we might actually initiate a rollback of the incomplete transaction, which would run in parallel with the CHECK TABLE. But then again, all 367 records were counted in the clustered index, which would hint that the transaction had been committed. | |||||||||||||||||||
| Comment by Marko Mäkelä [ 2018-02-21 ] | |||||||||||||||||||
|
See also | |||||||||||||||||||
| Comment by Marko Mäkelä [ 2018-03-14 ] | |||||||||||||||||||
|
I tried to refactor the way how transactional locks are created on spatial indexes. The attached 0001-Clean-up-SPATIAL-INDEX-lock-creation.patch |