List:Commits« Previous MessageNext Message »
From:alfranio correia Date:November 11 2008 5:05pm
Subject:Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)
Bug#31665 Bug#35542 Bug#40337
View as plain text  
alfranio correia wrote:
> He Zhenxing wrote:
>   
>> alfranio correia wrote:
>>   
>>     
>>> Hi,
>>>
>>>
>>> In-line comments.
>>>
>>> He Zhenxing wrote:
>>>     
>>>       
>>>> alfranio correia wrote: 
>>>>   
>>>>       
>>>>         
>>>>> Alfranio Correia wrote:
>>>>>     
>>>>>         
>>>>>           
>>>>>> #At
> file:///home/acorreia/workspace.sun/playground.mysql/mysql-5.0.68-custom_build/
>>>>>>
>>>>>>  2704 Alfranio Correia	2008-11-07
>>>>>>       Added option to sync master.info (--sync-master-info,
> integer) 
>>>>>>       and relay log (--sync-relay-log, integer) to disk after 
>>>>>>       every event and the relay info (--sync-relay-log-info,
> boolean) per transaction. 
>>>>>>       This supersedes the patch proposed 
>>>>>>       by Sinisa and modified by He Zhenxing to fix bugs:
> BUG#35542 and BUG#31665. This is an update to BUG#40337.
>>>>>> modified:
>>>>>>   sql/log.cc
>>>>>>   sql/mysql_priv.h
>>>>>>   sql/mysqld.cc
>>>>>>   sql/set_var.cc
>>>>>>   sql/set_var.h
>>>>>>   sql/slave.cc
>>>>>>   sql/sql_class.h
>>>>>>
>>>>>> === modified file 'sql/log.cc'
>>>>>> --- a/sql/log.cc	2008-07-24 12:28:21 +0000
>>>>>> +++ b/sql/log.cc	2008-11-07 19:21:48 +0000
>>>>>> @@ -32,8 +32,7 @@
>>>>>>  #include "message.h"
>>>>>>  #endif
>>>>>>  
>>>>>> -MYSQL_LOG mysql_log, mysql_slow_log, mysql_bin_log;
>>>>>> -ulong sync_binlog_counter= 0;
>>>>>> +MYSQL_LOG mysql_log, mysql_slow_log,
> mysql_bin_log(&sync_binlog_period);
>>>>>>  
>>>>>>  static Muted_query_log_event invisible_commit;
>>>>>>  
>>>>>> @@ -402,10 +401,11 @@ static int find_uniq_filename(char *name
>>>>>>  }
>>>>>>  
>>>>>>  
>>>>>> -MYSQL_LOG::MYSQL_LOG()
>>>>>> +MYSQL_LOG::MYSQL_LOG(uint *sync_period)
>>>>>>    :bytes_written(0), last_time(0), query_start(0), name(0),
>>>>>>     prepared_xids(0), log_type(LOG_CLOSED), file_id(1),
> open_count(1),
>>>>>>     write_error(FALSE), inited(FALSE), need_start_event(TRUE),
>>>>>> +   sync_period_ptr(sync_period),
>>>>>>     description_event_for_exec(0),
> description_event_for_queue(0)
>>>>>>  {
>>>>>>    /*
>>>>>> @@ -1622,6 +1622,8 @@ bool MYSQL_LOG::append(Log_event* ev)
>>>>>>    }
>>>>>>    bytes_written+= ev->data_written;
>>>>>>    DBUG_PRINT("info",("max_size: %lu",max_size));
>>>>>> +  if (flush_and_sync())
>>>>>> +    goto err;
>>>>>>    if ((uint) my_b_append_tell(&log_file) > max_size)
>>>>>>      new_file(0);
>>>>>>  
>>>>>> @@ -1652,6 +1654,8 @@ bool MYSQL_LOG::appendv(const char* buf,
>>>>>>      bytes_written += len;
>>>>>>    } while ((buf=va_arg(args,const char*)) &&
> (len=va_arg(args,uint)));
>>>>>>    DBUG_PRINT("info",("max_size: %lu",max_size));
>>>>>> +  if (flush_and_sync())
>>>>>> +    goto err;
>>>>>>    if ((uint) my_b_append_tell(&log_file) > max_size)
>>>>>>      new_file(0);
>>>>>>  
>>>>>> @@ -1758,9 +1762,10 @@ bool MYSQL_LOG::flush_and_sync()
>>>>>>    safe_mutex_assert_owner(&LOCK_log);
>>>>>>    if (flush_io_cache(&log_file))
>>>>>>      return 1;
>>>>>> -  if (++sync_binlog_counter >= sync_binlog_period &&
> sync_binlog_period)
>>>>>> +  uint sync_period= get_sync_period();
>>>>>> +  if (sync_period && ++sync_counter >= sync_period)
>>>>>>    {
>>>>>> -    sync_binlog_counter= 0;
>>>>>> +    sync_counter= 0;
>>>>>>      err=my_sync(fd, MYF(MY_WME));
>>>>>>    }
>>>>>>    return err;
>>>>>>
>>>>>> === modified file 'sql/mysql_priv.h'
>>>>>> --- a/sql/mysql_priv.h	2008-10-02 11:57:52 +0000
>>>>>> +++ b/sql/mysql_priv.h	2008-11-07 19:21:48 +0000
>>>>>> @@ -1310,7 +1310,8 @@ extern ulong max_binlog_size, max_relay_
>>>>>>  extern ulong rpl_recovery_rank, thread_cache_size;
>>>>>>  extern ulong back_log;
>>>>>>  extern ulong specialflag, current_pid;
>>>>>> -extern ulong expire_logs_days, sync_binlog_period,
> sync_binlog_counter;
>>>>>> +extern ulong expire_logs_days;
>>>>>> +extern uint sync_binlog_period, sync_relaylog_period,
> sync_relayloginfo_period, sync_masterinfo_period;
>>>>>>   
>>>>>>       
>>>>>>           
>>>>>>             
>>>>> Jasonh, any reason to change from ulong to uint?
>>>>>
>>>>>     
>>>>>         
>>>>>           
>>>> read and write int are supposed to be atomic on all platforms supported
>>>> by MySQL, so we don't need to add LOCKs to protect the access of these
>>>> variables. And we cannot expect the same for long.
>>>>
>>>>   
>>>>       
>>>>         
>>> Do we really need this?
>>> I think we can survive without the atomicity in this case.
>>>
>>>     
>>>       
>> these variables can be changed by user at runtime by using SET command,
>> so it is possible that two threads are reading and writing the value of
>> the variable at the same time.
>>
>> [snip]
>>   
>>     
> My point is that we don't need any mutex, atomic variables, etc, etc.
> You are not updating a structure that will be corrupted due to a race
> condition.
> Anyway, I will keep the integer value.
>
>   
Jasonh, forget this last comment... you are completely right.
;)
Thread
bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704) Bug#31665Bug#35542 Bug#40337Alfranio Correia7 Nov
  • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337alfranio correia9 Nov
    • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337He Zhenxing10 Nov
      • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337alfranio correia10 Nov
        • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337He Zhenxing11 Nov
          • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337alfranio correia11 Nov
            • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337alfranio correia11 Nov
              • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337He Zhenxing12 Nov
            • Re: bzr commit into mysql-5.0-bugteam branch (alfranio.correia:2704)Bug#31665 Bug#35542 Bug#40337He Zhenxing12 Nov