check_warnings_post_shutdown ignores per-test suppressions
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
New
|
Wishlist
|
Unassigned |
Bug Description
The test main.innodb_
The test runner runs this test, and it passes (call mtr.check_warnings skips the expected warning).
Then, sub check_warnings_
=======
TEST RESULT TIME (ms)
-------
worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.innodb_
Yoyoyoyo
***Warnings generated in error logs during shutdown after running tests: main.innodb_bug39
438
100129 14:58:42 InnoDB: Error: table 'test/bug39438' <-- this was supposed to be suppressed.
-------
The servers were restarted 0 times
Spent 0.187 of 16 seconds executing testcases
All 1 tests were successful.
Errors/warnings were found in logfiles during server shutdown after running the
following sequence(s) of tests:
main.
mysql-test-run: *** ERROR: There where errors/warnings in server logs after running test c
ases.
=======
Note: mtr.add_suppression is doing its job correctly, but the _post_shutdown routine completely ignores such suppressions, only using the extract_
Changed in maria: | |
importance: | Undecided → Low |
importance: | Low → Wishlist |
I agree that this is a problem. Checking for (and suppressing) warnings inside the mysqld being tested is broken design, as it does not work to test the server during shutdown.
One way to fix this is to change mtr.add_ suppression( ) to write the added suppressions to a CSV type table. Then the underlying .csv file could be read by the mysql-test-run.pl script and all warning checks could take place there.
A possibly better option would be to change the mtr.add_ suppression( ) into a native mysqltest command, which would be more robust and could write suppressions into a file for mysql-test-run.pl to inspect.
Until this is implemented, possible work-arounds include: with_master at end of test script or similar).
1. Delay test case end until expected warnings hit the log (eg. sync_slave_
2. If 1 is not possible, add a global suppression in mysql-test-run.pl, possibly changing table names etc. to be more unique (to avoid accidentally suppressing real warnings)