Merge pull request #27959 from taosdata/fix/3.0/TD-32205
fix query auto qworker possibly blocking caused by failed to add worker
This commit is contained in:
commit
f918c21d23
|
@ -714,7 +714,6 @@ static bool tQueryAutoQWorkerTryDecActive(void *p, int32_t minActive) {
|
||||||
if (atomicCompareExchangeActiveAndRunning(&pPool->activeRunningN, &active, active - 1, &running, running - 1))
|
if (atomicCompareExchangeActiveAndRunning(&pPool->activeRunningN, &active, active - 1, &running, running - 1))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
(void)atomicFetchSubRunning(&pPool->activeRunningN, 1);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -784,6 +783,7 @@ bool tQueryAutoQWorkerTryRecycleWorker(SQueryAutoQWorkerPool *pPool, SQueryAutoQ
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
(void)atomicFetchSubRunning(&pPool->activeRunningN, 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -978,7 +978,6 @@ static int32_t tQueryAutoQWorkerAddWorker(SQueryAutoQWorkerPool *pool) {
|
||||||
SListNode *pNode = tdListAdd(pool->workers, &worker);
|
SListNode *pNode = tdListAdd(pool->workers, &worker);
|
||||||
if (!pNode) {
|
if (!pNode) {
|
||||||
(void)taosThreadMutexUnlock(&pool->poolLock);
|
(void)taosThreadMutexUnlock(&pool->poolLock);
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
(void)taosThreadMutexUnlock(&pool->poolLock);
|
(void)taosThreadMutexUnlock(&pool->poolLock);
|
||||||
|
@ -1006,6 +1005,7 @@ static int32_t tQueryAutoQWorkerBeforeBlocking(void *p) {
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
(void)atomicFetchSubRunning(&pPool->activeRunningN, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue