From 3870df065c56f4978be66830181e57030121632c Mon Sep 17 00:00:00 2001 From: wangjiaming0909 <604227650@qq.com> Date: Mon, 9 Sep 2024 15:40:28 +0800 Subject: [PATCH] fix client exectask not running in taskPool --- source/client/src/clientMain.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c index 02435022f8..1c1fff9b7b 100644 --- a/source/client/src/clientMain.c +++ b/source/client/src/clientMain.c @@ -1363,6 +1363,19 @@ void restartAsyncQuery(SRequestObj *pRequest, int32_t code) { doAsyncQuery(pUserReq, true); } +typedef struct SAsyncFetchParam { + SRequestObj *pReq; + __taos_async_fn_t fp; + void *param; +} SAsyncFetchParam; + +static int32_t doAsyncFetch(void* pParam) { + SAsyncFetchParam *param = pParam; + taosAsyncFetchImpl(param->pReq, param->fp, param->param); + taosMemoryFree(param); + return TSDB_CODE_SUCCESS; +} + void taos_fetch_rows_a(TAOS_RES *res, __taos_async_fn_t fp, void *param) { if (res == NULL || fp == NULL) { tscError("taos_fetch_rows_a invalid paras"); @@ -1370,6 +1383,7 @@ void taos_fetch_rows_a(TAOS_RES *res, __taos_async_fn_t fp, void *param) { } if (!TD_RES_QUERY(res)) { tscError("taos_fetch_rows_a res is NULL"); + fp(param, res, TSDB_CODE_APP_ERROR); return; } @@ -1379,7 +1393,20 @@ void taos_fetch_rows_a(TAOS_RES *res, __taos_async_fn_t fp, void *param) { return; } - taosAsyncFetchImpl(pRequest, fp, param); + SAsyncFetchParam* pParam = taosMemoryCalloc(1, sizeof(SAsyncFetchParam)); + if (!pParam) { + fp(param, res, terrno); + return; + } + pParam->pReq = pRequest; + pParam->fp = fp; + pParam->param = param; + int32_t code = taosAsyncExec(doAsyncFetch, pParam, NULL); + if (TSDB_CODE_SUCCESS != code) { + taosMemoryFree(pParam); + fp(param, res, code); + return; + } } void taos_fetch_raw_block_a(TAOS_RES *res, __taos_async_fn_t fp, void *param) {