Merge branch 'release-1.0GA' of https://github.com/mariadb-corporation/MaxScale into release-1.0GA
This commit is contained in:
@ -146,7 +146,8 @@ static void rses_end_locked_router_action(
|
|||||||
|
|
||||||
static BACKEND *get_root_master(
|
static BACKEND *get_root_master(
|
||||||
BACKEND **servers);
|
BACKEND **servers);
|
||||||
|
static int handle_state_switch(
|
||||||
|
DCB* dcb,DCB_REASON reason, void * routersession);
|
||||||
static SPINLOCK instlock;
|
static SPINLOCK instlock;
|
||||||
static ROUTER_INSTANCE *instances;
|
static ROUTER_INSTANCE *instances;
|
||||||
|
|
||||||
@ -536,7 +537,12 @@ BACKEND *master_host = NULL;
|
|||||||
free(client_rses);
|
free(client_rses);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
inst->stats.n_sessions++;
|
dcb_add_callback(
|
||||||
|
client_rses->backend_dcb,
|
||||||
|
DCB_REASON_NOT_RESPONDING,
|
||||||
|
&handle_state_switch,
|
||||||
|
client_rses);
|
||||||
|
inst->stats.n_sessions++;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add this session to the list of active sessions.
|
* Add this session to the list of active sessions.
|
||||||
@ -693,7 +699,8 @@ routeQuery(ROUTER *instance, void *router_session, GWBUF *queue)
|
|||||||
rses_end_locked_router_action(router_cli_ses);
|
rses_end_locked_router_action(router_cli_ses);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rses_is_closed || backend_dcb == NULL)
|
if (rses_is_closed || backend_dcb == NULL ||
|
||||||
|
SERVER_IS_DOWN(router_cli_ses->backend->server))
|
||||||
{
|
{
|
||||||
LOGIF(LT, (skygw_log_write(
|
LOGIF(LT, (skygw_log_write(
|
||||||
LOGFILE_TRACE,
|
LOGFILE_TRACE,
|
||||||
@ -954,3 +961,41 @@ static BACKEND *get_root_master(BACKEND **servers) {
|
|||||||
}
|
}
|
||||||
return master_host;
|
return master_host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int handle_state_switch(DCB* dcb,DCB_REASON reason, void * routersession)
|
||||||
|
{
|
||||||
|
ss_dassert(dcb != NULL);
|
||||||
|
SESSION* session = dcb->session;
|
||||||
|
ROUTER_CLIENT_SES* rses = (ROUTER_CLIENT_SES*)routersession;
|
||||||
|
SERVICE* service = session->service;
|
||||||
|
ROUTER* router = service->router;
|
||||||
|
|
||||||
|
switch(reason)
|
||||||
|
{
|
||||||
|
case DCB_REASON_CLOSE:
|
||||||
|
dcb->func.close(dcb);
|
||||||
|
break;
|
||||||
|
case DCB_REASON_DRAINED:
|
||||||
|
/** Do we need to do anything? */
|
||||||
|
break;
|
||||||
|
case DCB_REASON_HIGH_WATER:
|
||||||
|
/** Do we need to do anything? */
|
||||||
|
break;
|
||||||
|
case DCB_REASON_LOW_WATER:
|
||||||
|
/** Do we need to do anything? */
|
||||||
|
break;
|
||||||
|
case DCB_REASON_ERROR:
|
||||||
|
dcb->func.error(dcb);
|
||||||
|
break;
|
||||||
|
case DCB_REASON_HUP:
|
||||||
|
dcb->func.hangup(dcb);
|
||||||
|
break;
|
||||||
|
case DCB_REASON_NOT_RESPONDING:
|
||||||
|
dcb->func.hangup(dcb);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user