From 1e62b7c1e17a1ccd34af3a32c88d4b3fc32e82af Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sun, 24 Apr 2022 20:21:34 +0800 Subject: [PATCH] fix(cluster): repair dmnodeTest --- source/dnode/mgmt/implement/src/dmHandle.c | 6 +++--- source/dnode/mgmt/implement/src/dmTransport.c | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/source/dnode/mgmt/implement/src/dmHandle.c b/source/dnode/mgmt/implement/src/dmHandle.c index af4b9d389e..e76d7fcd4f 100644 --- a/source/dnode/mgmt/implement/src/dmHandle.c +++ b/source/dnode/mgmt/implement/src/dmHandle.c @@ -146,10 +146,10 @@ int32_t dmProcessCreateNodeReq(SDnode *pDnode, EDndNodeType ntype, SNodeMsg *pMs dError("node:%s, failed to create since %s", pWrapper->name, terrstr()); } else { dDebug("node:%s, has been created", pWrapper->name); + (void)dmOpenNode(pWrapper); pWrapper->required = true; pWrapper->deployed = true; pWrapper->procType = pDnode->ptype; - (void)dmOpenNode(pWrapper); } taosThreadMutexUnlock(&pDnode->mutex); @@ -171,13 +171,13 @@ int32_t dmProcessDropNodeReq(SDnode *pDnode, EDndNodeType ntype, SNodeMsg *pMsg) dError("node:%s, failed to drop since %s", pWrapper->name, terrstr()); } else { dDebug("node:%s, has been dropped", pWrapper->name); + pWrapper->required = false; + pWrapper->deployed = false; } dmReleaseWrapper(pWrapper); if (code == 0) { - pWrapper->required = false; - pWrapper->deployed = false; dmCloseNode(pWrapper); taosRemoveDir(pWrapper->path); } diff --git a/source/dnode/mgmt/implement/src/dmTransport.c b/source/dnode/mgmt/implement/src/dmTransport.c index 96bf69be31..5eacffbdf7 100644 --- a/source/dnode/mgmt/implement/src/dmTransport.c +++ b/source/dnode/mgmt/implement/src/dmTransport.c @@ -71,12 +71,15 @@ static void dmProcessRpcMsg(SMgmtWrapper *pWrapper, SRpcMsg *pRpc, SEpSet *pEpSe SNodeMsg *pMsg = NULL; NodeMsgFp msgFp = NULL; uint16_t msgType = pRpc->msgType; + bool needRelease = false; if (pEpSet && pEpSet->numOfEps > 0 && msgType == TDMT_MND_STATUS_RSP) { dmSetMnodeEpSet(pWrapper->pDnode, pEpSet); } if (dmMarkWrapper(pWrapper) != 0) goto _OVER; + + needRelease = true; if ((msgFp = dmGetMsgFp(pWrapper, pRpc)) == NULL) goto _OVER; if ((pMsg = taosAllocateQitem(sizeof(SNodeMsg))) == NULL) goto _OVER; if (dmBuildMsg(pMsg, pRpc) != 0) goto _OVER; @@ -119,7 +122,9 @@ _OVER: rpcFreeCont(pRpc->pCont); } - dmReleaseWrapper(pWrapper); + if (needRelease) { + dmReleaseWrapper(pWrapper); + } } static void dmProcessMsg(SDnode *pDnode, SRpcMsg *pMsg, SEpSet *pEpSet) { -- GitLab