From 3e08c248b988ca3d425cc225f6779efdfc959546 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Tue, 6 Sep 2016 05:10:52 +0300 Subject: [PATCH] Fix maxinfo hang dcb_count_by_usage did not iterate the list properly and would get stuck on the first inactive DCB. Since this function is only called by maxinfo, it would be the only one to get stuck. --- server/core/dcb.c | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/server/core/dcb.c b/server/core/dcb.c index 43b47ae8f..3e115d4f6 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -2970,46 +2970,46 @@ dcb_count_by_usage(DCB_USAGE usage) { if (dcb->dcb_is_in_use) { - switch (usage) - { - case DCB_USAGE_CLIENT: - if (DCB_ROLE_CLIENT_HANDLER == dcb->dcb_role) + switch (usage) { + case DCB_USAGE_CLIENT: + if (DCB_ROLE_CLIENT_HANDLER == dcb->dcb_role) + { + rval++; + } + break; + case DCB_USAGE_LISTENER: + if (dcb->state == DCB_STATE_LISTENING) + { + rval++; + } + break; + case DCB_USAGE_BACKEND: + if (dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER) + { + rval++; + } + break; + case DCB_USAGE_INTERNAL: + if (dcb->dcb_role == DCB_ROLE_CLIENT_HANDLER || + dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER) + { + rval++; + } + break; + case DCB_USAGE_ZOMBIE: + if (DCB_ISZOMBIE(dcb)) + { + rval++; + } + break; + case DCB_USAGE_ALL: rval++; + break; } - break; - case DCB_USAGE_LISTENER: - if (dcb->state == DCB_STATE_LISTENING) - { - rval++; - } - break; - case DCB_USAGE_BACKEND: - if (dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER) - { - rval++; - } - break; - case DCB_USAGE_INTERNAL: - if (dcb->dcb_role == DCB_ROLE_CLIENT_HANDLER || - dcb->dcb_role == DCB_ROLE_BACKEND_HANDLER) - { - rval++; - } - break; - case DCB_USAGE_ZOMBIE: - if (DCB_ISZOMBIE(dcb)) - { - rval++; - } - break; - case DCB_USAGE_ALL: - rval++; - break; } dcb = dcb->next; } - } spinlock_release(&dcbspin); return rval; }