BUG#42383 2009-01-28 lsoares
"This fails in embedded and on windows. Note that this test is not run
on windows and on embedded in PB for main trees currently"
- Make a rough filtering of the servers error log and write
all suspicious warnings to $error_log.warnings
The .warnings file is then examined more carefully by check_warnings.test
- This will speed things up, doing all of this in a server running
under valgrind takes far too long time.
- Add a "skip-ssl=1" to [mysqltest] section so that
mysqltest will not run with ssl turned on by default
but stil be able to turn it on when requested
- This avoids that check_warnings and check_testcase
connects to the server woth SSL turned on
The test fails with timeout when applying diff on two tables.
In this test case, there can be a situation when the slave is not yet synced
with the master, thence the changes may not be on the slave at diff time.
This patch addresses this issue by synchronizing master and slave before the
diff takes place.
- rewrite "check warnings" to be faster by not creating a full join
between error_log and suspicious_patterns while running REGEXP.
Instead add a column to error_log that will be set to 1 to indicate
a warning and run the 6 REGEXP's we have for suspicious lines as
6 separate full table scans.
- Remove the "suspicious_patterns" table from mtr db
- Use 'xykls37' as separator when loading the error log, that line should
hopefully never exist in a line that should be a warning
- Clear test variables "comment" and "logfile" to make sure thay aren't
already set from previous run of same test
- Print warning if test result already set and set it anyway
- Rewrite "check testcase" to use LOAD DATA INFILE instead of 'load_file'
in order to speed up the reading of the servers error log.
mysql-test/include/check-warnings.test:
Use LOAD DATA to load the servers error log into error_log table and then
call 'check_warning' stored procedure to filter out any unexpected warnings
conflicts:
Text conflict in client/mysqltest.cc
Text conflict in mysql-test/include/wait_until_connected_again.inc
Text conflict in mysql-test/lib/mtr_report.pm
Text conflict in mysql-test/mysql-test-run.pl
Text conflict in mysql-test/r/events_bugs.result
Text conflict in mysql-test/r/log_state.result
Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
Text conflict in mysql-test/r/mysqlcheck.result
Text conflict in mysql-test/r/query_cache.result
Text conflict in mysql-test/r/status.result
Text conflict in mysql-test/suite/binlog/r/binlog_index.result
Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
Text conflict in mysql-test/t/disabled.def
Text conflict in mysql-test/t/events_bugs.test
Text conflict in mysql-test/t/log_state.test
Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
Text conflict in mysql-test/t/mysqlcheck.test
Text conflict in mysql-test/t/query_cache.test
Text conflict in mysql-test/t/rpl_init_slave_func.test
Text conflict in mysql-test/t/status.test
The original goal of the test, as reported on BUG #25721, is to check whether
a deadlock happens or not when concurrently CREATING/ALTERING/DROPPING the
same server. For that a procedure (p1) is created that runs the exact same
CREATE/ALTER/DROP statements for 10K iterations and two different connections
(threads - t1 and t2) call p1 concurrently. At the end of the 10K iterations,
the test checks if there was errors while running the loop (SELECT e >0).
The problem is that In some cases it may happen that one thread, t1, gets
scheduled to execute with just enough time to complete the iteration and
never bumps into the other thread t2. Meaning that t1 will never run into an
SQL exception. On the other hand, the other thread, t2, may run into t1 and
never issue any/part of its own statements because it will throw an SQLEXCEPTION.
This is probably the case for failures where only one value differs.
Furthermore, there is a third scenario: both threads are scheduled to run
interleaved for each iteration (or even one thread completes all iterations
before the other starts). In this case, both will succeed without any error.
This is probably the case for the failure that reports two different values.
This patch addresses the failure in pushbuild by removing the error counting
and the printout (SELECT > 0) at the end of the test. A timeout should occur
if the error that the test is checking surfaces.
- Additional patch with improved protection by putting it all inside an "eval"
- Calling 'hostpath' on a truncated socket may also croak.
- Remove the need to create any directory parts of "path" inside the function.
- Fix problem with for example ./mtr --timer, caused by new version of "Getopt::Long"
- Evaluating the "$opt" variable as a string, returns the name of the parameter
to be modified instead of "Getopt::Long::Callback" which is the class name
In mtr.check_warnings, `text` was declares as type text, which is
64K, and when the server log grows larger than this, it would be
truncated, and then check_warnings was actually checking the
error messages of a previous test and complain warnings.
This patch fixed the problem by change the type of `text` to
mediumtext, which is 16M.
mysql-test/include/mtr_warnings.sql:
change the type of `text` to mediumtext
SIGABRT is sent to relevant processes after a timeout
client/mysqltest.cc:
Fixed signal handlers to mysqltest actually dumps core
mysql-test/lib/My/CoreDump.pm:
Added support for dbx
mysql-test/lib/My/SafeProcess.pm:
Added dump_core to force process to dump core
mysql-test/lib/My/SafeProcess/safe_process.cc:
Traps SIGABRT and sends this on to child
mysql-test/mysql-test-run.pl:
When test times out, force core dumps on mysqltest and servers
Log output of mysqltest when running check-testcase together
with errput. Remove --silent option for mysqltest when running
check-testcase/check-warnings
mysql-test/mysql-test-run.pl:
Log output of mysqltest when runinng check-testcase together with errput.
Remove --silent option for mysqltest when running check-testcase/check-warnings
This does not bring any contents changes, it is purely
metadata which are affected.
Details:
Even within 5.0, most of these changesets did not cause
file contents changes, because they were backports done
for the "service pack" builds of 5.0.66sp1 and 5.0.72sp1.
The "real" changesets are also already present in 5.1,
so this upmerge doesn't change any contents.
The only "real" changeset in 5.0 was a fix of the shell
scripts used to configure bdb (BerkeleyDB).
As we completele removed bdb from the 5.1 sources already,
the affected files are not present in the 5.1 source tree,
so this changeset also does not cause any contents changes.