From: Andrei Elkin Date: August 27 2012 7:02am Subject: bzr push into mysql-trunk branch (andrei.elkin:4334 to 4335) List-Archive: http://lists.mysql.com/commits/144627 Message-Id: <201208270702.q7R72I3g013929@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4335 Andrei Elkin 2012-08-27 [merge] merging from 5.6. modified: sql/rpl_rli_pdb.cc 4334 Aditya A 2012-08-27 BUG#11761646 - INNODB SHOULD RETRY ON FAILED READ OR WRITE, NOT IMMEDIATELY PANIC Related: http://bugs.mysql.com/bug.php?id=54430 (innodb should retry partial reads/writes where errno was 0) Summary ------- In the Linux flavours the read and write system calls can do partial reads and writes. The man page of read says that " The return value is is smaller than the number of bytes requested; this may happen for example because fewer bytes are actually available right now (maybe because we were close to end-of-file,or because we are reading from a pipe, or from a terminal), or because read() was interrupted by a signal." The Fix ------- Initially InnoDB was not handling the partial read and writes.With this fix innodb tries NUM_RETRIES_ON_PARTIAL_IO (which by default is equal to 10)times to read or write the partial data .The fix also takes care of partial read and write in case of Linux native API's where read and write are asynyncronus operations. rb:1158 [approved by inaam.rana] modified: storage/innobase/os/os0file.cc === modified file 'sql/rpl_rli_pdb.cc' --- a/sql/rpl_rli_pdb.cc 2012-08-24 16:12:06 +0000 +++ b/sql/rpl_rli_pdb.cc 2012-08-27 07:01:33 +0000 @@ -165,8 +165,8 @@ int Slave_worker::init_worker(Relay_log_ wq_overrun_cnt= 0; // overrun level is symmetric to underrun (as underrun to the full queue) - overrun_level= (ulong) ((100 - rli->mts_worker_underrun_level) * jobs.size) - / 100.0; + overrun_level= + (ulong) (((100 - rli->mts_worker_underrun_level) * jobs.size) / 100.0); DBUG_RETURN(0); } No bundle (reason: useless for push emails).