diff --git a/server/modules/include/blr.h b/server/modules/include/blr.h index 82e4f886f..93011e88f 100644 --- a/server/modules/include/blr.h +++ b/server/modules/include/blr.h @@ -438,7 +438,7 @@ extern void blr_master_reconnect(ROUTER_INSTANCE *); extern int blr_master_connected(ROUTER_INSTANCE *); extern int blr_slave_request(ROUTER_INSTANCE *, ROUTER_SLAVE *, GWBUF *); -extern void blr_slave_rotate(ROUTER_SLAVE *slave, uint8_t *ptr); +extern void blr_slave_rotate(ROUTER_INSTANCE *, ROUTER_SLAVE *, uint8_t *); extern int blr_slave_catchup(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, bool large); extern void blr_init_cache(ROUTER_INSTANCE *); @@ -450,4 +450,8 @@ extern BLFILE *blr_open_binlog(ROUTER_INSTANCE *, char *); extern GWBUF *blr_read_binlog(ROUTER_INSTANCE *, BLFILE *, unsigned int, REP_HEADER *); extern void blr_close_binlog(ROUTER_INSTANCE *, BLFILE *); extern unsigned long blr_file_size(BLFILE *); +extern int blr_statistics(ROUTER_INSTANCE *, ROUTER_SLAVE *, GWBUF *); +extern int blr_ping(ROUTER_INSTANCE *, ROUTER_SLAVE *, GWBUF *); +extern int blr_send_custom_error(DCB *, int, int, char *); +extern int blr_file_next_exists(ROUTER_INSTANCE *, ROUTER_SLAVE *); #endif diff --git a/server/modules/routing/binlog/blr_master.c b/server/modules/routing/binlog/blr_master.c index f074e3ce6..75ef9e7b9 100644 --- a/server/modules/routing/binlog/blr_master.c +++ b/server/modules/routing/binlog/blr_master.c @@ -1300,7 +1300,7 @@ int action; memcpy(buf, ptr, hdr->event_size); if (hdr->event_type == ROTATE_EVENT) { - blr_slave_rotate(slave, ptr); + blr_slave_rotate(router, slave, ptr); } slave->stats.n_bytes += gwbuf_length(pkt); slave->dcb->func.write(slave->dcb, pkt); diff --git a/server/modules/routing/binlog/blr_slave.c b/server/modules/routing/binlog/blr_slave.c index addb8202b..a57de98a1 100644 --- a/server/modules/routing/binlog/blr_slave.c +++ b/server/modules/routing/binlog/blr_slave.c @@ -614,7 +614,7 @@ int len, file_len; sprintf(file, "%s", router->binlog_name); file_len = strlen(file); - sprintf(position, "%d", router->binlog_position); + sprintf(position, "%ld", router->binlog_position); len = 5 + file_len + strlen(position) + 1 + 3; if ((pkt = gwbuf_alloc(len)) == NULL) return 0; @@ -1350,7 +1350,7 @@ unsigned long beat1 = hkheartbeat; if (hkheartbeat - beat1 > 1) LOGIF(LE, (skygw_log_write( LOGFILE_ERROR, "blr_close_binlog took %d beats", hkheartbeat - beat1))); - blr_slave_rotate(slave, GWBUF_DATA(record)); + blr_slave_rotate(router, slave, GWBUF_DATA(record)); beat1 = hkheartbeat; if ((slave->file = blr_open_binlog(router, slave->binlogfile)) == NULL) { @@ -1555,13 +1555,13 @@ ROUTER_INSTANCE *router = slave->router; * @param ptr The rotate event (minus header and OK byte) */ void -blr_slave_rotate(ROUTER_SLAVE *slave, uint8_t *ptr) +blr_slave_rotate(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, uint8_t *ptr) { int len = EXTRACT24(ptr + 9); // Extract the event length - len = len - (19 + 8); // Remove length of header and position - if (!slave->nocrc) - len -= 4; // Rmove length of checksum if present + len = len - (19 + 8); // Remove length of header and position + if (router->master_chksum) + len -= 4; if (len > BINLOG_FNAMELEN) len = BINLOG_FNAMELEN; ptr += 19; // Skip header