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 <Sunny.Bains@stripped>
* 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).
| Thread |
|---|
| • bzr push into mysql-trunk branch (marc.alff:3977 to 3978) | Marc Alff | 9 Jun |