From: Marc Alff Date: August 12 2010 10:53am Subject: bzr commit into mysql-next-mr-bugfixing branch (marc.alff:3204) List-Archive: http://lists.mysql.com/commits/115565 Message-Id: <201008121054.o7BKABHu030317@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4745239364257147842==" --===============4745239364257147842== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-merge/ based on revid:dao-gang.qu@stripped 3204 Marc Alff 2010-08-12 [merge] Merge mysql-trunk-bugfixing --> mysql-next-mr-bugfixing modified: storage/perfschema/pfs.cc storage/perfschema/pfs_events_waits.cc storage/perfschema/pfs_events_waits.h storage/perfschema/table_events_waits.cc === modified file 'storage/perfschema/pfs.cc' --- a/storage/perfschema/pfs.cc 2010-07-23 17:08:41 +0000 +++ b/storage/perfschema/pfs.cc 2010-08-12 10:21:22 +0000 @@ -1171,7 +1171,6 @@ get_thread_mutex_locker_v1(PSI_mutex_loc pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_mutex= pfs_mutex; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1225,7 +1224,6 @@ get_thread_rwlock_locker_v1(PSI_rwlock_l pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_rwlock= pfs_rwlock; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1292,7 +1290,6 @@ get_thread_cond_locker_v1(PSI_cond_locke pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_cond= pfs_cond; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1359,7 +1356,6 @@ get_thread_table_locker_v1(PSI_table_loc pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_table= pfs_table; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1423,7 +1419,6 @@ get_thread_file_name_locker_v1(PSI_file_ pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_file= pfs_file; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1483,7 +1478,6 @@ get_thread_file_stream_locker_v1(PSI_fil pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_file= pfs_file; pfs_locker->m_waits_current.m_thread= pfs_thread; @@ -1560,7 +1554,6 @@ get_thread_file_descriptor_locker_v1(PSI pfs_locker->m_waits_current.m_nesting_event_id= parent_locker->m_waits_current.m_event_id; } - pfs_locker->m_waits_current.m_wait_class= NO_WAIT_CLASS; pfs_locker->m_target.m_file= pfs_file; pfs_locker->m_waits_current.m_thread= pfs_thread; === modified file 'storage/perfschema/pfs_events_waits.cc' --- a/storage/perfschema/pfs_events_waits.cc 2010-07-23 20:59:42 +0000 +++ b/storage/perfschema/pfs_events_waits.cc 2010-08-12 10:21:22 +0000 @@ -80,25 +80,10 @@ void cleanup_events_waits_history_long(v events_waits_history_long_array= NULL; } -static void copy_events_waits(PFS_events_waits *dest, - const PFS_events_waits *source) +static inline void copy_events_waits(PFS_events_waits *dest, + const PFS_events_waits *source) { - /* m_wait_class must be the first member of PFS_events_waits. */ - compile_time_assert(offsetof(PFS_events_waits, m_wait_class) == 0); - - char* dest_body= (reinterpret_cast (dest)) + sizeof(events_waits_class); - const char* source_body= (reinterpret_cast (source)) - + sizeof(events_waits_class); - - /* See comments in table_events_waits_common::make_row(). */ - - /* Signal readers they are about to read garbage ... */ - dest->m_wait_class= NO_WAIT_CLASS; - /* ... that this can generate. */ - memcpy(dest_body, source_body, - sizeof(PFS_events_waits) - sizeof(events_waits_class)); - /* Signal readers the record is now clean again. */ - dest->m_wait_class= source->m_wait_class; + memcpy(dest, source, sizeof(PFS_events_waits)); } /** @@ -116,9 +101,7 @@ void insert_events_waits_history(PFS_thr causing a potential race condition. We are not testing for this and insert a possibly empty record, to make this thread (the writer) faster. - This is ok, the truncated data will have - wait->m_wait_class == NO_WAIT_CLASS, - which readers of m_waits_history will filter out. + This is ok, the readers of m_waits_history will filter this out. */ copy_events_waits(&thread->m_waits_history[index], wait); === modified file 'storage/perfschema/pfs_events_waits.h' --- a/storage/perfschema/pfs_events_waits.h 2010-07-23 17:08:41 +0000 +++ b/storage/perfschema/pfs_events_waits.h 2010-08-12 10:21:22 +0000 @@ -97,7 +97,7 @@ struct PFS_events_waits - TRUNCATE EVENTS_WAITS_HISTORY - TRUNCATE EVENTS_WAITS_HISTORY_LONG */ - volatile events_waits_class m_wait_class; + events_waits_class m_wait_class; /** Executing thread. */ PFS_thread *m_thread; /** Instrument metadata. */ === modified file 'storage/perfschema/table_events_waits.cc' --- a/storage/perfschema/table_events_waits.cc 2010-07-23 17:08:41 +0000 +++ b/storage/perfschema/table_events_waits.cc 2010-08-12 10:21:22 +0000 @@ -217,16 +217,8 @@ void table_events_waits_common::make_row or 8 atomics per recorded event. The problem is that we record a *lot* of events ... - Instead, a *dirty* marking is done using m_wait_class. - Using m_wait_class alone does not guarantee anything, it just filters - out most of the bad data. - This is acceptable because this code is garbage-proof, - and won't crash on bad data, only display it, - very rarely (which is accepted). - - If a bad record is displayed, it's a very transient failure: - the next select * from EVENTS_WAITS_CURRENT/_HISTORY/_HISTORY_LONG will - show clean data again. + This code is prepared to accept *dirty* records, + and sanitizes all the data before returning a row. */ m_row.m_thread_internal_id= safe_thread->m_thread_internal_id; --===============4745239364257147842== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-\ # merge/ # testament_sha1: 053d875229a54768089662bc5b4d1485ab2d76ce # timestamp: 2010-08-12 04:53:28 -0600 # source_branch: file:///Users/malff/BZR_TREE/mysql-trunk-bugfixing/ # base_revision_id: dao-gang.qu@stripped\ # o647khcyjj0siu7g # # Begin bundle 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 --===============4745239364257147842==--