From: Marc Alff Date: June 8 2012 2:11pm Subject: bzr push into mysql-trunk branch (marc.alff:3977 to 3978) List-Archive: http://lists.mysql.com/commits/144154 Message-Id: <201206081412.q58EC4Dp031544@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3978 Marc Alff 2012-06-08 Improved the test performance_schema.sizing_growth robustness, again. Fixed files_per_share to 3 modified: mysql-test/suite/perfschema/r/sizing_default.result mysql-test/suite/perfschema/r/sizing_growth.result mysql-test/suite/perfschema/r/sizing_high.result mysql-test/suite/perfschema/r/sizing_low.result mysql-test/suite/perfschema/r/sizing_med.result mysql-test/suite/perfschema/t/sizing_growth.test storage/perfschema/pfs_autosize.cc 3977 Vasil Dimov 2012-06-08 Fix Bug#13966453 CONCURRENT DML AND READS FROM I_S TABLES CRASH FETCH_DATA_INTO_CACHE_LOW Traversing the list trx_sys->mysql_trx_list should be done like: for (trx = UT_LIST_GET_FIRST(trx_sys->mysql_trx_list); trx != NULL; trx = UT_LIST_GET_NEXT(mysql_trx_list, trx)) { and not like: for (trx = UT_LIST_GET_FIRST(trx_sys->mysql_trx_list); trx != NULL; trx = UT_LIST_GET_NEXT(trx_list, trx)) { This bug was introduced in: * revision-id: sunny.bains@stripped * committer: Sunny Bains * branch nick: trunk * timestamp: Mon 2011-11-21 07:25:39 +1100 * message: * WL#6046 - Special handling of read-only transactions * ... Before that changeset the code only traversed trx_sys->trx_list like: for (trx = UT_LIST_GET_FIRST(trx_sys->trx_list); trx != NULL; trx = UT_LIST_GET_NEXT(trx_list, trx)) { and it did not fiddle with trx_sys->mysql_trx_list. In WL#6046 the code was changed so that trx_sys->trx_list in the initialization of the "for" loop became a parameter (trx_sys->mysql_trx_list is passed as that parameter), but the update statement of the "for" loop was not adjusted and was left like "trx = UT_LIST_GET_NEXT(trx_list, trx)". modified: storage/innobase/trx/trx0i_s.cc === modified file 'mysql-test/suite/perfschema/r/sizing_default.result' --- a/mysql-test/suite/perfschema/r/sizing_default.result 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/r/sizing_default.result 2012-06-08 14:11:10 +0000 @@ -23,7 +23,7 @@ performance_schema_max_cond_classes 80 performance_schema_max_cond_instances 836 performance_schema_max_file_classes 50 performance_schema_max_file_handles 32768 -performance_schema_max_file_instances 1138 +performance_schema_max_file_instances 1556 performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 2837 performance_schema_max_rwlock_classes 30 @@ -103,8 +103,8 @@ performance_schema threads.row_size 1856 performance_schema threads.row_count 224 performance_schema threads.memory 415744 performance_schema file_instances.row_size 768 -performance_schema file_instances.row_count 1138 -performance_schema file_instances.memory 873984 +performance_schema file_instances.row_count 1556 +performance_schema file_instances.memory 1195008 performance_schema (pfs_file_handle).row_size 8 performance_schema (pfs_file_handle).row_count 32768 performance_schema (pfs_file_handle).memory 262144 @@ -212,7 +212,7 @@ performance_schema (account_hash).size 1 performance_schema (digest_hash).count 0 performance_schema (digest_hash).size 1000 performance_schema (filename_hash).count 0 -performance_schema (filename_hash).size 1138 +performance_schema (filename_hash).size 1556 performance_schema (host_hash).count 2 performance_schema (host_hash).size 20 performance_schema (setup_actor_hash).count 1 @@ -223,4 +223,4 @@ performance_schema (table_share_hash).co performance_schema (table_share_hash).size 445 performance_schema (user_hash).count 2 performance_schema (user_hash).size 5 -performance_schema performance_schema.memory 35386720 +performance_schema performance_schema.memory 35707744 === modified file 'mysql-test/suite/perfschema/r/sizing_growth.result' --- a/mysql-test/suite/perfschema/r/sizing_growth.result 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/r/sizing_growth.result 2012-06-08 14:11:10 +0000 @@ -178,17 +178,42 @@ drop table test.t7; drop table test.t8; drop table test.t9; drop table test.t10; +show status like "performance_schema%"; +Variable_name Value +Performance_schema_accounts_lost 0 +Performance_schema_cond_classes_lost 0 +Performance_schema_cond_instances_lost 0 +Performance_schema_digest_lost 0 +Performance_schema_file_classes_lost 0 +Performance_schema_file_handles_lost 0 +Performance_schema_file_instances_lost 0 +Performance_schema_hosts_lost 0 +Performance_schema_locker_lost 0 +Performance_schema_mutex_classes_lost 0 +Performance_schema_mutex_instances_lost 0 +Performance_schema_rwlock_classes_lost 0 +Performance_schema_rwlock_instances_lost 0 +Performance_schema_session_connect_attrs_lost 0 +Performance_schema_socket_classes_lost 0 +Performance_schema_socket_instances_lost 0 +Performance_schema_stage_classes_lost 0 +Performance_schema_statement_classes_lost 0 +Performance_schema_table_handles_lost 0 +Performance_schema_table_instances_lost 0 +Performance_schema_thread_classes_lost 0 +Performance_schema_thread_instances_lost 0 +Performance_schema_users_lost 0 select @mutex_per_share <= 4; @mutex_per_share <= 4 1 -select @rwlock_per_share; -@rwlock_per_share +select @rwlock_per_share <= 3; +@rwlock_per_share <= 3 1 select @cond_per_share; @cond_per_share 0 -select @file_per_share <= 2; -@file_per_share <= 2 +select @file_per_share <= 3; +@file_per_share <= 3 1 select @mutex_per_con; @mutex_per_con @@ -216,9 +241,9 @@ select @file_per_handle; 0 select if( (@mutex_per_share <= 4) -AND (@rwlock_per_share = 1) +AND (@rwlock_per_share <= 3) AND (@cond_per_share = 0) -AND (@file_per_share <= 2) +AND (@file_per_share <= 3) AND (@mutex_per_con = 3) AND (@rwlock_per_con = 1) AND (@cond_per_con = 2) === modified file 'mysql-test/suite/perfschema/r/sizing_high.result' --- a/mysql-test/suite/perfschema/r/sizing_high.result 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/r/sizing_high.result 2012-06-08 14:11:10 +0000 @@ -23,7 +23,7 @@ performance_schema_max_cond_classes 80 performance_schema_max_cond_instances 10900 performance_schema_max_file_classes 50 performance_schema_max_file_handles 32768 -performance_schema_max_file_instances 15693 +performance_schema_max_file_instances 23385 performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 42200 performance_schema_max_rwlock_classes 30 @@ -103,8 +103,8 @@ performance_schema threads.row_size 1856 performance_schema threads.row_count 500 performance_schema threads.memory 928000 performance_schema file_instances.row_size 768 -performance_schema file_instances.row_count 15693 -performance_schema file_instances.memory 12052224 +performance_schema file_instances.row_count 23385 +performance_schema file_instances.memory 17959680 performance_schema (pfs_file_handle).row_size 8 performance_schema (pfs_file_handle).row_count 32768 performance_schema (pfs_file_handle).memory 262144 @@ -212,7 +212,7 @@ performance_schema (account_hash).size 1 performance_schema (digest_hash).count 0 performance_schema (digest_hash).size 10000 performance_schema (filename_hash).count 0 -performance_schema (filename_hash).size 15693 +performance_schema (filename_hash).size 23385 performance_schema (host_hash).count 2 performance_schema (host_hash).size 100 performance_schema (setup_actor_hash).count 1 @@ -223,4 +223,4 @@ performance_schema (table_share_hash).co performance_schema (table_share_hash).size 12500 performance_schema (user_hash).count 2 performance_schema (user_hash).size 100 -performance_schema performance_schema.memory 416452568 +performance_schema performance_schema.memory 422360024 === modified file 'mysql-test/suite/perfschema/r/sizing_low.result' --- a/mysql-test/suite/perfschema/r/sizing_low.result 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/r/sizing_low.result 2012-06-08 14:11:10 +0000 @@ -23,7 +23,7 @@ performance_schema_max_cond_classes 80 performance_schema_max_cond_instances 612 performance_schema_max_file_classes 50 performance_schema_max_file_handles 32768 -performance_schema_max_file_instances 1138 +performance_schema_max_file_instances 1556 performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 2500 performance_schema_max_rwlock_classes 30 @@ -103,8 +103,8 @@ performance_schema threads.row_size 1856 performance_schema threads.row_count 112 performance_schema threads.memory 207872 performance_schema file_instances.row_size 768 -performance_schema file_instances.row_count 1138 -performance_schema file_instances.memory 873984 +performance_schema file_instances.row_count 1556 +performance_schema file_instances.memory 1195008 performance_schema (pfs_file_handle).row_size 8 performance_schema (pfs_file_handle).row_count 32768 performance_schema (pfs_file_handle).memory 262144 @@ -212,7 +212,7 @@ performance_schema (account_hash).size 1 performance_schema (digest_hash).count 0 performance_schema (digest_hash).size 1000 performance_schema (filename_hash).count 0 -performance_schema (filename_hash).size 1138 +performance_schema (filename_hash).size 1556 performance_schema (host_hash).count 2 performance_schema (host_hash).size 20 performance_schema (setup_actor_hash).count 1 @@ -223,4 +223,4 @@ performance_schema (table_share_hash).co performance_schema (table_share_hash).size 445 performance_schema (user_hash).count 2 performance_schema (user_hash).size 5 -performance_schema performance_schema.memory 24331744 +performance_schema performance_schema.memory 24652768 === modified file 'mysql-test/suite/perfschema/r/sizing_med.result' --- a/mysql-test/suite/perfschema/r/sizing_med.result 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/r/sizing_med.result 2012-06-08 14:11:10 +0000 @@ -23,7 +23,7 @@ performance_schema_max_cond_classes 80 performance_schema_max_cond_instances 1079 performance_schema_max_file_classes 50 performance_schema_max_file_handles 32768 -performance_schema_max_file_instances 1280 +performance_schema_max_file_instances 1754 performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 3658 performance_schema_max_rwlock_classes 30 @@ -103,8 +103,8 @@ performance_schema threads.row_size 1856 performance_schema threads.row_count 289 performance_schema threads.memory 536384 performance_schema file_instances.row_size 768 -performance_schema file_instances.row_count 1280 -performance_schema file_instances.memory 983040 +performance_schema file_instances.row_count 1754 +performance_schema file_instances.memory 1347072 performance_schema (pfs_file_handle).row_size 8 performance_schema (pfs_file_handle).row_count 32768 performance_schema (pfs_file_handle).memory 262144 @@ -212,7 +212,7 @@ performance_schema (account_hash).size 1 performance_schema (digest_hash).count 0 performance_schema (digest_hash).size 5000 performance_schema (filename_hash).count 0 -performance_schema (filename_hash).size 1280 +performance_schema (filename_hash).size 1754 performance_schema (host_hash).count 2 performance_schema (host_hash).size 100 performance_schema (setup_actor_hash).count 1 @@ -223,4 +223,4 @@ performance_schema (table_share_hash).co performance_schema (table_share_hash).size 556 performance_schema (user_hash).count 2 performance_schema (user_hash).size 100 -performance_schema performance_schema.memory 69559328 +performance_schema performance_schema.memory 69923360 === modified file 'mysql-test/suite/perfschema/t/sizing_growth.test' --- a/mysql-test/suite/perfschema/t/sizing_growth.test 2012-06-07 15:37:49 +0000 +++ b/mysql-test/suite/perfschema/t/sizing_growth.test 2012-06-08 14:11:10 +0000 @@ -356,19 +356,30 @@ drop table test.t10; --enable_result_log # -# Expecting 3: +# This test must have *_lost = 0, +# otherwise the measurement is just wrong. +# + +show status like "performance_schema%"; + +# +# Expecting 2: # - wait/synch/mutex/sql/MDL_wait::LOCK_wait_status # - wait/synch/mutex/sql/TABLE_SHARE::LOCK_ha_data +# plus mutexes used inside the storage engine +# This is very storage engine dependent +# For innodb: # - wait/synch/mutex/innodb/autoinc_mutex -# but this is very storage engine dependent # select @mutex_per_share <= 4; # # Expecting 1: # - wait/synch/rwlock/sql/MDL_lock::rwlock +# plus rwlocks used inside the storage engine +# This is very storage engine dependent # -select @rwlock_per_share; +select @rwlock_per_share <= 3; # # Expecting 0: @@ -378,14 +389,10 @@ select @cond_per_share; # # Expecting 1: # - wait/io/file/sql/FRM -# more with innodb file per table -# -# This however is very storage engine dependent, -# and platform dependent (not all platform instrument file io the same way, -# or at all) -# +# plus files used inside the storage engine +# This is very storage engine dependent # -select @file_per_share <= 2; +select @file_per_share <= 3; # # Expecting 3: @@ -443,9 +450,9 @@ select @file_per_handle; select if( (@mutex_per_share <= 4) - AND (@rwlock_per_share = 1) + AND (@rwlock_per_share <= 3) AND (@cond_per_share = 0) - AND (@file_per_share <= 2) + AND (@file_per_share <= 3) AND (@mutex_per_con = 3) AND (@rwlock_per_con = 1) AND (@cond_per_con = 2) === modified file 'storage/perfschema/pfs_autosize.cc' --- a/storage/perfschema/pfs_autosize.cc 2012-06-07 15:37:49 +0000 +++ b/storage/perfschema/pfs_autosize.cc 2012-06-08 14:11:10 +0000 @@ -50,7 +50,7 @@ static const ulong thread_per_handle= 0; static const ulong mutex_per_share= 4; static const ulong rwlock_per_share= 3; static const ulong cond_per_share= 1; -static const ulong file_per_share= 2; +static const ulong file_per_share= 3; static const ulong socket_per_share= 0; static const ulong thread_per_share= 0; No bundle (reason: useless for push emails).