From da27a306dbd5331a4f3f7cfc36e4cc1f35d121ca Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Mon, 7 Aug 2023 11:22:25 +0800 Subject: [PATCH] fix: mutex init issue --- source/libs/executor/src/groupcacheoperator.c | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/source/libs/executor/src/groupcacheoperator.c b/source/libs/executor/src/groupcacheoperator.c index ae58ec80ef..321a6ac016 100755 --- a/source/libs/executor/src/groupcacheoperator.c +++ b/source/libs/executor/src/groupcacheoperator.c @@ -676,10 +676,6 @@ static int32_t addNewGroupData(struct SOperatorInfo* pOperator, SOperatorParam* SGcOperatorParam* pGcParam = pParam->value; SHashObj* pGrpHash = pGCache->globalGrp ? pGCache->pGrpHash : pCtx->pGrpHash; SGroupCacheData grpData = {0}; - - initNewGroupData(pCtx, &grpData, pParam->downstreamIdx, vgId, pGCache->batchFetch, pGcParam->needCache); - - qError("new group %" PRIu64 " initialized, downstreamIdx:%d, vgId:%d, needCache:%d", uid, pParam->downstreamIdx, vgId, pGcParam->needCache); while (true) { if (0 != taosHashPut(pGrpHash, &uid, sizeof(uid), &grpData, sizeof(grpData))) { @@ -693,23 +689,27 @@ static int32_t addNewGroupData(struct SOperatorInfo* pOperator, SOperatorParam* } } - *ppGrp = taosHashGet(pGrpHash, &uid, sizeof(uid)); - if (*ppGrp && pParam->pChildren) { - SGcNewGroupInfo newGroup; - newGroup.pGroup = *ppGrp; - newGroup.vgId = vgId; - newGroup.uid = uid; - newGroup.pParam = taosArrayGetP(pParam->pChildren, 0); - - taosWLockLatch(&pCtx->grpLock); - if (NULL == taosArrayPush(pCtx->pNewGrpList, &newGroup)) { - taosWUnLockLatch(&pCtx->grpLock); - return TSDB_CODE_OUT_OF_MEMORY; - } + break; + } + + *ppGrp = taosHashGet(pGrpHash, &uid, sizeof(uid)); + initNewGroupData(pCtx, *ppGrp, pParam->downstreamIdx, vgId, pGCache->batchFetch, pGcParam->needCache); + + qError("new group %" PRIu64 " initialized, downstreamIdx:%d, vgId:%d, needCache:%d", uid, pParam->downstreamIdx, vgId, pGcParam->needCache); + + if (pParam->pChildren) { + SGcNewGroupInfo newGroup; + newGroup.pGroup = *ppGrp; + newGroup.vgId = vgId; + newGroup.uid = uid; + newGroup.pParam = taosArrayGetP(pParam->pChildren, 0); + + taosWLockLatch(&pCtx->grpLock); + if (NULL == taosArrayPush(pCtx->pNewGrpList, &newGroup)) { taosWUnLockLatch(&pCtx->grpLock); - - break; + return TSDB_CODE_OUT_OF_MEMORY; } + taosWUnLockLatch(&pCtx->grpLock); } return TSDB_CODE_SUCCESS;