• unknown's avatar
    MBug#643463: slow XtraDB shutdown due to 10 second sleep in purge thread · e55c4836
    unknown authored
    Implement os_event_wait_time() for POSIX systems.
    
    In the purge thread, use os_event_wait_time() when sleeping rather than sleep,
    and signal the event when server shuts down, so we do not need to wait for
    upto 10 seconds until the purge thread wakes up.
    
    Also fix bug that warnings that were pushed after we call set_ok_status() were
    not included in the waning count sent to the client in the result packet.
    
    Also in mysqltest, in recursive die() invocation at least print the message
    before aborting.
    
    client/mysqltest.cc:
      If we detect recursive die(), at least print the message before aborting.
    mysql-test/r/warnings_debug.result:
      Test case.
    mysql-test/t/warnings_debug.test:
      Test case.
    sql/handler.cc:
      Force generation of a warning with specific debug option, for testing.
    sql/protocol.cc:
      Fix wrong DBUG_ENTER
    sql/sql_class.h:
      Add method to count warnings pushed after set_ok_status() is called.
    sql/sql_error.cc:
      Also count warnings pushed after set_ok_status() is called.
    storage/xtradb/include/os0sync.h:
      Implement working os_sync_wait_time() for POSIX.
    storage/xtradb/include/srv0srv.h:
      Make the purge thread wait for an event when sleeping, so we can signal it to
      wakeup immediately at shutdown.
    storage/xtradb/log/log0log.c:
      Make the purge thread wait for an event when sleeping, so we can signal it to
      wakeup immediately at shutdown.
    storage/xtradb/os/os0sync.c:
      Implement working os_sync_wait_time() for POSIX.
    storage/xtradb/srv/srv0srv.c:
      Make the purge thread wait for an event when sleeping, so we can signal it to
      wakeup immediately at shutdown.
    e55c4836
os0sync.h 14.9 KB