List:Commits« Previous MessageNext Message »
From:Jonathan Perkin Date:December 16 2010 9:37am
Subject:bzr push into mysql-5.5-bugteam branch (jonathan.perkin:3200 to 3201)
Bug#58955
View as plain text  
 3201 Jonathan Perkin	2010-12-16
      bug#58955: Must -DBUILD_CONFIG=mysql_release require libaio on Linux
      
      Allow users to build without aio if they really want to, by passing
      -DIGNORE_AIO_CHECK to cmake.

    modified:
      cmake/build_configurations/mysql_release.cmake
 3200 Davi Arnaut	2010-12-15
      Bug#58136: Crash in vio_close at concurrent disconnect and KILL
      
      The problem is a race between a session closing its vio
      (i.e. after a COM_QUIT) at the same time it is being killed by
      another thread. This could trigger a assertion in vio_close()
      as the two threads could end up closing the same vio, at the
      same time. This could happen due to the implementation of
      SIGNAL_WITH_VIO_CLOSE, which closes the vio of the thread
      being killed.
      
      The solution is to serialize the close of the Vio under
      LOCK_thd_data, which protects THD data.
      
      No regression test is added as this is essentially a debug
      issue and the test case would be quite convoluted as we would
      need to synchronize a session that is being killed -- which
      is a bit difficult since debug sync points code does not
      synchronize killed sessions.
     @ sql/mysqld.cc
        Drop lock parameter from close_connection, its not necessary
        any more. The newly introduced THD::disconnect method will take
        care of locking.
     @ sql/mysqld.h
        Change prototype, add a default parameter for the error code.
     @ sql/sql_class.cc
        In case SIGNAL_WITH_VIO_CLOSE is defined, the active vio is
        closed and cleared. Subsequent calls will only close the vio
        owned by the session.

    modified:
      sql/mysqld.cc
      sql/mysqld.h
      sql/sql_class.cc
      sql/sql_class.h
      sql/sql_connect.cc
      sql/sql_parse.cc
=== modified file 'cmake/build_configurations/mysql_release.cmake'
--- a/cmake/build_configurations/mysql_release.cmake	2010-12-07 11:40:38 +0000
+++ b/cmake/build_configurations/mysql_release.cmake	2010-12-16 09:27:55 +0000
@@ -118,17 +118,21 @@ IF(UNIX)
   OPTION(WITH_PIC "" ON) # Why?
 
   IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    # Ensure aio is available on Linux (required by InnoDB)
-    CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
-    CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
-    IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
-      MESSAGE(FATAL_ERROR "
-      aio is required on Linux, you need to install the required library:
-
-        Debian/Ubuntu:              apt-get install libaio-dev
-        RedHat/Fedora/Oracle Linux: yum install libaio-devel
-        SuSE:                       zypper install libaio-devel
-       ")
+    IF(NOT IGNORE_AIO_CHECK)
+      # Ensure aio is available on Linux (required by InnoDB)
+      CHECK_INCLUDE_FILES(libaio.h HAVE_LIBAIO_H)
+      CHECK_LIBRARY_EXISTS(aio io_queue_init "" HAVE_LIBAIO)
+      IF(NOT HAVE_LIBAIO_H OR NOT HAVE_LIBAIO)
+        MESSAGE(FATAL_ERROR "
+        aio is required on Linux, you need to install the required library:
+
+          Debian/Ubuntu:              apt-get install libaio-dev
+          RedHat/Fedora/Oracle Linux: yum install libaio-devel
+          SuSE:                       zypper install libaio-devel
+
+        If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
+        ")
+      ENDIF()
     ENDIF()
 
     # Enable fast mutexes on Linux


Attachment: [text/bzr-bundle] bzr/jonathan.perkin@oracle.com-20101216092755-2684lmfxl093zbgc.bundle
Thread
bzr push into mysql-5.5-bugteam branch (jonathan.perkin:3200 to 3201)Bug#58955Jonathan Perkin16 Dec