diff --git a/source/dnode/mgmt/dnode/src/dmMgmt.c b/source/dnode/mgmt/dnode/src/dmMgmt.c index 55dd8ebd21ca48990de67cfcf03e93c8c7af9166..f377c56b017085870528811c222191580f146029 100644 --- a/source/dnode/mgmt/dnode/src/dmMgmt.c +++ b/source/dnode/mgmt/dnode/src/dmMgmt.c @@ -336,6 +336,26 @@ int32_t dmInit(SMgmtWrapper *pWrapper) { #endif } -void dmCleanup(SMgmtWrapper *pWrapper) {} +void dmCleanup(SMgmtWrapper *pWrapper) { + SDnodeMgmt *pMgmt = pWrapper->pMgmt; + if (pMgmt == NULL) return; + + dmStopWorker(pMgmt); + + taosWLockLatch(&pMgmt->latch); + + if (pMgmt->pDnodeEps != NULL) { + taosArrayDestroy(pMgmt->pDnodeEps); + pMgmt->pDnodeEps = NULL; + } + + if (pMgmt->dnodeHash != NULL) { + taosHashCleanup(pMgmt->dnodeHash); + pMgmt->dnodeHash = NULL; + } + + taosWUnLockLatch(&pMgmt->latch); + dInfo("dnode-mgmt is cleaned up"); +} bool dmRequire(SMgmtWrapper *pWrapper) { return true; } diff --git a/source/dnode/mgmt/dnode/src/dmWorker.c b/source/dnode/mgmt/dnode/src/dmWorker.c index 541e38f9befb95f81d810d09540f7def3e0ca8fb..0fcc05338a368bda1eb635d0a5680c78565b9952 100644 --- a/source/dnode/mgmt/dnode/src/dmWorker.c +++ b/source/dnode/mgmt/dnode/src/dmWorker.c @@ -15,8 +15,8 @@ #define _DEFAULT_SOURCE #include "dmWorker.h" -#include "dndWorker.h" #include "dmHandle.h" +#include "dndWorker.h" static void *dnodeThreadRoutine(void *param) { SDnodeMgmt *pMgmt = param; @@ -41,11 +41,11 @@ static void *dnodeThreadRoutine(void *param) { lastStatusTime = curTime; } - // float monitorInterval = (curTime - lastMonitorTime) / 1000.0f; - // if (monitorInterval >= tsMonitorInterval) { - // dndSendMonitorReport(pDnode); - // lastMonitorTime = curTime; - // } + float monitorInterval = (curTime - lastMonitorTime) / 1000.0f; + if (monitorInterval >= tsMonitorInterval) { + dndSendMonitorReport(pDnode); + lastMonitorTime = curTime; + } } } @@ -137,30 +137,22 @@ int32_t dmStartWorker(SDnodeMgmt *pMgmt) { return -1; } -// pMgmt->threadId = taosCreateThread(dnodeThreadRoutine, pDnode); -// if (pMgmt->threadId == NULL) { -// dError("failed to init dnode thread"); -// terrno = TSDB_CODE_OUT_OF_MEMORY; -// return -1; -// } + pMgmt->threadId = taosCreateThread(dnodeThreadRoutine, pMgmt); + if (pMgmt->threadId == NULL) { + dError("failed to init dnode thread"); + terrno = TSDB_CODE_OUT_OF_MEMORY; + return -1; + } return 0; } void dmStopWorker(SDnodeMgmt *pMgmt) { - #if 0 - SMnodeMgmt *pMgmt = &pDnode->mmgmt; - - taosWLockLatch(&pMgmt->latch); - pMgmt->deployed = 0; - taosWUnLockLatch(&pMgmt->latch); + dndCleanupWorker(&pMgmt->mgmtWorker); + dndCleanupWorker(&pMgmt->statusWorker); - while (pMgmt->refCount > 1) { - taosMsleep(10); + if (pMgmt->threadId != NULL) { + taosDestoryThread(pMgmt->threadId); + pMgmt->threadId = NULL; } - - dndCleanupWorker(&pMgmt->readWorker); - dndCleanupWorker(&pMgmt->writeWorker); - dndCleanupWorker(&pMgmt->syncWorker); - #endif } diff --git a/source/dnode/mgmt/mnode/src/mmInt.c b/source/dnode/mgmt/mnode/src/mmInt.c index 288a159e073d8a91c11f6c9c956c941f6c6d0b54..fdd5919e0182b20a787ca53d008b4f2bdbdb06fa 100644 --- a/source/dnode/mgmt/mnode/src/mmInt.c +++ b/source/dnode/mgmt/mnode/src/mmInt.c @@ -32,3 +32,8 @@ SMgmtFp mmGetMgmtFp() { int32_t mmGetUserAuth(SMgmtWrapper *pWrapper, char *user, char *spi, char *encrypt, char *secret, char *ckey) { return 0; } + +int32_t mmGetMonitorInfo(SDnode *pDnode, SMonClusterInfo *pClusterInfo, SMonVgroupInfo *pVgroupInfo, + SMonGrantInfo *pGrantInfo) { + return 0; +} \ No newline at end of file