From 3be6d967c5d04fa6dbeab1c25f28673d3abf8433 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Sat, 18 Oct 2008 20:36:34 +0200 Subject: [PATCH] BUG#39851: race between check_testcase and tests running 'show processlist' Problem 1: not_embedded_server runs SELECT FROM I_S.PROCESSLIST near the beginning. check_testcase executes a query to the server before that. There is a race here, because there is no guarantee that the thread executing check_testcase's query is finished. Problem 2: The SELECT FROM I_S.PROCESSLIST doens't seem very useful in the test. It's at least misplaced. Fix to both problems: Comment out SELECT FROM I_S.PROCESSLIST. mysql-test/t/not_embedded_server.test: Commented out failing / useless test. --- mysql-test/r/not_embedded_server.result | 5 ---- mysql-test/t/not_embedded_server.test | 40 ++++++++++++++++--------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/mysql-test/r/not_embedded_server.result b/mysql-test/r/not_embedded_server.result index 89f48a1ea56..4373d6356d9 100644 --- a/mysql-test/r/not_embedded_server.result +++ b/mysql-test/r/not_embedded_server.result @@ -1,7 +1,2 @@ -prepare stmt1 from ' SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!=\'Daemon\' '; -execute stmt1; -ID USER HOST DB COMMAND TIME STATE INFO -number root localhost test Query time executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!='Daemon' -deallocate prepare stmt1; FLUSH STATUS; Value of com_select did not change diff --git a/mysql-test/t/not_embedded_server.test b/mysql-test/t/not_embedded_server.test index fe6b8825a87..562194a62a4 100644 --- a/mysql-test/t/not_embedded_server.test +++ b/mysql-test/t/not_embedded_server.test @@ -4,21 +4,33 @@ -- source include/not_embedded.inc -# -# Show full process list with prepare -# To not show other connections, this must be the first test and we must -# have a server restart before this one -# -# We don't have any 4.1 tests as we use I_S to query the PROCESSLIST to -# exclude system threads that may/may not be active in the server -# (namely the ndb injector thread) -# -# End of 4.1 tests -prepare stmt1 from ' SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!=\'Daemon\' '; ---replace_column 1 number 6 time 3 localhost -execute stmt1; -deallocate prepare stmt1; +# The following fails sporadically because 'check-testcase' runs +# queries before this test and there is no way to guarantee that any +# previous process finishes. The purpose of the test is not clearly +# stated, there is no reference to any bug report, and "select from +# I_S from prepared statement" doesn't look like something that's +# really imporant to test. I'm commenting out this for now. If +# anyone wants to keep this, please fix the race and motivate why we +# need to test this. If you see this comment and it is after mid-2009 +# or so, feel free to remove this test from the file. /Sven +# +# +## Show full process list with prepare +## To not show other connections, this must be the first test and we must +## have a server restart before this one +## +## We don't have any 4.1 tests as we use I_S to query the PROCESSLIST to +## exclude system threads that may/may not be active in the server +## (namely the ndb injector thread) +## +## End of 4.1 tests +# +#prepare stmt1 from ' SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!=\'Daemon\' '; +#--replace_column 1 number 6 time 3 localhost +#execute stmt1; +#deallocate prepare stmt1; + #