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:
@ -647,15 +647,15 @@ static void closeSession(
|
|||||||
{
|
{
|
||||||
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)
|
||||||
{
|
{
|
||||||
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
|
||||||
|
Reference in New Issue
Block a user