• Davi Arnaut's avatar
    Backport of Bug#10374 to mysql-next-mr · 80582b00
    Davi Arnaut authored
    ------------------------------------------------------------
    revno: 2597.37.3
    revision-id: sp1r-davi@mysql.com/endora.local-20080328123626-16430
    parent: sp1r-anozdrin/alik@quad.opbmk-20080327125300-11290
    committer: davi@mysql.com/endora.local
    timestamp: Fri 2008-03-28 09:36:26 -0300
    message:
      Bug#10374 GET_LOCK does not let connection to close on the server side if it's aborted
    
      The problem is that the server doesn't detect aborted connections which
      are waiting on a lock or sleeping (user sleep), wasting system resources
      for a connection that is already dead.
    
      The solution is to peek at the connection every five seconds to verify if
      the connection is not aborted. A aborted connection is detect by polling
      the connection socket for available data to be read or end of file and in
      case of eof, the wait is aborted and the connection killed.
    
    include/violite.h:
      Export vio_peek_read function.
    mysql-test/r/dirty_close.result:
      Add test case result for Bug#10374
    mysql-test/t/dirty_close.test:
      Add test case for Bug#10374
    sql/item_func.cc:
      While waiting for a condition to be signaled, check if the connection
      is not broken every INTERRUPT_INTERVAL seconds.
    sql/sql_class.cc:
      Add function which checks if the client connection was aborted.
    sql/sql_class.h:
      Add function prototype.
    vio/viosocket.c:
      Add poll and peek functions for Windows and Unix.
    80582b00
sql_class.h 97.1 KB