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).
| Thread |
|---|
| • bzr push into mysql-trunk branch (andrei.elkin:4334 to 4335) | Andrei Elkin | 27 Aug |