changed stop/start slave error message
changed stop/start slave error message including errors code and status message ERROR 1254 (HY000): Slave connection is already running ERROR 1199 (HY000): Slave connection is not running
This commit is contained in:
@ -231,7 +231,7 @@ int rval;
|
|||||||
strcpy(version_string,tmp);
|
strcpy(version_string,tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr = strstr(tmp, "-embedded");
|
ptr = strstr(version_string, "-embedded");
|
||||||
if (ptr) {
|
if (ptr) {
|
||||||
*ptr = '\0';
|
*ptr = '\0';
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@
|
|||||||
#include <log_manager.h>
|
#include <log_manager.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
|
||||||
|
extern void blr_master_close(ROUTER_INSTANCE* router);
|
||||||
static uint32_t extract_field(uint8_t *src, int bits);
|
static uint32_t extract_field(uint8_t *src, int bits);
|
||||||
static void encode_value(unsigned char *data, unsigned int value, int len);
|
static void encode_value(unsigned char *data, unsigned int value, int len);
|
||||||
static int blr_slave_query(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, GWBUF *queue);
|
static int blr_slave_query(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave, GWBUF *queue);
|
||||||
@ -86,6 +87,7 @@ static int blr_slave_disconnect_server(ROUTER_INSTANCE *router, ROUTER_SLAVE *sl
|
|||||||
static int blr_slave_send_ok(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
static int blr_slave_send_ok(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
||||||
static int blr_stop_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
static int blr_stop_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
||||||
static int blr_start_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
static int blr_start_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave);
|
||||||
|
static void blr_slave_send_error_packet(ROUTER_SLAVE *slave, char *msg, unsigned int err_num, char *status);
|
||||||
|
|
||||||
extern int lm_enabled_logfiles_bitmask;
|
extern int lm_enabled_logfiles_bitmask;
|
||||||
extern size_t log_ses_count[];
|
extern size_t log_ses_count[];
|
||||||
@ -2198,7 +2200,7 @@ blr_stop_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave)
|
|||||||
|
|
||||||
return blr_slave_send_ok(router, slave);
|
return blr_slave_send_ok(router, slave);
|
||||||
} else {
|
} else {
|
||||||
blr_slave_send_error(router, slave, "Slave connection is not running");
|
blr_slave_send_error_packet(slave, "Slave connection is not running", (unsigned int)1199, NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2230,7 +2232,59 @@ blr_start_slave(ROUTER_INSTANCE* router, ROUTER_SLAVE* slave)
|
|||||||
|
|
||||||
return blr_slave_send_ok(router, slave);
|
return blr_slave_send_ok(router, slave);
|
||||||
} else {
|
} else {
|
||||||
blr_slave_send_error(router, slave, "Slave connection is already running");
|
blr_slave_send_error_packet(slave, "Slave connection is already running", (unsigned int)1254, NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct an error packet reply with specified code and status
|
||||||
|
*
|
||||||
|
* @param slave The slave server instance
|
||||||
|
* @param msg The error message to send
|
||||||
|
* @param err_num The error number to send
|
||||||
|
* @param status The error status
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
blr_slave_send_error_packet(ROUTER_SLAVE *slave, char *msg, unsigned int err_num, char *status)
|
||||||
|
{
|
||||||
|
GWBUF *pkt;
|
||||||
|
unsigned char *data;
|
||||||
|
int len;
|
||||||
|
unsigned int mysql_errno = 0;
|
||||||
|
char *mysql_state;
|
||||||
|
uint8_t mysql_err[2];
|
||||||
|
|
||||||
|
if ((pkt = gwbuf_alloc(strlen(msg) + 13)) == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (status != NULL)
|
||||||
|
mysql_state = status;
|
||||||
|
else
|
||||||
|
mysql_state = "HY000";
|
||||||
|
|
||||||
|
if (err_num > 0)
|
||||||
|
mysql_errno = err_num;
|
||||||
|
else
|
||||||
|
mysql_errno = (unsigned int)2003;
|
||||||
|
|
||||||
|
data = GWBUF_DATA(pkt);
|
||||||
|
len = strlen(msg) + 9;
|
||||||
|
|
||||||
|
encode_value(&data[0], len, 24); // Payload length
|
||||||
|
|
||||||
|
data[3] = 1; // Sequence id
|
||||||
|
|
||||||
|
data[4] = 0xff; // Error indicator
|
||||||
|
|
||||||
|
encode_value(&data[5], mysql_errno, 16);// Error Code
|
||||||
|
|
||||||
|
data[7] = '#'; // Status message first char
|
||||||
|
strncpy((char *)&data[8], mysql_state, 5); // Status message
|
||||||
|
|
||||||
|
memcpy(&data[13], msg, strlen(msg)); // Error Message
|
||||||
|
|
||||||
|
slave->dcb->func.write(slave->dcb, pkt);
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user