[MDEV-13568] gcol.innodb_virtual_debug_purge failed in buildbot with wrong result Created: 2017-08-17 Updated: 2018-01-03 Resolved: 2018-01-03 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Tests, Virtual Columns |
| Affects Version/s: | 10.2, 10.3 |
| Fix Version/s: | 10.2.12, 10.3.4 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
http://buildbot.askmonty.org/buildbot/builders/kvm-fulltest2/builds/9134/steps/test_2/logs/stdio
|
| Comments |
| Comment by Alice Sherepa [ 2017-08-25 ] | ||||||||||||||||||||||||||||||||||
|
the same in 10.3 http://buildbot.askmonty.org/buildbot/builders/kvm-fulltest2/builds/9336/steps/test_3/logs/stdio | ||||||||||||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2017-10-25 ] | ||||||||||||||||||||||||||||||||||
|
I debugged this a little. But there is more to it. I tried the following experimental change to the test:
I was expecting the wait_all_purged.inc to time out, to report that 1 transaction was not purged. But instead, it reported that everything was purged:
The intention of the test seems to be to demonstrate that the LOCK TABLES is preventing purge from evaluating the INDEX(c(100)):
(The connection prevent_purge was introduced in an earlier cleanup by me.) For what it is worth, I do not see an obvious problem if purge is ignoring the LOCK TABLE. It would only be consistent with the existing behaviour that purge is only removing history that cannot be observed, and by definition, cannot be locked by active transactions. | ||||||||||||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2017-10-25 ] | ||||||||||||||||||||||||||||||||||
|
serg, if you believe that the LOCK TABLE can safely be disregarded by the InnoDB purge, then we could close this by patching the test as shown in my previous comment. | ||||||||||||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2017-10-31 ] | ||||||||||||||||||||||||||||||||||
|
serg, the only locking guarantee that InnoDB purge needs is that the table definition cannot be moved or removed (by DROP TABLE, RENAME TABLE, ALTER TABLE or similar) while the single undo log record is being processed. If we can guarantee this, I do not see a reason to have LOCK TABLES block the purge. Purge normally disregards any InnoDB transactional locks. For exporting tables, there is a special command (FLUSH TABLES FOR EXPORT) that guarantees that purge will be inactive. | ||||||||||||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2017-12-22 ] | ||||||||||||||||||||||||||||||||||
|
serg, I cannot think of any valid purpose that the
might be serving. Adding the wait_all_purged.inc should be both necessary and sufficient. If we expect foo>0 to return 0, we might as well remove the >0 so that in case of failure, we will get a more accurate failure result (some actual number instead of the comparison result 1). | ||||||||||||||||||||||||||||||||||
| Comment by Marko Mäkelä [ 2018-01-03 ] | ||||||||||||||||||||||||||||||||||
|
I revised the test. The MariaDB behaviour is more consistent than the one in MySQL 5.7: |