From d2e49c95911dce5fa7f3d444fa9f5e39cc2aa6d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Thu, 9 May 2019 13:04:35 +0300 Subject: [PATCH] MXS-2448: Assert that connection counts never go negative The connections should never go below zero. It seems that at least pers_01 test suffers from this. --- server/core/dcb.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/core/dcb.cc b/server/core/dcb.cc index c18ba056b..8ff195472 100644 --- a/server/core/dcb.cc +++ b/server/core/dcb.cc @@ -1254,7 +1254,8 @@ void dcb_final_close(DCB* dcb) // This is now a DCB_ROLE_BACKEND_HANDLER. // TODO: Make decisions according to the role and assert // TODO: that what the role implies is preset. - mxb::atomic::add(&dcb->server->stats.n_current, -1, mxb::atomic::RELAXED); + MXB_AT_DEBUG(int rc = ) mxb::atomic::add(&dcb->server->stats.n_current, -1, mxb::atomic::RELAXED); + mxb_assert(rc > 0); } if (dcb->fd > 0) @@ -1357,7 +1358,8 @@ static bool dcb_maybe_add_persistent(DCB* dcb) dcb->nextpersistent = dcb->server->persistent[owner->id()]; dcb->server->persistent[owner->id()] = dcb; mxb::atomic::add(&dcb->server->stats.n_persistent, 1); - mxb::atomic::add(&dcb->server->stats.n_current, -1, mxb::atomic::RELAXED); + MXB_AT_DEBUG(int rc = ) mxb::atomic::add(&dcb->server->stats.n_current, -1, mxb::atomic::RELAXED); + mxb_assert(rc > 0); return true; } else if (dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER && dcb->server)