Li Bing, hello.
Regarding to the presice error message.
> Andrei Elkin wrote:
>> Li-Bing, hello.
>>
>>
>>> #At file:///home/anders/work/bzrwork/bug42914/mysql-5.1-bugteam/ based on
> revid:davi.arnaut@stripped
>>>
>>> 3069 Li-Bing.Song@stripped 2009-08-25
>>> Bug #42914 Log event that larger than max_allowed_packet results in
> stop of slave I/O thread, But there is no Last_IO_Error reported.
>>> On master, if replicated event larger than
>>> max_allowed_packet,
>>> master sends an error message ER_MASTER_FATAL_ERROR_READING_BINLOG to
> slave.
>>> This message results in stop of slave I/O thread. On
>>> slave, slave I/O thread will stop when receiveing a packet larger
>>> than max_allowed_packet.
>>> In both the cases, there is no Last_IO_Error reported.
>>>
>>
>> ok, almost pretty clear. Just one point, we agreed on repliation
>> meeting that the slave will show the exact reason of stopping.
>> Further, I (actually we, both developers in consencus) suggest how to
>> improve implementation of this idea.
To follow my earlier remark, if we agreed on the clarifying clause
idea the changeset comments would have to reflect that.
>>> goto err;
>>> case ER_MASTER_FATAL_ERROR_READING_BINLOG:
>>> - sql_print_error(ER(mysql_error_number), mysql_error_number,
>>> - mysql_error(mysql));
>>> + mi->report(ERROR_LEVEL, ER_MASTER_FATAL_ERROR_READING_BINLOG,
>>> + ER(ER_MASTER_FATAL_ERROR_READING_BINLOG),
>>> + mysql_error_number, mysql_error(mysql));
>>>
>>
>> But here we don't say what exactly happened on the master. And we
>> could.
>> Look inside mysql_binlog_send() to find
>> test_for_non_eof_log_read_errors() which internally qualifies the
>> exact reason. That's an omission of the existing implementation that
>> the error message corresponding to
>> `ER_MASTER_FATAL_ERROR_READING_BINLOG'
>> is always the same.
>>
>> So we suggest to fix that.
>> Namely,
>>
>> 1. To extend the format line for
>> ER_MASTER_FATAL_ERROR_READING_BINLOG with %s to hold
>> clarifying clause.
>>
>> E.g
>>
>> ER_MASTER_FATAL_ERROR_READING_BINLOG
>> <andrei> eng "Got fatal error %d: '%-.128s' from master when reading data
> from binary log"
>> <andrei> to append
>> <andrei> "specific reason: %s".
>>
>>
> I tried to change errmsg.txt, but I can't.
> The messages are written in different languages.
> and there is a "%-.128s" in the message of
> ER_MASTER_FATAL_ERROR_READING_BINLOG.
> I think it is better to keep the message, though the message is not perfect.
We have the doc team who are to manage multiple languages. And they
don't mind, quoting #rep of today:
<andrei> libing, about the error message though, i think to translate a newer
version is not a big deal. We can get help from Jon and other multi-speakers :-)
* jon hears himself being volunteered for something...
<andrei> libing, if you still think uncomfortable about this idea, i suggest to ask
on #support which of two error messages they would like more.
* mats|phone is now known as mats
<andrei> jon, you're semisynchronously involved :-)
<jon> andrei: ack :)
>> 2. Append a specific reason string arg to
>> the error message generator e.g
>> my_error(ER_MASTER_FATAL_ERROR_READING_BINLOG..., spec_reason).
>> Check with test_for_non_eof_log_read_errors() as well
>> as with lines of mysql_binlog_send() like
>>
>> errmsg = "Binary log is not open";
>> my_errno= ER_MASTER_FATAL_ERROR_READING_BINLOG;
>>
>> what kind of specific reason.
>>
>> After making 1,2 the master shall see some fully qualified error
>> message.
>>
>>
cheers,
Andrei