If maxscale is compiled with DEBUG=Y readconnrouter module writes slave selection info to trace log. Example:
SkySQL MaxScale Thu Aug 8 00:01:08 2013 ------------------------------------------ 2013 08/08 00:01:17 Selected server in port 3003 to as candidate. Connections : 0 2013 08/08 00:01:17 Examine server in port 3002 with 0 connections. Status is 5, inst->bitvalue is 6 2013 08/08 00:01:17 Examine server in port 3001 with 0 connections. Status is 5, inst->bitvalue is 6 2013 08/08 00:01:17 Examine server in port 3000 with 0 connections. Status is 3, inst->bitvalue is 6 2013 08/08 00:01:17 Final selection is server in port 3003. Connections : 1 2013 08/08 00:01:22 Selected server in port 3003 to as candidate. Connections : 1 2013 08/08 00:01:22 Examine server in port 3002 with 0 connections. Status is 5, inst->bitvalue is 6 2013 08/08 00:01:22 Examine server in port 3001 with 0 connections. Status is 5, inst->bitvalue is 6 2013 08/08 00:01:22 Examine server in port 3000 with 0 connections. Status is 3, inst->bitvalue is 6 2013 08/08 00:01:22 Final selection is server in port 3002. Connections : 1
This commit is contained in:
@ -263,6 +263,14 @@ int i;
|
|||||||
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
|
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
|
||||||
{
|
{
|
||||||
candidate = inst->servers[i];
|
candidate = inst->servers[i];
|
||||||
|
#if defined(SS_DEBUG)
|
||||||
|
skygw_log_write(
|
||||||
|
LOGFILE_TRACE,
|
||||||
|
"Selected server in port %d to as candidate. "
|
||||||
|
"Connections : %d\n",
|
||||||
|
candidate->server->port,
|
||||||
|
candidate->count);
|
||||||
|
#endif /* SS_DEBUG */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,22 +289,32 @@ int i;
|
|||||||
*/
|
*/
|
||||||
for (i = 1; inst->servers[i]; i++)
|
for (i = 1; inst->servers[i]; i++)
|
||||||
{
|
{
|
||||||
|
#if defined(SS_DEBUG)
|
||||||
|
skygw_log_write(
|
||||||
|
LOGFILE_TRACE,
|
||||||
|
"Examine server in port %d with %d connections. Status is %d, "
|
||||||
|
"inst->bitvalue is %d",
|
||||||
|
inst->servers[i]->server->port,
|
||||||
|
inst->servers[i]->count,
|
||||||
|
inst->servers[i]->server->status,
|
||||||
|
inst->bitmask);
|
||||||
|
#endif /* SS_DEBUG */
|
||||||
if (inst->servers[i] && SERVER_IS_RUNNING(inst->servers[i]->server)
|
if (inst->servers[i] && SERVER_IS_RUNNING(inst->servers[i]->server)
|
||||||
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
|
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
|
||||||
{
|
{
|
||||||
if (inst->servers[i]->count < candidate->count)
|
if (inst->servers[i]->count < candidate->count)
|
||||||
{
|
{
|
||||||
candidate = inst->servers[i];
|
candidate = inst->servers[i];
|
||||||
}
|
}
|
||||||
else if (inst->servers[i]->count == candidate->count &&
|
else if (inst->servers[i]->count == candidate->count &&
|
||||||
inst->servers[i]->server->stats.n_connections
|
inst->servers[i]->server->stats.n_connections
|
||||||
< candidate->server->stats.n_connections)
|
< candidate->server->stats.n_connections)
|
||||||
{
|
{
|
||||||
candidate = inst->servers[i];
|
candidate = inst->servers[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* no candidate server here, clean and return NULL */
|
/* no candidate server here, clean and return NULL */
|
||||||
if (!candidate) {
|
if (!candidate) {
|
||||||
free(client);
|
free(client);
|
||||||
@ -310,8 +328,15 @@ int i;
|
|||||||
atomic_add(&candidate->count, 1);
|
atomic_add(&candidate->count, 1);
|
||||||
|
|
||||||
client->backend = candidate;
|
client->backend = candidate;
|
||||||
|
#if defined(SS_DEBUG)
|
||||||
/*
|
skygw_log_write(
|
||||||
|
LOGFILE_TRACE,
|
||||||
|
"Final selection is server in port %d. "
|
||||||
|
"Connections : %d\n",
|
||||||
|
candidate->server->port,
|
||||||
|
candidate->count);
|
||||||
|
#endif /* SS_DEBUG */
|
||||||
|
/*
|
||||||
* Open a backend connection, putting the DCB for this
|
* Open a backend connection, putting the DCB for this
|
||||||
* connection in the client->dcb
|
* connection in the client->dcb
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user