Fix binlogrouter deadlock on reconnect

The master reconnection in the binlogrouter used the housekeeper
recursively. This is no longer supported and the delayed worker call
mechanism should be used in its stead.
This commit is contained in:
Markus Mäkelä
2018-08-29 11:03:51 +03:00
parent 54dca0963a
commit 178d31af27
3 changed files with 21 additions and 73 deletions

View File

@ -38,8 +38,6 @@
#include <maxscale/sqlite3.h>
#include <maxscale/mysql_binlog.h>
MXS_BEGIN_DECLS
#define BINLOG_FNAMELEN 255
#define BLR_PROTOCOL "MySQLBackend"
#define BINLOG_MAGIC { 0xfe, 0x62, 0x69, 0x6e }
@ -1027,7 +1025,7 @@ extern const char *blr_skip_leading_sql_comments(const char *);
extern bool blr_fetch_mariadb_gtid(ROUTER_SLAVE *,
const char *,
MARIADB_GTID_INFO *);
extern bool blr_start_master_in_main(void* data);
extern bool blr_start_master_in_main(ROUTER_INSTANCE* data, int32_t delay = 0);
extern bool blr_binlog_file_exists(ROUTER_INSTANCE *router,
const MARIADB_GTID_INFO *info_file);
@ -1039,7 +1037,6 @@ void blr_handle_fake_gtid_list(ROUTER_INSTANCE *router, REP_HEADER *hdr, uint8_t
void blr_master_close(ROUTER_INSTANCE *);
void blr_notify_all_slaves(ROUTER_INSTANCE *router);
bool blr_save_mariadb_gtid(ROUTER_INSTANCE *inst);
void blr_master_delayed_connect(ROUTER_INSTANCE *router);
/**
* Handler for binlog events
@ -1058,6 +1055,4 @@ void blr_master_delayed_connect(ROUTER_INSTANCE *router);
bool blr_handle_one_event(MXS_ROUTER* instance, REP_HEADER& hdr, uint8_t* ptr, uint32_t len,
int semi_sync_send_ack);
MXS_END_DECLS
#endif