• unknown's avatar
    BUG#29806 - binlog_innodb.test creates a server log · 4537a0c9
    unknown authored
    Stopping mysql server could result in an entry in mysql error
    file: "InnoDB: Error: MySQL is freeing a thd".
    
    This happened because InnoDB assumes that the server will never
    call external_lock(F_UNLCK) in case external_lock(READ/WRITE)
    failed.
    
    Prior to this patch we haven't had strict definition whether
    external_lock(F_UNLCK) must be called in case external_lock(READ/WRITE)
    fails.
    
    This patch states that we never call external_lock(F_UNLCK) in case
    external_lock(READ/WRITE) fails.
    
    
    mysql-test/suite/binlog/t/disabled.def:
      Re-enabled binlog_innodb and binlog_killed tests.
    sql/ha_ndbcluster.cc:
      Restore handler state in case external_lock() failed.
    sql/ha_partition.cc:
      Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
    sql/lock.cc:
      Do not call external_lock(F_UNLCK) in case external_lock(READ/WRITE) failed.
    storage/myisammrg/myrg_locking.c:
      Restore handler state in case external_lock() failed.
    4537a0c9
ha_partition.cc 162 KB