summaryrefslogtreecommitdiff
path: root/cmake/zlib.cmake
diff options
context:
space:
mode:
authorSujatha <sujatha.sivakumar@mariadb.com>2021-04-30 18:12:43 +0530
committerSujatha <sujatha.sivakumar@mariadb.com>2021-04-30 20:34:31 +0530
commitabe6eb10a65d5c28c221d756357b4e7f392ad13d (patch)
tree4a919ed0baed61bb442397e7f6c1f6a33999cafe /cmake/zlib.cmake
parent13b9af50e42e9de9d8e540b2c59f763cc8041a42 (diff)
downloadmariadb-git-abe6eb10a65d5c28c221d756357b4e7f392ad13d.tar.gz
MDEV-16146: MariaDB slave stops with following errors.
Problem: ======== 180511 11:07:58 [ERROR] Slave I/O: Unexpected master's heartbeat data: heartbeat is not compatible with local info;the event's data: log_file_name mysql-bin.000009 log_pos 1054262041, Error_code: 1623 Analysis: ========= In replication setup when master server doesn't have any events to send to slave server it sends an 'Heartbeat_log_event'. This event carries the current binary log filename and offset details. The offset values is stored within 4 bytes of event header. When the size of binary log is higher than UINT32_MAX the log_pos values will not fit in 4 bytes memory. It overflows and hence slave stops with an error. Fix: === Since we cannot extend the common_header of Log_event class, a greater than 4GB value of Log_event::log_pos is made to be transported with a HeartBeat event's sub-header. Log_event::log_pos in such case is set to zero to indicate that the 8 byte sub-header is allocated in the event. In case of cross version replication following behaviour is expected OLD - Server without fix NEW - Server with fix OLD<->NEW : works bidirectionally as long as the binlog offset is (normally) within 4GB. When log_pos > UINT32_MAX OLD->NEW : The 'log_pos' is bound to overflow and NEW slave may report an invalid event/incompatible heart beat event error. NEW->OLD : Since patched server sets log_pos=0 on overflow, OLD slave will report invalid event error.
Diffstat (limited to 'cmake/zlib.cmake')
0 files changed, 0 insertions, 0 deletions