Bug #43015 main.lock_multi: Weak code (sleeps etc.)
Submitted: 19 Feb 2009 11:41 Modified: 13 Apr 2009 15:19
Reporter: Matthias Leich Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:5.0 OS:Any
Assigned to: Matthias Leich CPU Architecture:Any
Tags: sporadic failures

[19 Feb 2009 11:41] Matthias Leich
Description:
Observations in main.lock_multi based
on mysql-5.0-bugteam:
--------------------------------------
1. grep -n sleep t/lock_multi.test
   19:--sleep 2
   22:--sleep 2
   37:--sleep 2
   ...
   243:--sleep 2

   Some sleeps last 1 second which is known to be
   too short on overloaded testing boxes.

   The sleeps are used because there is in the moment
   no poll routine which is able to process the result
   set of a SHOW PROCESSLIST. But this could be
   implemented.
   The 5.1 version of this test uses poll routines
   based on 
     SELECT ... FROM information_schema.PROCESSLIST

2. line 38
   send select n from t1;
   whereas the corresponding code piece within
   the MySQL version 5.1 does not use sleep
   I guess the 5.1 version is improved.

3. Based on my current experiences with tests using
   multiple sessions I must say that I fear this test
   tends to random errors and needs a critical revision.

I would not say this bug is a duplicate of
   Bug#31760 "lock_multi" test failed randomly
but a fix for the current bug removes most probably
the reason for Bug#31760 and several non reported
test failures which already occured or may show up
in future.

How to repeat:
Just have a look into the code in MySQL 5.0.

Suggested fix:
- Replace all sleeps with poll routines
- Check all multi session scenarios if
  a poll routine or send/reap or similar
  is missing + fix
[19 Feb 2009 11:43] Matthias Leich
I already have a poll routine which could be used
for a SHOW PROCESSLIST result set. It will be
pushed within this bug fix.
[10 Mar 2009 20:59] Matthias Leich
The fix for
   Bug#42003 tests missing the disconnect of connections
             <> default
   Patch is pushed to bugteam trees 2009-03-10
removed a lot of the sleeps in t/lock_multi.test.
The 5.1 and 6.0 version of this test does no more
contain sleeps of several seconds.
I detected during the merge 5.0 - 5.1 - 6.0 of this fix
that the 5.0 version of this test contains most probably
more sleeps than most probably needed.
So the fix for the current bug shrinks to
- backport improvements existing in 5.1
- check the remaining sleeps
in 5.0.
[17 Mar 2009 14:22] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/69426

2773 Matthias Leich	2009-03-16
      Fix for Bug#43015 and Bug#43065
      
      Details for Bug#43015 main.lock_multi: Weak code (sleeps etc.)
      -------------------------------------------------------------
      - The fix for bug 42003 already removed a lot of the weaknesses mentioned.
      - Tests showed that there are unfortunately no improvements of this tests
        in MySQL 5.1 which could be ported back to 5.0.
      - Remove a superfluous "--sleep 1" around line 195
      
      Details for Bug#43065 main.lock_multi: This test is too big if the disk is slow
      -------------------------------------------------------------------------------
      - move the subtests for the bugs 38499 and 36691 into separate scripts
      - runtime under excessive parallel I/O load after applying the fix
        lock_multi           [ pass ]          22887
        lock_multi_bug38499  [ pass ]         536926
        lock_multi_bug38691  [ pass ]         258498
[23 Mar 2009 13:57] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/70058

2741 Matthias Leich	2009-03-23
      Fix for Bug#43015 and Bug#43065
      
      Details for Bug#43015 main.lock_multi: Weak code (sleeps etc.)
      -------------------------------------------------------------
      - The fix for bug 42003 already removed a lot of the weaknesses mentioned.
      - Tests showed that there are unfortunately no improvements of this tests
        in MySQL 5.1 which could be ported back to 5.0.
      - Remove a superfluous "--sleep 1" around line 195
      
      Details for Bug#43065 main.lock_multi: This test is too big if the disk is slow
      -------------------------------------------------------------------------------
      - move the subtests for the bugs 38499 and 36691 into separate scripts
      - runtime under excessive parallel I/O load after applying the fix
        lock_multi           [ pass ]          22887
        lock_multi_bug38499  [ pass ]         536926
        lock_multi_bug38691  [ pass ]         258498
[23 Mar 2009 14:21] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/70066

2741 Matthias Leich	2009-03-23
      Fix for Bug#43015 and Bug#43065
      
         Details for Bug#43015 main.lock_multi: Weak code (sleeps etc.)
         -------------------------------------------------------------
         - The fix for bug 42003 already removed a lot of the weaknesses mentioned.
         - Tests showed that there are unfortunately no improvements of this tests
           in MySQL 5.1 which could be ported back to 5.0.
         - Remove a superfluous "--sleep 1" around line 195
      
         Details for Bug#43065 main.lock_multi: This test is too big if the disk is slow
         -------------------------------------------------------------------------------
         - move the subtests for the bugs 38499 and 36691 into separate scripts
         - runtime under excessive parallel I/O load after applying the fix
           lock_multi           [ pass ]          22887
           lock_multi_bug38499  [ pass ]         536926
           lock_multi_bug38691  [ pass ]         258498
[24 Mar 2009 13:31] Matthias Leich
Pushed to
mysql-bugteam-6.0
mysql-bugteam-5.1
mysql-bugteam-5.0
[27 Mar 2009 14:31] Bugs System
Pushed into 5.0.80 (revid:joro@sun.com-20090327142516-55gumdxj39z6eijj) (version source revid:leonard@mysql.com-20090324072904-7w2lxdxzw8hx1rnm) (merge vers: 5.0.80) (pib:6)
[27 Mar 2009 14:56] Bugs System
Pushed into 5.1.34 (revid:joro@sun.com-20090327143448-wuuuycetc562ty6o) (version source revid:matthias.leich@sun.com-20090323160848-a4gtbtwqnl7bdx2e) (merge vers: 5.1.34) (pib:6)
[27 Mar 2009 15:19] Paul DuBois
Test case changes. No changelog entry needed.

Setting report to NDI pending push into 6.0.x.
[13 Apr 2009 9:21] Bugs System
Pushed into 6.0.11-alpha (revid:alik@sun.com-20090413084402-snnrocwzktcl88ny) (version source revid:matthias.leich@sun.com-20090323185831-13boe36lf6c7pagg) (merge vers: 6.0.11-alpha) (pib:6)
[13 Apr 2009 15:19] Paul DuBois
Test case changes. No changelog entry needed.
[9 May 2009 16:46] Bugs System
Pushed into 5.1.34-ndb-6.2.18 (revid:jonas@mysql.com-20090508185236-p9b3as7qyauybefl) (version source revid:jonas@mysql.com-20090508185236-p9b3as7qyauybefl) (merge vers: 5.1.34-ndb-6.2.18) (pib:6)
[9 May 2009 17:43] Bugs System
Pushed into 5.1.34-ndb-6.3.25 (revid:jonas@mysql.com-20090509063138-1u3q3v09wnn2txyt) (version source revid:jonas@mysql.com-20090509063138-1u3q3v09wnn2txyt) (merge vers: 5.1.34-ndb-6.3.25) (pib:6)
[9 May 2009 18:40] Bugs System
Pushed into 5.1.34-ndb-7.0.6 (revid:jonas@mysql.com-20090509154927-im9a7g846c6u1hzc) (version source revid:jonas@mysql.com-20090509154927-im9a7g846c6u1hzc) (merge vers: 5.1.34-ndb-7.0.6) (pib:6)