From 5b621fc0c57b0c91dc061adfbf2e6e73c5d60828 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 23 Aug 2023 16:32:32 +0800 Subject: [PATCH] fix mem leak --- source/dnode/mnode/impl/src/mndStream.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index 53afcc0e3f..2591bf0f36 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -133,6 +133,7 @@ void mndCleanupStream(SMnode *pMnode) { taosArrayDestroy(execNodeList.pTaskList); taosHashCleanup(execNodeList.pTaskMap); taosThreadMutexDestroy(&execNodeList.lock); + mDebug("mnd stream cleanup"); } SSdbRaw *mndStreamActionEncode(SStreamObj *pStream) { @@ -2282,9 +2283,13 @@ int32_t mndProcessStreamHb(SRpcMsg *pReq) { for (int32_t i = 0; i < req.numOfTasks; ++i) { STaskStatusEntry *p = taosArrayGet(req.pTaskStatus, i); int64_t k[2] = {p->streamId, p->taskId}; - int32_t index = *(int32_t *)taosHashGet(execNodeList.pTaskMap, &k, sizeof(k)); - STaskStatusEntry *pStatusEntry = taosArrayGet(execNodeList.pTaskList, index); + int32_t *pIdx = (int32_t *)taosHashGet(execNodeList.pTaskMap, k, sizeof(k)); + if (pIdx == NULL) { + mDebug("s-task:0x%x not found in global execNodeList", p->taskId); + continue; + }; + STaskStatusEntry *pStatusEntry = taosArrayGet(execNodeList.pTaskList, *pIdx); pStatusEntry->status = p->status; if (p->status != TASK_STATUS__NORMAL) { mDebug("received s-task:0x%x no in ready stat:%s", p->taskId, streamGetTaskStatusStr(p->status));