Added error handling in BINLOG_DUMP phase
Added error handling in BINLOG_DUMP phase: router goes into BLRM_SLAVE_STOPPED state Removed blr_file_add_magic called twice
This commit is contained in:
@ -37,6 +37,7 @@
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
#include <memlog.h>
|
#include <memlog.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
#define BINLOG_FNAMELEN 16
|
#define BINLOG_FNAMELEN 16
|
||||||
#define BLR_PROTOCOL "MySQLBackend"
|
#define BLR_PROTOCOL "MySQLBackend"
|
||||||
|
@ -218,9 +218,8 @@ int fd;
|
|||||||
close(router->binlog_fd);
|
close(router->binlog_fd);
|
||||||
spinlock_acquire(&router->binlog_lock);
|
spinlock_acquire(&router->binlog_lock);
|
||||||
strncpy(router->binlog_name, file,BINLOG_FNAMELEN);
|
strncpy(router->binlog_name, file,BINLOG_FNAMELEN);
|
||||||
blr_file_add_magic(router, fd);
|
|
||||||
spinlock_release(&router->binlog_lock);
|
|
||||||
router->binlog_fd = fd;
|
router->binlog_fd = fd;
|
||||||
|
spinlock_release(&router->binlog_lock);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,12 +261,13 @@ int fd;
|
|||||||
LOGIF(LE, (skygw_log_write(LOGFILE_ERROR,
|
LOGIF(LE, (skygw_log_write(LOGFILE_ERROR,
|
||||||
"%s: binlog file %s has an invalid length %d.",
|
"%s: binlog file %s has an invalid length %d.",
|
||||||
router->service->name, path, router->binlog_position)));
|
router->service->name, path, router->binlog_position)));
|
||||||
close(fd);
|
close(fd);
|
||||||
|
spinlock_release(&router->binlog_lock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spinlock_release(&router->binlog_lock);
|
|
||||||
router->binlog_fd = fd;
|
router->binlog_fd = fd;
|
||||||
|
spinlock_release(&router->binlog_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -246,6 +246,9 @@ blr_master_reconnect(ROUTER_INSTANCE *router)
|
|||||||
{
|
{
|
||||||
int do_reconnect = 0;
|
int do_reconnect = 0;
|
||||||
|
|
||||||
|
if (router->master_state == BLRM_SLAVE_STOPPED)
|
||||||
|
return;
|
||||||
|
|
||||||
spinlock_acquire(&router->lock);
|
spinlock_acquire(&router->lock);
|
||||||
if (router->active_logs)
|
if (router->active_logs)
|
||||||
{
|
{
|
||||||
@ -914,7 +917,8 @@ static REP_HEADER phdr;
|
|||||||
|
|
||||||
blr_extract_header(ptr, &hdr);
|
blr_extract_header(ptr, &hdr);
|
||||||
|
|
||||||
if (hdr.event_size != len - 5) /* Sanity check */
|
/* Sanity check */
|
||||||
|
if (hdr.ok == 0 && hdr.event_size != len - 5)
|
||||||
{
|
{
|
||||||
LOGIF(LE,(skygw_log_write(
|
LOGIF(LE,(skygw_log_write(
|
||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
@ -1146,6 +1150,9 @@ static REP_HEADER phdr;
|
|||||||
free(router->m_errmsg);
|
free(router->m_errmsg);
|
||||||
router->m_errmsg = msg_err;
|
router->m_errmsg = msg_err;
|
||||||
|
|
||||||
|
/* Force stopped state */
|
||||||
|
router->master_state = BLRM_SLAVE_STOPPED;
|
||||||
|
|
||||||
spinlock_release(&router->lock);
|
spinlock_release(&router->lock);
|
||||||
|
|
||||||
LOGIF(LE,(skygw_log_write(LOGFILE_ERROR,
|
LOGIF(LE,(skygw_log_write(LOGFILE_ERROR,
|
||||||
|
Reference in New Issue
Block a user