Bug #468, http://bugs.skysql.com/show_bug.cgi?id=468, Query classifier accessed freed thread context. If parsing fails thd doesn't need to be freed because it holds correct information about command type.
session.c:session_setup_filters : fixed memory leak hintparser.c: added token_free for HINT_TOKENs and fixed a few memory leaks. mysql_client_server_protocol.h: added mysql_protocol_done which frees memory blocks pointed to by protocol members. Those can't be freed in dcb.c because dcb.c doesn't know about protocol's members. mysql_backend.c:gw_backend_close: fixed memory leak mysql_client.c: gw_client_close: fixed memory leak mysql_common.c: added implementation of mysql_protocol_done :protocol_archive_srv_command: tried to fix memory leak. Some memory is still leaking according to valgrind. Removed use of uninitialized local variable len. readwritesplit.c: Fix to bug #469, http://bugs.skysql.com/show_bug.cgi?id=469, rwsplit counts every connection twice in master - counnection counts leak execute_sescmd_in_backend: fixed a memory leak - visible only in DEBUG=Y build. readwritesplit/test/makefile: added target for hints tests
This commit is contained in:
@ -1272,6 +1272,8 @@ static int routeQuery(
|
||||
break;
|
||||
|
||||
case MYSQL_COM_STMT_EXECUTE:
|
||||
/** Parsing is not needed for this type of packet */
|
||||
#if defined(NOT_USED)
|
||||
plainsqlbuf = gwbuf_clone_transform(querybuf,
|
||||
GWBUF_TYPE_PLAINSQL);
|
||||
len = GWBUF_LENGTH(plainsqlbuf);
|
||||
@ -1280,7 +1282,8 @@ static int routeQuery(
|
||||
memcpy(querystr, startpos, len);
|
||||
memset(&querystr[len], 0, 1);
|
||||
qtype = skygw_query_classifier_get_type(querystr, 0, &mysql);
|
||||
qtype |= QUERY_TYPE_EXEC_STMT;
|
||||
#endif
|
||||
qtype = QUERY_TYPE_EXEC_STMT;
|
||||
break;
|
||||
|
||||
case MYSQL_COM_SHUTDOWN: /**< 8 where should shutdown be routed ? */
|
||||
@ -2146,7 +2149,7 @@ static bool select_connect_backend_servers(
|
||||
backend_ref[i].bref_state = 0;
|
||||
bref_set_state(&backend_ref[i],
|
||||
BREF_IN_USE);
|
||||
/**
|
||||
/**
|
||||
* Increase backend connection counter.
|
||||
* Server's stats are _increased_ in
|
||||
* dcb.c:dcb_alloc !
|
||||
@ -2184,7 +2187,7 @@ static bool select_connect_backend_servers(
|
||||
session,
|
||||
b->backend_server->protocol);
|
||||
|
||||
if (backend_ref[i].bref_dcb != NULL)
|
||||
if (backend_ref[i].bref_dcb != NULL)
|
||||
{
|
||||
master_connected = true;
|
||||
/**
|
||||
@ -2201,8 +2204,6 @@ static bool select_connect_backend_servers(
|
||||
bref_set_state(&backend_ref[i],
|
||||
BREF_IN_USE);
|
||||
/** Increase backend connection counters */
|
||||
atomic_add(&b->backend_server->stats.n_current, 1);
|
||||
atomic_add(&b->backend_server->stats.n_connections, 1);
|
||||
atomic_add(&b->backend_conn_count, 1);
|
||||
}
|
||||
else
|
||||
@ -2832,6 +2833,7 @@ static bool execute_sescmd_in_backend(
|
||||
pthread_self(),
|
||||
dcb->fd,
|
||||
STRPACKETTYPE(cmd))));
|
||||
gwbuf_free(tmpbuf);
|
||||
}
|
||||
#endif /*< SS_DEBUG */
|
||||
switch (scur->scmd_cur_cmd->my_sescmd_packet_type) {
|
||||
|
Reference in New Issue
Block a user