List:Commits« Previous MessageNext Message »
From:Guilhem Bichot Date:August 26 2009 8:52am
Subject:Re: bzr commit into mysql-5.4-perfschema branch (marc.alff:2852)
WL#2360
View as plain text  
Hello Marc,

Guilhem Bichot a écrit, Le 25.08.2009 16:25:
> Hello Marc,
> 
> Marc Alff a écrit, Le 19.08.2009 10:06:
>> #At file:///home/malff/BZR_TREE/mysql-azalea-perfschema/ based on 
>> revid:marc.alff@stripped
>>
>>  2852 Marc Alff    2009-08-19
>>       WL#2360 PERFORMANCE SCHEMA
>>             Implemented calls to table_check_intact() for performance 
>> schema
>>       tables, per code review comments.
> 
> Thanks, patch is fine except one decision which I wonder about:
> 
>> +/**
>> +  Check that the performance schema tables
>> +  have the expected structure.
>> +  Discrepancies are written in the server log,
>> +  but are not considered fatal, so this function does not
>> +  return an error code:
>> +  - some differences are compatible, and should not cause a failure
>> +  - some differences are not compatible, but then the DBA needs an 
>> operational
>> +  server to be able to DROP+CREATE the tables with the proper structure,
>> +  as part of the initial server installation or during an upgrade.
>> +*/
>> +void check_performance_schema()
>> +{
> 
> The decision to let P_S enabled if tables don't match...
> 
> This half-defeats the purpose of the check. DBA may not look in the 
> error log all the time; monitoring application may start querying P_S 
> right after an upgrade, server crashes in P_S code may then immediately 
> happen.
> If a mismatch in tables allowed the server to start but with P_S disabled:
> - the second case above ("some differences are not compatible, but then 
> the DBA needs an operational server" etc) is still OK: the server is 
> functional enough to do DROP+CREATE on P_S tables.
> - the first case ("some differences are compatible, and should not cause 
> a failure"): I see in table_check_intact() that it already makes efforts 
> to be tolerant; we can see those comments:
> 
>       Let's check column definitions. If a column was added at
>       the end of the table, then we don't care much since such change
>       is backward compatible.
> ...
>           Name changes are not fatal, we use ordinal numbers to access 
> columns.
>           Still this can be a sign of a tampered table, output an error
>           to the error log.
> ...
>         Generally, if column types don't match, then something is
>         wrong.
> 
>         However, we only compare column definitions up to the
>         length of the original definition, since we consider the
>         following definitions compatible:
> 
>         1. DATETIME and DATETIM
>         2. INT(11) and INT(11
>         3. SET('one', 'two') and SET('one', 'two', 'more')
> 
>         For SETs or ENUMs, if the same prefix is there it's OK to
>         add more elements - they will get higher ordinal numbers and
>         the new table definition is backward compatible with the
>         original one.
> ...
> 
> So I would rather say that if table_check_intact() said "not OK", P_S 
> should trust that something may well go wrong, and we should not the 
> user run into it, so we should let the server run without P_S.

for what it's worth, I tested how the Event Scheduler behaves when it 
finds (via table_check_intact()) that mysql.event has been changed:

I dropped mysql.event, recreated it (but with an INT column changed to 
FLOAT), then restarted mysqld and:
090826 10:50:08 [ERROR] Incorrect definition of table mysql.event: 
expected column 'interval_value' at position 5 to have type int(11), 
found type float.
090826 10:50:08 [ERROR] Event Scheduler: An error occurred when 
initializing system tables. Disabling the Event Scheduler.
090826 10:50:08 [Note] 
/home/mysql_src/bzrrepos/mysql-azalea-perfschema/sql/mysqld: ready for 
connections.

so mysqld starts with Event scheduler disabled.
Thread
bzr commit into mysql-5.4-perfschema branch (marc.alff:2852) WL#2360Marc Alff19 Aug
  • Re: bzr commit into mysql-5.4-perfschema branch (marc.alff:2852)WL#2360Guilhem Bichot25 Aug
    • Re: bzr commit into mysql-5.4-perfschema branch (marc.alff:2852)WL#2360Guilhem Bichot26 Aug