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:
Pan Wei 2024-09-20 15:12:25 +08:00 committed by GitHub
commit f918c21d23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 2 additions and 2 deletions

View File

@ -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;