Bug #17578 Test "events" fails due to scheduling difference
Submitted: 20 Feb 2006 12:03 Modified: 28 Mar 2006 12:09
Reporter: Joerg Bruehe Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Stored Routines Severity:S3 (Non-critical)
Version:5.1.7-beta OS:some Unix
Assigned to: Andrey Hristov CPU Architecture:Any

[20 Feb 2006 12:03] Joerg Bruehe
Description:
Build of 5.1.7-beta, based on ChangeSet
  1.2139 06/02/20 00:32:07 kent@mysql.com +3 -0
  mysql-test-run.pl:
    Added --restart-cleanup option
  drop-on-restart.inc:
    DROP commands to cleanup on restart
    new file
  mysqltest.c:
    Added option --include=<sql-file>

Test "events" fails due to different scheduling, which makes the "show processlist" output differ:
-------------------------------------------------------
*** r/events.result
--- r/events.reject
***************
*** 382,389
  show processlist;
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
! #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
! #     root    localhost       events_test     Connect #       User lock       select get_lock("test_lock2_1", 20)
  "Release the lock so the child process should finish. Hence the scheduler also"
  select release_lock("test_lock2_1");
  release_lock("test_lock2_1")
--- 382,388
  show processlist;
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
! #     event_scheduler connecting host NULL    Connect #       NULL    NULL
  "Release the lock so the child process should finish. Hence the scheduler also"
  select release_lock("test_lock2_1");
  release_lock("test_lock2_1")
-------------------------------------------------------
Occurs:
cane-linuxthreads-5.1.log   debug

***************
*** 392,397
--- 389,395
  show processlist;
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
+ #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
  drop event закачка21;
  create table t_16 (s1 int);
  create trigger t_16_bi before insert on t_16 for each row create event  e_16 on schedule every 1 second do set @a=5;
-------------------------------------------------------
Occurs:
hammer-glibc23-5.1.log   ps
hammer-glibc23-5.1.log   ps+rowrepl
hammer-glibc23-5.1.log   debug
hammer-glibc23-5.1.log   normal
hammer-glibc23-5.1.log   normal+rowrepl
rhas3-x86-glibc23-5.1.log   normal
rhas3-x86-glibc23-5.1.log   ps
rhas3-x86-glibc23-5.1.log   normal+rowrepl
rhas3-x86-glibc23-5.1.log   ps+rowrepl

***************
*** 383,389
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
  #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
! #     root    localhost       events_test     Connect #       User lock       select get_lock("test_lock2_1", 20)
  "Release the lock so the child process should finish. Hence the scheduler also"
  select release_lock("test_lock2_1");
  release_lock("test_lock2_1")
--- 380,386
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
  #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
! #     system user     connecting host NULL    Connect #       Initialized     NULL
  "Release the lock so the child process should finish. Hence the scheduler also"
  select release_lock("test_lock2_1");
  release_lock("test_lock2_1")
-------------------------------------------------------
Occurs:
aix52-5.1.log   ps
aix52-5.1.log   ps+rowrepl

-------------------------------------------------------
*** r/events.result
--- r/events.reject
***************
*** 383,389
  Id    User    Host    db      Command Time    State   Info
  #     root    localhost       events_test     Query   #       NULL    show processlist
  #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
- #     root    localhost       events_test     Connect #       User lock       select get_lock("test_lock2_1", 20)
  "Release the lock so the child process should finish. Hence the scheduler also"
  select release_lock("test_lock2_1");
  release_lock("test_lock2_1")
--- 383,388
-------------------------------------------------------
Occurs:
intelxeon3-5.1.log   debug

How to repeat:
Detected by running the test suite.
[21 Feb 2006 13:50] Joerg Bruehe
With current 5.1 snapshot, similar difference in an earlier "show processlist":

-------------------------------------------------------
*** r/events.result
--- r/events.reject
***************
*** 365,370
--- 365,371
  #     root    localhost       events_test     Query   #       NULL    show processlist
  #     event_scheduler connecting host NULL    Connect #       Sleeping        NULL
  #     root    localhost       events_test     Connect #       User lock       select get_lock("test_lock2", 20)
+ #     root    localhost       events_test     Connect #       User lock       select get_lock("test_lock2", 20)
  "Release the mutex, the event worker should finish."
  select release_lock("test_lock2");
  release_lock("test_lock2")
-------------------------------------------------------
[7 Mar 2006 11:15] Andrey Hristov
The fix will go with the fix of #16934.
[16 Mar 2006 15:40] 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/3900
[27 Mar 2006 19:45] Jim Winstead
This patch looks okay to push.
[28 Mar 2006 12:09] Andrey Hristov
No need to document, this is regards internal tests.