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:
vraatikka 2013-08-08 00:10:33 +03:00
parent f1498e4403
commit d94153c29f

View File

@ -263,6 +263,14 @@ int i;
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
{
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;
}
}
@ -281,22 +289,32 @@ int 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)
&& (inst->servers[i]->server->status & inst->bitmask) == inst->bitvalue)
{
{
if (inst->servers[i]->count < candidate->count)
{
candidate = inst->servers[i];
candidate = inst->servers[i];
}
else if (inst->servers[i]->count == candidate->count &&
inst->servers[i]->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 */
if (!candidate) {
free(client);
@ -310,8 +328,15 @@ int i;
atomic_add(&candidate->count, 1);
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
* connection in the client->dcb
*/