From: Bjorn Munch
Date: September 20 2010 8:23am
Subject: bzr commit into mysql-trunk-mtr branch (bjorn.munch:2968)
List-Archive: http://lists.mysql.com/commits/118567
Message-Id: <201009200823.o8K8NOsY026017@khepri15.norway.sun.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============1307433085=="
--===============1307433085==
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
#At file:///home/bm136801/my/mtr-tr/ based on revid:bjorn.munch@stripped
2968 Bjorn Munch 2010-09-20 [merge]
merge from trunk
modified:
client/CMakeLists.txt
include/CMakeLists.txt
include/Makefile.am
mysql-test/r/sp-destruct.result
mysql-test/t/sp-destruct.test
scripts/CMakeLists.txt
scripts/make_win_bin_dist
sql/CMakeLists.txt
sql/mdl.cc
sql/mdl.h
sql/sp.cc
sql/sql_base.cc
sql/sql_base.h
sql/table.cc
=== modified file 'client/CMakeLists.txt'
--- a/client/CMakeLists.txt 2010-08-12 15:19:57 +0000
+++ b/client/CMakeLists.txt 2010-09-06 11:26:23 +0000
@@ -64,7 +64,10 @@ MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
-ADD_EXECUTABLE(echo echo.c)
+# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
+IF(WIN32)
+ MYSQL_ADD_EXECUTABLE(echo echo.c)
+ENDIF(WIN32)
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
PROPERTIES HAS_CXX TRUE)
=== modified file 'include/CMakeLists.txt'
--- a/include/CMakeLists.txt 2010-08-12 15:27:53 +0000
+++ b/include/CMakeLists.txt 2010-09-13 10:26:57 +0000
@@ -54,6 +54,7 @@ SET(HEADERS
keycache.h
m_ctype.h
my_attribute.h
+ my_compiler.h
${HEADERS_GEN_CONFIGURE}
)
=== modified file 'include/Makefile.am'
--- a/include/Makefile.am 2010-09-01 13:05:01 +0000
+++ b/include/Makefile.am 2010-09-13 10:36:27 +0000
@@ -32,8 +32,9 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_d
decimal.h errmsg.h my_global.h my_net.h \
my_getopt.h sslopt-longopts.h my_dir.h \
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
- m_ctype.h my_attribute.h $(HEADERS_GEN_CONFIGURE) \
- $(HEADERS_GEN_MAKE) probes_mysql.h probes_mysql_nodtrace.h
+ m_ctype.h my_attribute.h my_compiler.h \
+ $(HEADERS_GEN_CONFIGURE) $(HEADERS_GEN_MAKE) \
+ probes_mysql.h probes_mysql_nodtrace.h
noinst_HEADERS = lf.h my_bit.h \
heap.h my_bitmap.h my_uctype.h password.h \
@@ -47,7 +48,7 @@ noinst_HEADERS = lf.h my_bit.h \
my_user.h my_atomic.h atomic/nolock.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
- atomic/solaris.h mysql/innodb_priv.h my_compiler.h
+ atomic/solaris.h mysql/innodb_priv.h
pkgpsiinclude_HEADERS = mysql/psi/psi.h mysql/psi/mysql_thread.h \
mysql/psi/mysql_file.h \
=== modified file 'mysql-test/r/sp-destruct.result'
--- a/mysql-test/r/sp-destruct.result 2010-03-03 09:24:53 +0000
+++ b/mysql-test/r/sp-destruct.result 2010-09-13 09:58:11 +0000
@@ -134,3 +134,19 @@ Warning 1405 Failed to revoke all privil
# Restore the procs_priv table
RENAME TABLE procs_priv_backup TO mysql.procs_priv;
FLUSH TABLE mysql.procs_priv;
+#
+# Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from
+# 5.1.50 to 5.5.6".
+#
+drop database if exists mysqltest;
+# Backup mysql.proc.
+flush table mysql.proc;
+create database mysqltest;
+# Corrupt mysql.proc to make it unusable by current version of server.
+alter table mysql.proc drop column type;
+# The below statement should not cause assertion failure.
+drop database mysqltest;
+Warnings:
+Error 1695 Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
+# Restore mysql.proc.
+drop table mysql.proc;
=== modified file 'mysql-test/t/sp-destruct.test'
--- a/mysql-test/t/sp-destruct.test 2010-04-16 14:24:06 +0000
+++ b/mysql-test/t/sp-destruct.test 2010-09-13 09:58:11 +0000
@@ -222,3 +222,33 @@ SHOW WARNINGS;
--echo # Restore the procs_priv table
RENAME TABLE procs_priv_backup TO mysql.procs_priv;
FLUSH TABLE mysql.procs_priv;
+
+
+--echo #
+--echo # Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from
+--echo # 5.1.50 to 5.5.6".
+--echo #
+--disable_warnings
+drop database if exists mysqltest;
+--enable_warnings
+--echo # Backup mysql.proc.
+flush table mysql.proc;
+let $MYSQLD_DATADIR= `select @@datadir`;
+--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
+--copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/proc.MYD
+--copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/proc.MYI
+
+create database mysqltest;
+--echo # Corrupt mysql.proc to make it unusable by current version of server.
+alter table mysql.proc drop column type;
+--echo # The below statement should not cause assertion failure.
+drop database mysqltest;
+
+--echo # Restore mysql.proc.
+drop table mysql.proc;
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.frm $MYSQLD_DATADIR/mysql/proc.frm
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD
+--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.frm
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYD
+--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYI
=== modified file 'scripts/CMakeLists.txt'
--- a/scripts/CMakeLists.txt 2010-08-23 17:01:12 +0000
+++ b/scripts/CMakeLists.txt 2010-09-13 10:26:57 +0000
@@ -139,6 +139,7 @@ ELSE()
ENDIF()
SET(HOSTNAME "hostname")
+SET(MYSQLD_USER "mysql")
# Required for mysqlbug until autotools are deprecated, once done remove these
# and expand default cmake variables
=== modified file 'scripts/make_win_bin_dist'
--- a/scripts/make_win_bin_dist 2010-07-23 20:14:04 +0000
+++ b/scripts/make_win_bin_dist 2010-08-31 14:33:19 +0000
@@ -260,6 +260,7 @@ cp include/mysql.h \
include/keycache.h \
include/m_ctype.h \
include/my_attribute.h \
+ include/my_compiler.h \
include/mysqld_error.h \
include/sql_state.h \
include/mysqld_ername.h \
=== modified file 'sql/CMakeLists.txt'
--- a/sql/CMakeLists.txt 2010-08-20 08:48:59 +0000
+++ b/sql/CMakeLists.txt 2010-09-13 09:58:11 +0000
@@ -289,8 +289,7 @@ IF(WIN32 AND MYSQLD_EXECUTABLE)
COMMAND ${CMAKE_COMMAND}
${CONFIG_PARAM} -P ${CMAKE_CURRENT_BINARY_DIR}/create_initial_db.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data
- COMMAND ${CMAKE_COMMAND} -E touch initdb.dep
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep
DEPENDS mysqld
)
ADD_CUSTOM_TARGET(initial_database
=== modified file 'sql/mdl.cc'
--- a/sql/mdl.cc 2010-08-20 08:48:59 +0000
+++ b/sql/mdl.cc 2010-09-13 10:26:57 +0000
@@ -124,7 +124,6 @@ public:
Deadlock_detection_visitor(MDL_context *start_node_arg)
: m_start_node(start_node_arg),
m_victim(NULL),
- m_current_search_depth(0),
m_found_deadlock(FALSE)
{}
virtual bool enter_node(MDL_context *node);
@@ -133,6 +132,8 @@ public:
virtual bool inspect_edge(MDL_context *dest);
MDL_context *get_victim() const { return m_victim; }
+
+ void abort_traversal(MDL_context *node);
private:
/**
Change the deadlock victim to a new one if it has lower deadlock
@@ -147,13 +148,6 @@ private:
MDL_context *m_start_node;
/** If a deadlock is found, the context that identifies the victim. */
MDL_context *m_victim;
- /** Set to the 0 at start. Increased whenever
- we descend into another MDL context (aka traverse to the next
- wait-for graph node). When MAX_SEARCH_DEPTH is reached, we
- assume that a deadlock is found, even if we have not found a
- loop.
- */
- uint m_current_search_depth;
/** TRUE if we found a deadlock. */
bool m_found_deadlock;
/**
@@ -187,7 +181,7 @@ private:
bool Deadlock_detection_visitor::enter_node(MDL_context *node)
{
- m_found_deadlock= ++m_current_search_depth >= MAX_SEARCH_DEPTH;
+ m_found_deadlock= m_current_search_depth >= MAX_SEARCH_DEPTH;
if (m_found_deadlock)
{
DBUG_ASSERT(! m_victim);
@@ -207,7 +201,6 @@ bool Deadlock_detection_visitor::enter_n
void Deadlock_detection_visitor::leave_node(MDL_context *node)
{
- --m_current_search_depth;
if (m_found_deadlock)
opt_change_victim_to(node);
}
@@ -252,6 +245,21 @@ Deadlock_detection_visitor::opt_change_v
/**
+ Abort traversal of a wait-for graph and report a deadlock.
+
+ @param node Node which we were about to visit when abort
+ was initiated.
+*/
+
+void Deadlock_detection_visitor::abort_traversal(MDL_context *node)
+{
+ DBUG_ASSERT(! m_victim);
+ m_found_deadlock= TRUE;
+ opt_change_victim_to(node);
+}
+
+
+/**
Get a bit corresponding to enum_mdl_type value in a granted/waiting bitmaps
and compatibility matrices.
*/
@@ -2056,8 +2064,13 @@ bool MDL_lock::visit_subgraph(MDL_ticket
are visiting it but this is OK: in the worst case we might do some
extra work and one more context might be chosen as a victim.
*/
+ ++gvisitor->m_current_search_depth;
+
if (gvisitor->enter_node(src_ctx))
+ {
+ --gvisitor->m_current_search_depth;
goto end;
+ }
/*
We do a breadth-first search first -- that is, inspect all
@@ -2114,6 +2127,7 @@ bool MDL_lock::visit_subgraph(MDL_ticket
end_leave_node:
gvisitor->leave_node(src_ctx);
+ --gvisitor->m_current_search_depth;
end:
mysql_prlock_unlock(&m_rwlock);
=== modified file 'sql/mdl.h'
--- a/sql/mdl.h 2010-08-20 08:48:59 +0000
+++ b/sql/mdl.h 2010-09-13 10:26:57 +0000
@@ -385,7 +385,10 @@ public:
virtual bool inspect_edge(MDL_context *dest) = 0;
virtual ~MDL_wait_for_graph_visitor();
- MDL_wait_for_graph_visitor() :m_lock_open_count(0) {}
+ MDL_wait_for_graph_visitor() :m_lock_open_count(0),
+ m_current_search_depth(0)
+ { }
+ virtual void abort_traversal(MDL_context *node) = 0;
public:
/**
XXX, hack: During deadlock search, we may need to
@@ -396,6 +399,17 @@ public:
LOCK_open since it has significant performance impacts.
*/
uint m_lock_open_count;
+ /**
+ Set to the 0 at start. Increased whenever
+ we descend into another MDL context (aka traverse to the next
+ wait-for graph node). When MAX_SEARCH_DEPTH is reached, we
+ assume that a deadlock is found, even if we have not found a
+ loop.
+
+ XXX: This member belongs to this class only temporarily until
+ bug #56405 is fixed.
+ */
+ uint m_current_search_depth;
};
/**
=== modified file 'sql/sp.cc'
--- a/sql/sp.cc 2010-07-29 13:37:49 +0000
+++ b/sql/sp.cc 2010-09-13 09:58:11 +0000
@@ -440,6 +440,7 @@ static TABLE *open_proc_table_for_update
{
TABLE_LIST table_list;
TABLE *table;
+ MDL_ticket *mdl_savepoint= thd->mdl_context.mdl_savepoint();
DBUG_ENTER("open_proc_table_for_update");
table_list.init_one_table("mysql", 5, "proc", 4, "proc", TL_WRITE);
@@ -450,6 +451,9 @@ static TABLE *open_proc_table_for_update
if (!proc_table_intact.check(table, &proc_table_def))
DBUG_RETURN(table);
+ close_thread_tables(thd);
+ thd->mdl_context.rollback_to_savepoint(mdl_savepoint);
+
DBUG_RETURN(NULL);
}
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2010-08-20 08:48:59 +0000
+++ b/sql/sql_base.cc 2010-09-13 10:26:57 +0000
@@ -100,6 +100,8 @@ bool No_such_table_error_handler::safely
TABLE_SHAREs, refresh_version and the table id counter.
*/
mysql_mutex_t LOCK_open;
+mysql_mutex_t LOCK_dd_owns_lock_open;
+uint dd_owns_lock_open= 0;
#ifdef HAVE_PSI_INTERFACE
static PSI_mutex_key key_LOCK_open;
@@ -298,6 +300,7 @@ bool table_def_init(void)
init_tdc_psi_keys();
#endif
mysql_mutex_init(key_LOCK_open, &LOCK_open, MY_MUTEX_INIT_FAST);
+ mysql_mutex_init(NULL, &LOCK_dd_owns_lock_open, MY_MUTEX_INIT_FAST);
oldest_unused_share= &end_of_unused_share;
end_of_unused_share.prev= &oldest_unused_share;
@@ -341,6 +344,7 @@ void table_def_free(void)
table_def_inited= 0;
/* Free table definitions. */
my_hash_free(&table_def_cache);
+ mysql_mutex_destroy(&LOCK_dd_owns_lock_open);
mysql_mutex_destroy(&LOCK_open);
}
DBUG_VOID_RETURN;
=== modified file 'sql/sql_base.h'
--- a/sql/sql_base.h 2010-08-20 08:48:59 +0000
+++ b/sql/sql_base.h 2010-09-13 10:26:57 +0000
@@ -71,6 +71,8 @@ enum enum_tdc_remove_table_type {TDC_RT_
bool check_dup(const char *db, const char *name, TABLE_LIST *tables);
extern mysql_mutex_t LOCK_open;
+extern mysql_mutex_t LOCK_dd_owns_lock_open;
+extern uint dd_owns_lock_open;
bool table_cache_init(void);
void table_cache_free(void);
bool table_def_init(void);
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2010-08-26 15:17:35 +0000
+++ b/sql/table.cc 2010-09-13 10:26:57 +0000
@@ -3092,7 +3092,30 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
holding a write-lock on MDL_lock::m_rwlock.
*/
if (gvisitor->m_lock_open_count++ == 0)
+ {
+ /*
+ To circumvent bug #56405 "Deadlock in the MDL deadlock detector"
+ we don't try to lock LOCK_open mutex if some thread doing
+ deadlock detection already owns it and current search depth is
+ greater than 0. Instead we report a deadlock.
+
+ TODO/FIXME: The proper fix for this bug is to use rwlocks for
+ protection of table shares/instead of LOCK_open.
+ Unfortunately it requires more effort/has significant
+ performance effect.
+ */
+ mysql_mutex_lock(&LOCK_dd_owns_lock_open);
+ if (gvisitor->m_current_search_depth > 0 && dd_owns_lock_open > 0)
+ {
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
+ --gvisitor->m_lock_open_count;
+ gvisitor->abort_traversal(src_ctx);
+ return TRUE;
+ }
+ ++dd_owns_lock_open;
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
mysql_mutex_lock(&LOCK_open);
+ }
I_P_List_iterator
tables_it(used_tables);
@@ -3107,8 +3130,12 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
goto end;
}
+ ++gvisitor->m_current_search_depth;
if (gvisitor->enter_node(src_ctx))
+ {
+ --gvisitor->m_current_search_depth;
goto end;
+ }
while ((table= tables_it++))
{
@@ -3131,10 +3158,16 @@ bool TABLE_SHARE::visit_subgraph(Wait_fo
end_leave_node:
gvisitor->leave_node(src_ctx);
+ --gvisitor->m_current_search_depth;
end:
if (gvisitor->m_lock_open_count-- == 1)
+ {
mysql_mutex_unlock(&LOCK_open);
+ mysql_mutex_lock(&LOCK_dd_owns_lock_open);
+ --dd_owns_lock_open;
+ mysql_mutex_unlock(&LOCK_dd_owns_lock_open);
+ }
return result;
}
--===============1307433085==
MIME-Version: 1.0
Content-Type: text/bzr-bundle; charset="us-ascii";
name="bzr/bjorn.munch@stripped"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: bjorn.munch@stripped
# target_branch: file:///home/bm136801/my/mtr-tr/
# testament_sha1: 5d0a218e62c91719de256d34e4e479ac78fc0bd6
# timestamp: 2010-09-20 10:23:24 +0200
# source_branch: file:///home/bm136801/my/mysql-trunk/
# base_revision_id: bjorn.munch@stripped\
# 4fj042ktf50y00i1
#
# Begin bundle
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
zP8i1QWGaL/X+T/8XckU4UJAQ+n0FA==
--===============1307433085==--