List:Commits« Previous MessageNext Message »
From:Daogang Qu Date:November 24 2009 8:53am
Subject:Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)
Bug#42851
View as plain text  
Hi Jon,
Thanks for the good comments.

Best Regards,

Daogang

Jon Stephens wrote:
>
> Hi!
>
> Comments inline. Note that I've given you a bit more then you asked 
> for... :)
>
> Daogang Qu wrote:
>> Davi Arnaut wrote:
>>> Hi Dao-Gang,
>>>
>>> A few comments below.
>>>
>>> On 11/23/09 6:42 AM, Dao-Gang.Qu@stripped wrote:
>>>> #At 
>>>> file:///home/daogangqu/mysql/bzrwork/bug42851/mysql-5.1-bugteam/ 
>>>> based on revid:davi.arnaut@stripped
>>>>
>>>>   3192 Dao-Gang.Qu@stripped    2009-11-23
>>>>        Bug #42851      Spurious "Statement is not safe to log in 
>>>> statement format." warnings
>>>>
>>>>        Warnings in error log make error log grow too large.
>>>>
>>>>        The problem can be resolved by limiting the rate of messages 
>>>> that are
>>>>        written to the log. A volume of messages that is less than 
>>>> or equal to
>>>>        the specified rate is written to the log, whereas the volume 
>>>> of messages
>>>>        that exceeds the rate is discarded.
>>>>
>>>>        For example,
>>>>
>>>>        log-warnings-ratelimit-interval = 10
>>>>        log-warnings-ratelimit-burst = 5
>>>>
>>>>        This allows 5 log messages per 10 seconds. The sixth (and 
>>>> posterior)
>
> s/posterior/subsequent/
>
> "Posterior" means "the back of something" or "the end of something". 
> It's also a synonym for for the place on the human body that makes 
> contact with the chair when we sit down. :)
>
> "Subsequent" means "later" or "following".
>
>>>>        attempts to write a log message within a 10 seconds interval 
>>>> are
>>>>        discarded.
>>>
>>> [..]
>>>
>>>> +
>>>> +void Log_to_file_event_handler::rate_limit_exceeded()
>>>> +{
>>>> +  sql_print_error("log-warnings-ratelimit-burst parameter's value 
>>>> (N) \
>>>> +exceeded; discarding the rest of error messages");
>>>
>>> Please, break the string in a way that preserves indentation:
>>>
>>> sql_print_errror("log-warnings-ratelimit-burst parameter's value (N) "
>>>                  "exceeded; discarding the rest of error messages");
>>>
>>> and the message looks like broken english. 
>
> This message looks okay to me, but for an error message, I'd rather 
> discard the "'s".
>
> Also, these options suppress warnings, but not errors, correct? SO the 
> message to should refer to "warnings", not "error messages".
>
>>> What is N? 
>
> I would assume that it's the value the user has set for 
> log-warnings-ratelimit-burst, and this is what I would expect to be 
> shown.
>
> Also, I think the option names themselves are not very good. They're 
> too long, "ratelimit" isn't a word, and "rate-limit" is basically 
> noise; so I *strongly* recommend that these two options be renamed as 
> follows:
>
> log-warnings-interval (for log-warnings-ratelimit-interval)
> log-warnings-volume (for log-warning-ratelimit-burst)
>
> If I were reviewing this patch, I would *insist* that the options be 
> renamed before I'd approve it... but since I am just a humble tech 
> writer who doesn't actually get to tell anybody what to do, I only get 
> to make annoying suggestions.
>
> The words "interval" and "volume" are sufficiently descriptive IMO.
>
> So we'd wind up with something like this
>
> sql_print_error("log-warnings-volume (%s) exceeded; skipping additional"
>                 "warnings for this log-warnings-interval (%s seconds)";
>
> The %s placeholders should be replaced by the current values of 
> log-warnings-interval and log-warnings-limit, respectively. If it's 
> not possible to retrieve these values and insert them into the 
> message, then drop the "(%s)" and "(%s seconds)" but don't stick a 
> literal "(N)" in there -- that's just confusing.
>
> This might seem a little long, but it tells the user exactly what's 
> going on.
>
>>> Please, consult the documentation team if you think the original 
>>> messages weren't clear enough -- which i think were good enough, if 
>>> a user does not understand it, he should look it up in the docs 
>>> where he/she will find a extended explanation.
>
> Well, you've asked this member of the docs team, and this member of 
> the docs team thinks that warning and error messages should actually 
> tell the user what's going on. :)
>
>> Hi Jon,
>> What's your idea about the description?
>>
>> Davi still like the original info as following:
>> sql_print_error("Burst exceeded, rate limiting.");
>
> I don't like this "message" at all -- it's highly 
> broken/ambiguous/non-descriptive.
>
> All it does is to invite questions: "What's a 'burst'? Exceeding it in 
> what way?"; "'Rate limiting'? Do you mean 'limiting rate'? What rate? 
> Limited how?"
>
> "RTFM" should *never* be used as an excuse for poor design choices, 
> especially when it comes to crucial info such as error messages and 
> warnings. For shame!
>
> My 2 öre,
>
> jon.
>
>>
>> Best Regards,
>>
>> Daogang
>>>
>>>> +}
>>>> +
>>>> +void Log_to_file_event_handler::rate_limit_reset(unsigned int 
>>>> suppressed)
>>>> +{
>>>> +  sql_print_error("Rate limit lifted, %u warning messages were 
>>>> suppressed.",
>>>> +                  suppressed);
>>>>   }
>>>>
>>>>   void Log_to_file_event_handler::init_pthread_objects()
>>>>
>>>> === modified file 'sql/log.h'
>>>> --- a/sql/log.h    2009-06-18 13:52:46 +0000
>>>> +++ b/sql/log.h    2009-11-23 08:42:40 +0000
>>>> @@ -16,6 +16,9 @@
>>>>   #ifndef LOG_H
>>>>   #define LOG_H
>>>>
>>>> +extern ulong log_warnings_ratelimit_interval;
>>>> +extern ulong log_warnings_ratelimit_burst;
>>>> +
>>>>   class Relay_log_info;
>>>>
>>>>   class Format_description_log_event;
>>>> @@ -459,15 +462,88 @@ public:
>>>>   };
>>>>
>>>>
>>>> +/**
>>>> +  Rate limiter.
>>>> +*/
>>>> +
>>>> +class Rate_limit
>>>> +{
>>>> +  public:
>>>> +    Rate_limit() : m_count(0), m_suppressed(0), m_begin(0),
>>>> +                   interval(0), burst(0)
>>>> +    {}
>>>
>>> Please add a virtual destructor.
>>>
>>
>>
>
>

Thread
bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192) Bug#42851Dao-Gang.Qu23 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut23 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Daogang Qu24 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Daogang Qu24 Nov
      • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Jon Stephens24 Nov
        • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Daogang Qu24 Nov
        • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut24 Nov
          • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Jon Stephens25 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Daogang Qu24 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Jon Stephens25 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Daogang Qu25 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut24 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut24 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851He Zhenxing26 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut24 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851He Zhenxing26 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut26 Nov
  • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851He Zhenxing27 Nov
    • Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut27 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut26 Nov
Re: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3192)Bug#42851Davi Arnaut26 Nov