Merge from develop
Merge from develop
This commit is contained in:
@ -1248,7 +1248,7 @@ getUsers(SERVICE *service, USERS *users)
|
|||||||
LOGIF(LE, (skygw_log_write_flush(
|
LOGIF(LE, (skygw_log_write_flush(
|
||||||
LOGFILE_ERROR,
|
LOGFILE_ERROR,
|
||||||
"Error : Unable to get user data from backend database "
|
"Error : Unable to get user data from backend database "
|
||||||
"for service [%s]. No available servers.",
|
"for service [%s]. Failed to connect to any of the backend databases.",
|
||||||
service->name)));
|
service->name)));
|
||||||
mysql_close(con);
|
mysql_close(con);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -114,6 +114,7 @@ EXTERNCMD* externcmd_allocate(char* argstr)
|
|||||||
externcmd_free(cmd);
|
externcmd_free(cmd);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
skygw_log_write(LT, "Executing script %s.", cmd->parameters[0]);
|
||||||
}
|
}
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
@ -294,31 +294,37 @@ bool mon_print_fail_status(
|
|||||||
return succp;
|
return succp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void monitor_launch_script(MONITOR* mon,MONITOR_SERVERS* ptr, char* script)
|
/**
|
||||||
|
* Launch a script
|
||||||
|
* @param mon Owning monitor
|
||||||
|
* @param ptr The server which has changed state
|
||||||
|
* @param script Script to execute
|
||||||
|
*/
|
||||||
|
void monitor_launch_script(MONITOR* mon, MONITOR_SERVERS* ptr, char* script)
|
||||||
{
|
{
|
||||||
char argstr[PATH_MAX + MON_ARG_MAX + 1];
|
char argstr[PATH_MAX + MON_ARG_MAX + 1];
|
||||||
EXTERNCMD* cmd;
|
EXTERNCMD* cmd;
|
||||||
|
|
||||||
snprintf(argstr,PATH_MAX + MON_ARG_MAX,
|
snprintf(argstr, PATH_MAX + MON_ARG_MAX,
|
||||||
"%s --event=%s --initiator=%s:%d --nodelist=",
|
"%s --event=%s --initiator=%s:%d --nodelist=",
|
||||||
script,
|
script,
|
||||||
mon_get_event_name(ptr),
|
mon_get_event_name(ptr),
|
||||||
ptr->server->name,
|
ptr->server->name,
|
||||||
ptr->server->port);
|
ptr->server->port);
|
||||||
|
|
||||||
mon_append_node_names(mon->databases,argstr,PATH_MAX + MON_ARG_MAX);
|
mon_append_node_names(mon->databases, argstr, PATH_MAX + MON_ARG_MAX);
|
||||||
if((cmd = externcmd_allocate(argstr)) == NULL)
|
if ((cmd = externcmd_allocate(argstr)) == NULL)
|
||||||
{
|
{
|
||||||
skygw_log_write(LE,"Failed to initialize script: %s",script);
|
skygw_log_write(LE, "Failed to initialize script: %s", script);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(externcmd_execute(cmd))
|
if (externcmd_execute(cmd))
|
||||||
{
|
{
|
||||||
skygw_log_write(LOGFILE_ERROR,
|
skygw_log_write(LOGFILE_ERROR,
|
||||||
"Error: Failed to execute script "
|
"Error: Failed to execute script "
|
||||||
"'%s' on server state change event %s.",
|
"'%s' on server state change event %s.",
|
||||||
script,mon_get_event_type(ptr));
|
script, mon_get_event_name(ptr));
|
||||||
}
|
}
|
||||||
externcmd_free(cmd);
|
externcmd_free(cmd);
|
||||||
}
|
}
|
||||||
|
@ -713,6 +713,7 @@ gw_MySQLWrite_backend(DCB *dcb, GWBUF *queue)
|
|||||||
MySQLProtocol *backend_protocol = dcb->protocol;
|
MySQLProtocol *backend_protocol = dcb->protocol;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
CHK_DCB(dcb);
|
||||||
spinlock_acquire(&dcb->authlock);
|
spinlock_acquire(&dcb->authlock);
|
||||||
/**
|
/**
|
||||||
* Pick action according to state of protocol.
|
* Pick action according to state of protocol.
|
||||||
@ -722,10 +723,12 @@ gw_MySQLWrite_backend(DCB *dcb, GWBUF *queue)
|
|||||||
switch (backend_protocol->protocol_auth_state) {
|
switch (backend_protocol->protocol_auth_state) {
|
||||||
case MYSQL_HANDSHAKE_FAILED:
|
case MYSQL_HANDSHAKE_FAILED:
|
||||||
case MYSQL_AUTH_FAILED:
|
case MYSQL_AUTH_FAILED:
|
||||||
LOGIF(LE, (skygw_log_write_flush(
|
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,
|
||||||
LOGFILE_ERROR,
|
"Error : Unable to write to backend '%s' due to "
|
||||||
"Error : Unable to write to backend due to "
|
"%s failure. Server in state %s.",
|
||||||
"authentication failure.")));
|
dcb->server->unique_name,
|
||||||
|
backend_protocol->protocol_auth_state == MYSQL_HANDSHAKE_FAILED ? "handshake" : "authentication",
|
||||||
|
STRSRVSTATUS(dcb->server))));
|
||||||
/** Consume query buffer */
|
/** Consume query buffer */
|
||||||
while ((queue = gwbuf_consume(
|
while ((queue = gwbuf_consume(
|
||||||
queue,
|
queue,
|
||||||
|
@ -814,7 +814,6 @@ uint8_t *ptr;
|
|||||||
int len;
|
int len;
|
||||||
int var_block_len;
|
int var_block_len;
|
||||||
int statement_len;
|
int statement_len;
|
||||||
int checksum_len=0;
|
|
||||||
int found_chksum = 0;
|
int found_chksum = 0;
|
||||||
int event_error = 0;
|
int event_error = 0;
|
||||||
unsigned long transaction_events = 0;
|
unsigned long transaction_events = 0;
|
||||||
@ -1189,7 +1188,6 @@ double average_bytes = 0;
|
|||||||
check_alg,
|
check_alg,
|
||||||
check_alg == 1 ? "BINLOG_CHECKSUM_ALG_CRC32" : "NONE or UNDEF")));
|
check_alg == 1 ? "BINLOG_CHECKSUM_ALG_CRC32" : "NONE or UNDEF")));
|
||||||
if (check_alg == 1) {
|
if (check_alg == 1) {
|
||||||
checksum_len = 4;
|
|
||||||
found_chksum = 1;
|
found_chksum = 1;
|
||||||
} else {
|
} else {
|
||||||
found_chksum = 0;
|
found_chksum = 0;
|
||||||
@ -1275,8 +1273,6 @@ double average_bytes = 0;
|
|||||||
var_block_len = ptr[4 + 4 + 1 + 2];
|
var_block_len = ptr[4 + 4 + 1 + 2];
|
||||||
|
|
||||||
statement_len = hdr.event_size - 19 - (4+4+1+2+2+var_block_len+1+db_name_len);
|
statement_len = hdr.event_size - 19 - (4+4+1+2+2+var_block_len+1+db_name_len);
|
||||||
//if (checksum_len)
|
|
||||||
// statement_len -= checksum_len;
|
|
||||||
|
|
||||||
statement_sql = calloc(1, statement_len+1);
|
statement_sql = calloc(1, statement_len+1);
|
||||||
strncpy(statement_sql, (char *)ptr+4+4+1+2+2+var_block_len+1+db_name_len, statement_len);
|
strncpy(statement_sql, (char *)ptr+4+4+1+2+2+var_block_len+1+db_name_len, statement_len);
|
||||||
@ -1321,8 +1317,6 @@ double average_bytes = 0;
|
|||||||
|
|
||||||
if(hdr.event_type == XID_EVENT) {
|
if(hdr.event_type == XID_EVENT) {
|
||||||
/* Commit received for a transactional tables, i.e. InnoDB */
|
/* Commit received for a transactional tables, i.e. InnoDB */
|
||||||
uint64_t xid;
|
|
||||||
xid = extract_field(ptr, 64);
|
|
||||||
|
|
||||||
if (pending_transaction > 0) {
|
if (pending_transaction > 0) {
|
||||||
pending_transaction = 2;
|
pending_transaction = 2;
|
||||||
|
Reference in New Issue
Block a user