Backend, and server connection counters were updated erroneously. As a consequent, backend selection worked wrong and negative connection count values were possible.

This commit is contained in:
VilhoRaatikka
2014-05-11 17:25:56 +03:00
parent 9d1aa06376
commit b8618ee7cf

View File

@ -645,10 +645,7 @@ static void closeSession(
for (i=0; i<router_cli_ses->rses_nbackends; i++) for (i=0; i<router_cli_ses->rses_nbackends; i++)
{ {
DCB* dcb = backend_ref[i].bref_dcb; DCB* dcb = backend_ref[i].bref_dcb;
/** decrease server current connection counters */
atomic_add(&backend_ref[i].bref_backend->backend_server->stats.n_current, -1);
/** Close those which had been connected */ /** Close those which had been connected */
if (dcb != NULL) if (dcb != NULL)
@ -656,6 +653,9 @@ static void closeSession(
CHK_DCB(dcb); CHK_DCB(dcb);
backend_ref[i].bref_dcb = NULL; /*< prevent new uses of DCB */ backend_ref[i].bref_dcb = NULL; /*< prevent new uses of DCB */
dcb->func.close(dcb); dcb->func.close(dcb);
/** decrease server current connection counters */
atomic_add(&backend_ref[i].bref_backend->backend_server->stats.n_current, -1);
atomic_add(&backend_ref[i].bref_backend->backend_conn_count, -1);
} }
} }
/** Unlock */ /** Unlock */
@ -1451,6 +1451,8 @@ static bool select_connect_backend_servers(
{ {
slaves_connected += 1; slaves_connected += 1;
/** Increase backend connection counter */ /** Increase backend connection counter */
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); atomic_add(&b->backend_conn_count, 1);
} }
else else
@ -1480,6 +1482,9 @@ static bool select_connect_backend_servers(
master_connected = true; master_connected = true;
*p_master_ref = &backend_ref[i]; *p_master_ref = &backend_ref[i];
/** Increase backend connection counter */ /** Increase backend connection counter */
/** Increase backend connection counter */
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); atomic_add(&b->backend_conn_count, 1);
} }
else else