1. fix exchange operator dead lock due to no ret check for add ref
2. fix null pointer of FetchRpcHandle of exchangeoperator
This commit is contained in:
parent
d6b3b3b49f
commit
efd1ece152
|
@ -391,7 +391,11 @@ static int32_t initExchangeOperator(SExchangePhysiNode* pExNode, SExchangeInfo*
|
||||||
|
|
||||||
initLimitInfo(pExNode->node.pLimit, pExNode->node.pSlimit, &pInfo->limitInfo);
|
initLimitInfo(pExNode->node.pLimit, pExNode->node.pSlimit, &pInfo->limitInfo);
|
||||||
pInfo->self = taosAddRef(exchangeObjRefPool, pInfo);
|
pInfo->self = taosAddRef(exchangeObjRefPool, pInfo);
|
||||||
|
if (pInfo->self < 0) {
|
||||||
|
int32_t code = terrno;
|
||||||
|
qError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
return initDataSource(numOfSources, pInfo, id);
|
return initDataSource(numOfSources, pInfo, id);
|
||||||
}
|
}
|
||||||
|
@ -480,14 +484,16 @@ void freeSourceDataInfo(void* p) {
|
||||||
|
|
||||||
void doDestroyExchangeOperatorInfo(void* param) {
|
void doDestroyExchangeOperatorInfo(void* param) {
|
||||||
SExchangeInfo* pExInfo = (SExchangeInfo*)param;
|
SExchangeInfo* pExInfo = (SExchangeInfo*)param;
|
||||||
for (int32_t i = 0; i < pExInfo->pFetchRpcHandles->size; ++i) {
|
if (pExInfo->pFetchRpcHandles) {
|
||||||
int64_t* pRpcHandle = taosArrayGet(pExInfo->pFetchRpcHandles, i);
|
for (int32_t i = 0; i < pExInfo->pFetchRpcHandles->size; ++i) {
|
||||||
if (*pRpcHandle > 0) {
|
int64_t* pRpcHandle = taosArrayGet(pExInfo->pFetchRpcHandles, i);
|
||||||
SDownstreamSourceNode* pSource = taosArrayGet(pExInfo->pSources, i);
|
if (*pRpcHandle > 0) {
|
||||||
(void)asyncFreeConnById(pExInfo->pTransporter, *pRpcHandle);
|
SDownstreamSourceNode* pSource = taosArrayGet(pExInfo->pSources, i);
|
||||||
|
(void)asyncFreeConnById(pExInfo->pTransporter, *pRpcHandle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
taosArrayDestroy(pExInfo->pFetchRpcHandles);
|
||||||
}
|
}
|
||||||
taosArrayDestroy(pExInfo->pFetchRpcHandles);
|
|
||||||
|
|
||||||
taosArrayDestroy(pExInfo->pSources);
|
taosArrayDestroy(pExInfo->pSources);
|
||||||
taosArrayDestroyEx(pExInfo->pSourceDataInfo, freeSourceDataInfo);
|
taosArrayDestroyEx(pExInfo->pSourceDataInfo, freeSourceDataInfo);
|
||||||
|
|
Loading…
Reference in New Issue