From 20c264ba027ba73cfefcfdc493d9b0a63b1104fa Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 6 Jan 2022 11:37:45 +0800 Subject: [PATCH 1/2] [td-11818] fix invalid write. --- source/client/src/clientImpl.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 9f91fa8a23..26c27a5cae 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -535,9 +535,7 @@ void* doFetchRow(SRequestObj* pRequest) { int64_t transporterId = 0; STscObj *pTscObj = pRequest->pTscObj; asyncSendMsgToServer(pTscObj->pTransporter, &pTscObj->pAppInfo->mgmtEp.epSet, &transporterId, body); - tsem_wait(&pRequest->body.rspSem); - destroySendMsgInfo(body); pRequest->type = TDMT_VND_SHOW_TABLES_FETCH; } From ca7ab427f5a159ce804aeb52f84a87d0f761407c Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 6 Jan 2022 14:08:09 +0800 Subject: [PATCH 2/2] [td-11818]fix invalid read. --- source/libs/scheduler/src/scheduler.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/libs/scheduler/src/scheduler.c b/source/libs/scheduler/src/scheduler.c index 90233f86cb..b35823bc76 100644 --- a/source/libs/scheduler/src/scheduler.c +++ b/source/libs/scheduler/src/scheduler.c @@ -346,11 +346,12 @@ _return: int32_t schProcessOnJobPartialSuccess(SSchJob *job) { job->status = JOB_TASK_STATUS_PARTIAL_SUCCEED; + bool needFetch = job->userFetch; if ((!job->attr.needFetch) && job->attr.syncSchedule) { tsem_post(&job->rspSem); } - if (job->userFetch) { + if (needFetch) { SCH_ERR_RET(schFetchFromRemote(job)); } @@ -420,7 +421,6 @@ int32_t schProcessOnTaskSuccess(SSchJob *job, SSchTask *task) { } job->fetchTask = task; - SCH_ERR_RET(schProcessOnJobPartialSuccess(job)); return TSDB_CODE_SUCCESS; @@ -495,7 +495,6 @@ int32_t schProcessRspMsg(SSchJob *job, SSchTask *task, int32_t msgType, char *ms if (rspCode != TSDB_CODE_SUCCESS) { SCH_ERR_JRET(schProcessOnTaskFailure(job, task, rspCode)); } else { -// job->resNumOfRows += rsp->affectedRows; code = schProcessOnTaskSuccess(job, task); if (code) { goto _task_error;