Merge branch 'develop' of github.com:skysql/MaxScale into develop

This commit is contained in:
Mark Riddoch
2014-05-28 23:39:17 +01:00
2 changed files with 30 additions and 21 deletions

View File

@ -282,7 +282,8 @@ static int gw_read_backend_event(DCB *dcb) {
} /* switch */ } /* switch */
} }
if (backend_protocol->state == MYSQL_AUTH_FAILED) { if (backend_protocol->state == MYSQL_AUTH_FAILED)
{
/** /**
* protocol state won't change anymore, * protocol state won't change anymore,
* lock can be freed * lock can be freed
@ -326,14 +327,14 @@ static int gw_read_backend_event(DCB *dcb) {
if (session->client->session == NULL) if (session->client->session == NULL)
{ {
rc = 1; rc = 1;
goto return_with_lock; goto return_rc;
} }
usleep(1); usleep(1);
} }
if (session->state == SESSION_STATE_STOPPING) if (session->state == SESSION_STATE_STOPPING)
{ {
goto return_with_lock; goto return_rc;
} }
spinlock_acquire(&session->ses_lock); spinlock_acquire(&session->ses_lock);
session->state = SESSION_STATE_STOPPING; session->state = SESSION_STATE_STOPPING;
@ -584,7 +585,8 @@ gw_MySQLWrite_backend(DCB *dcb, GWBUF *queue)
snprintf(str, len+1, "%s", startpoint); snprintf(str, len+1, "%s", startpoint);
LOGIF(LE, (skygw_log_write_flush( LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR, LOGFILE_ERROR,
"Error : Authentication to backend failed."))); "Error : Unable to write to backend due to "
"authentication failure.")));
/** Consume query buffer */ /** Consume query buffer */
while ((queue = gwbuf_consume( while ((queue = gwbuf_consume(
queue, queue,

View File

@ -1015,16 +1015,16 @@ static int routeQuery(
router_cli_ses->rses_id))); router_cli_ses->rses_id)));
ss_dassert(QUERY_IS_TYPE(qtype, QUERY_TYPE_READ)); ss_dassert(QUERY_IS_TYPE(qtype, QUERY_TYPE_READ));
/** Lock router session */
if (!rses_begin_locked_router_action(router_cli_ses))
{
goto return_ret;
}
succp = get_dcb(&slave_dcb, router_cli_ses, BE_SLAVE); succp = get_dcb(&slave_dcb, router_cli_ses, BE_SLAVE);
if (succp) if (succp)
{ {
/** Lock router session */
if (!rses_begin_locked_router_action(router_cli_ses))
{
goto return_ret;
}
if ((ret = slave_dcb->func.write(slave_dcb, querybuf)) == 1) if ((ret = slave_dcb->func.write(slave_dcb, querybuf)) == 1)
{ {
atomic_add(&inst->stats.n_slave, 1); atomic_add(&inst->stats.n_slave, 1);
@ -1036,8 +1036,9 @@ static int routeQuery(
"Error : Routing query \"%s\" failed.", "Error : Routing query \"%s\" failed.",
querystr))); querystr)));
} }
rses_end_locked_router_action(router_cli_ses);
} }
rses_end_locked_router_action(router_cli_ses);
ss_dassert(succp); ss_dassert(succp);
goto return_ret; goto return_ret;
} }
@ -1061,6 +1062,11 @@ static int routeQuery(
"routing to Master."))); "routing to Master.")));
} }
} }
/** Lock router session */
if (!rses_begin_locked_router_action(router_cli_ses))
{
goto return_ret;
}
if (master_dcb == NULL) if (master_dcb == NULL)
{ {
@ -1068,21 +1074,22 @@ static int routeQuery(
} }
if (succp) if (succp)
{ {
/** Lock router session */
if (!rses_begin_locked_router_action(router_cli_ses))
{
goto return_ret;
}
if ((ret = master_dcb->func.write(master_dcb, querybuf)) == 1) if ((ret = master_dcb->func.write(master_dcb, querybuf)) == 1)
{ {
atomic_add(&inst->stats.n_master, 1); atomic_add(&inst->stats.n_master, 1);
} }
rses_end_locked_router_action(router_cli_ses);
} }
rses_end_locked_router_action(router_cli_ses);
ss_dassert(succp); ss_dassert(succp);
ss_dassert(ret == 1);
goto return_ret; if (ret == 0)
{
LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR,
"Error : Routing to master failed.")));
}
} }
return_ret: return_ret:
if (plainsqlbuf != NULL) if (plainsqlbuf != NULL)