feature/qnode
This commit is contained in:
parent
c3102ecc07
commit
3af9da8f51
|
@ -83,7 +83,7 @@ typedef struct SQWMsg {
|
||||||
} SQWMsg;
|
} SQWMsg;
|
||||||
|
|
||||||
typedef struct SQWPhaseInput {
|
typedef struct SQWPhaseInput {
|
||||||
int8_t status;
|
int8_t taskStatus;
|
||||||
int8_t taskType;
|
int8_t taskType;
|
||||||
int32_t code;
|
int32_t code;
|
||||||
qTaskInfo_t taskHandle;
|
qTaskInfo_t taskHandle;
|
||||||
|
|
|
@ -240,14 +240,14 @@ void qwReleaseTaskStatus(int32_t rwType, SQWSchStatus *sch) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t qwAcquireTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, int32_t rwType, SQWTaskCtx **ctx) {
|
int32_t qwAcquireTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, SQWTaskCtx **ctx) {
|
||||||
char id[sizeof(qId) + sizeof(tId)] = {0};
|
char id[sizeof(qId) + sizeof(tId)] = {0};
|
||||||
QW_SET_QTID(id, qId, tId);
|
QW_SET_QTID(id, qId, tId);
|
||||||
|
|
||||||
QW_LOCK(rwType, &mgmt->ctxLock);
|
//QW_LOCK(rwType, &mgmt->ctxLock);
|
||||||
*ctx = taosHashGet(mgmt->ctxHash, id, sizeof(id));
|
*ctx = taosHashAcquire(mgmt->ctxHash, id, sizeof(id));
|
||||||
if (NULL == (*ctx)) {
|
if (NULL == (*ctx)) {
|
||||||
QW_UNLOCK(rwType, &mgmt->ctxLock);
|
//QW_UNLOCK(rwType, &mgmt->ctxLock);
|
||||||
QW_TASK_ELOG("ctx not in ctxHash, id:%s", id);
|
QW_TASK_ELOG("ctx not in ctxHash, id:%s", id);
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_RES_CACHE_NOT_EXIST);
|
QW_ERR_RET(TSDB_CODE_QRY_RES_CACHE_NOT_EXIST);
|
||||||
}
|
}
|
||||||
|
@ -268,19 +268,19 @@ int32_t qwGetTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tI
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qwAddTaskCtxImpl(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, int32_t rwType, int32_t status, SQWTaskCtx **ctx) {
|
int32_t qwAddTaskCtxImpl(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, bool acquire, int32_t status, SQWTaskCtx **ctx) {
|
||||||
char id[sizeof(qId) + sizeof(tId)] = {0};
|
char id[sizeof(qId) + sizeof(tId)] = {0};
|
||||||
QW_SET_QTID(id, qId, tId);
|
QW_SET_QTID(id, qId, tId);
|
||||||
|
|
||||||
SQWTaskCtx nctx = {0};
|
SQWTaskCtx nctx = {0};
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &mgmt->ctxLock);
|
//QW_LOCK(QW_WRITE, &mgmt->ctxLock);
|
||||||
int32_t code = taosHashPut(mgmt->ctxHash, id, sizeof(id), &nctx, sizeof(SQWTaskCtx));
|
int32_t code = taosHashPut(mgmt->ctxHash, id, sizeof(id), &nctx, sizeof(SQWTaskCtx));
|
||||||
if (0 != code) {
|
if (0 != code) {
|
||||||
QW_UNLOCK(QW_WRITE, &mgmt->ctxLock);
|
//QW_UNLOCK(QW_WRITE, &mgmt->ctxLock);
|
||||||
|
|
||||||
if (HASH_NODE_EXIST(code)) {
|
if (HASH_NODE_EXIST(code)) {
|
||||||
if (rwType && ctx) {
|
if (acquire && ctx) {
|
||||||
QW_RET(qwAcquireTaskCtx(QW_FPARAMS(), rwType, ctx));
|
QW_RET(qwAcquireTaskCtx(QW_FPARAMS(), rwType, ctx));
|
||||||
} else if (ctx) {
|
} else if (ctx) {
|
||||||
QW_RET(qwGetTaskCtx(QW_FPARAMS(), ctx));
|
QW_RET(qwGetTaskCtx(QW_FPARAMS(), ctx));
|
||||||
|
@ -293,9 +293,9 @@ int32_t qwAddTaskCtxImpl(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
|
QW_ERR_RET(TSDB_CODE_QRY_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QW_UNLOCK(QW_WRITE, &mgmt->ctxLock);
|
//QW_UNLOCK(QW_WRITE, &mgmt->ctxLock);
|
||||||
|
|
||||||
if (rwType && ctx) {
|
if (acquire && ctx) {
|
||||||
QW_RET(qwAcquireTaskCtx(QW_FPARAMS(), rwType, ctx));
|
QW_RET(qwAcquireTaskCtx(QW_FPARAMS(), rwType, ctx));
|
||||||
} else if (ctx) {
|
} else if (ctx) {
|
||||||
QW_RET(qwGetTaskCtx(QW_FPARAMS(), ctx));
|
QW_RET(qwGetTaskCtx(QW_FPARAMS(), ctx));
|
||||||
|
@ -305,22 +305,23 @@ int32_t qwAddTaskCtxImpl(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qwAddTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId) {
|
int32_t qwAddTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId) {
|
||||||
QW_RET(qwAddTaskCtxImpl(QW_FPARAMS(), 0, 0, NULL));
|
QW_RET(qwAddTaskCtxImpl(QW_FPARAMS(), false, 0, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int32_t qwAddAcquireTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, int32_t rwType, SQWTaskCtx **ctx) {
|
int32_t qwAddAcquireTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, SQWTaskCtx **ctx) {
|
||||||
return qwAddTaskCtxImpl(QW_FPARAMS(), rwType, 0, ctx);
|
return qwAddTaskCtxImpl(QW_FPARAMS(), true, 0, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qwAddGetTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, SQWTaskCtx **ctx) {
|
int32_t qwAddGetTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, SQWTaskCtx **ctx) {
|
||||||
return qwAddTaskCtxImpl(QW_FPARAMS(), 0, 0, ctx);
|
return qwAddTaskCtxImpl(QW_FPARAMS(), false, 0, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void qwReleaseTaskCtx(int32_t rwType, SQWorkerMgmt *mgmt) {
|
void qwReleaseTaskCtx(SQWorkerMgmt *mgmt, void *ctx) {
|
||||||
QW_UNLOCK(rwType, &mgmt->ctxLock);
|
//QW_UNLOCK(rwType, &mgmt->ctxLock);
|
||||||
|
taosHashRelease(mgmt->ctxHash, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void qwFreeTaskHandle(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle) {
|
void qwFreeTaskHandle(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle) {
|
||||||
|
@ -355,7 +356,7 @@ void qwFreeTask(QW_FPARAMS_DEF, SQWTaskCtx *ctx) {
|
||||||
|
|
||||||
|
|
||||||
// Note: NEED CTX HASH LOCKED BEFORE ENTRANCE
|
// Note: NEED CTX HASH LOCKED BEFORE ENTRANCE
|
||||||
int32_t qwDropTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId) {
|
int32_t qwDropTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, int32_t rwType) {
|
||||||
char id[sizeof(qId) + sizeof(tId)] = {0};
|
char id[sizeof(qId) + sizeof(tId)] = {0};
|
||||||
QW_SET_QTID(id, qId, tId);
|
QW_SET_QTID(id, qId, tId);
|
||||||
SQWTaskCtx octx;
|
SQWTaskCtx octx;
|
||||||
|
@ -367,6 +368,13 @@ int32_t qwDropTaskCtx(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t t
|
||||||
|
|
||||||
octx = *ctx;
|
octx = *ctx;
|
||||||
|
|
||||||
|
atomic_store_ptr(&ctx->taskHandle, NULL);
|
||||||
|
atomic_store_ptr(&ctx->sinkHandle, NULL);
|
||||||
|
|
||||||
|
if (rwType) {
|
||||||
|
QW_UNLOCK(rwType, &ctx->lock);
|
||||||
|
}
|
||||||
|
|
||||||
if (taosHashRemove(mgmt->ctxHash, id, sizeof(id))) {
|
if (taosHashRemove(mgmt->ctxHash, id, sizeof(id))) {
|
||||||
QW_TASK_ELOG_E("taosHashRemove from ctx hash failed");
|
QW_TASK_ELOG_E("taosHashRemove from ctx hash failed");
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_RES_CACHE_NOT_EXIST);
|
QW_ERR_RET(TSDB_CODE_QRY_RES_CACHE_NOT_EXIST);
|
||||||
|
@ -439,7 +447,7 @@ _return:
|
||||||
QW_RET(code);
|
QW_RET(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qwExecTask(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle, DataSinkHandle sinkHandle, int8_t taskType) {
|
int32_t qwExecTask(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle, DataSinkHandle sinkHandle, int8_t taskType, bool execOnce) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
bool qcontinue = true;
|
bool qcontinue = true;
|
||||||
SSDataBlock* pRes = NULL;
|
SSDataBlock* pRes = NULL;
|
||||||
|
@ -463,6 +471,7 @@ int32_t qwExecTask(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle, DataSinkHandle sinkH
|
||||||
if (TASK_TYPE_TEMP == taskType) {
|
if (TASK_TYPE_TEMP == taskType) {
|
||||||
qwFreeTaskHandle(QW_FPARAMS(), taskHandle);
|
qwFreeTaskHandle(QW_FPARAMS(), taskHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -475,7 +484,7 @@ int32_t qwExecTask(QW_FPARAMS_DEF, qTaskInfo_t *taskHandle, DataSinkHandle sinkH
|
||||||
|
|
||||||
QW_TASK_DLOG("data put into sink, rows:%d, continueExecTask:%d", pRes->info.rows, qcontinue);
|
QW_TASK_DLOG("data put into sink, rows:%d, continueExecTask:%d", pRes->info.rows, qcontinue);
|
||||||
|
|
||||||
if (!qcontinue) {
|
if (execOnce || (!qcontinue)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -573,7 +582,6 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
int8_t status = 0;
|
int8_t status = 0;
|
||||||
SQWTaskCtx *ctx = NULL;
|
SQWTaskCtx *ctx = NULL;
|
||||||
bool locked = false;
|
bool locked = false;
|
||||||
bool ctxAcquired = false;
|
|
||||||
void *readyConnection = NULL;
|
void *readyConnection = NULL;
|
||||||
void *dropConnection = NULL;
|
void *dropConnection = NULL;
|
||||||
void *cancelConnection = NULL;
|
void *cancelConnection = NULL;
|
||||||
|
@ -582,7 +590,9 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
|
|
||||||
switch (phase) {
|
switch (phase) {
|
||||||
case QW_PHASE_PRE_QUERY: {
|
case QW_PHASE_PRE_QUERY: {
|
||||||
QW_ERR_JRET(qwAddGetTaskCtx(QW_FPARAMS(), &ctx));
|
QW_ERR_JRET(qwAddAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
atomic_store_32(&ctx->phase, phase);
|
atomic_store_32(&ctx->phase, phase);
|
||||||
atomic_store_8(&ctx->taskType, input->taskType);
|
atomic_store_8(&ctx->taskType, input->taskType);
|
||||||
|
@ -597,7 +607,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
|
|
||||||
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_DROP)) {
|
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_DROP)) {
|
||||||
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
||||||
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS(), QW_WRITE));
|
||||||
|
|
||||||
output->needStop = true;
|
output->needStop = true;
|
||||||
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
||||||
|
@ -621,7 +631,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QW_PHASE_POST_QUERY: {
|
case QW_PHASE_POST_QUERY: {
|
||||||
QW_ERR_JRET(qwGetTaskCtx(QW_FPARAMS(), &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -642,7 +652,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
output->needStop = true;
|
output->needStop = true;
|
||||||
|
|
||||||
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
||||||
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS(), QW_WRITE));
|
||||||
|
|
||||||
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
||||||
dropConnection = ctx->dropConnection;
|
dropConnection = ctx->dropConnection;
|
||||||
|
@ -665,13 +675,12 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!output->needStop) {
|
if (!output->needStop) {
|
||||||
QW_ERR_JRET(qwUpdateTaskStatus(QW_FPARAMS(), input->status));
|
QW_ERR_JRET(qwUpdateTaskStatus(QW_FPARAMS(), input->taskStatus));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QW_PHASE_PRE_FETCH: {
|
case QW_PHASE_PRE_FETCH: {
|
||||||
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), QW_READ, &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), QW_READ, &ctx));
|
||||||
ctxAcquired = true;
|
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -686,6 +695,13 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
QW_ERR_JRET(TSDB_CODE_QRY_TASK_CANCELLED);
|
QW_ERR_JRET(TSDB_CODE_QRY_TASK_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (QW_IS_EVENT_PROCESSED(ctx, QW_EVENT_DROP)) {
|
||||||
|
QW_TASK_WLOG("task already dropped, phase:%d", phase);
|
||||||
|
output->needStop = true;
|
||||||
|
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
||||||
|
QW_ERR_JRET(TSDB_CODE_QRY_TASK_DROPPED);
|
||||||
|
}
|
||||||
|
|
||||||
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_DROP)) {
|
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_DROP)) {
|
||||||
QW_TASK_ELOG("drop event at wrong phase, phase:%d", phase);
|
QW_TASK_ELOG("drop event at wrong phase, phase:%d", phase);
|
||||||
output->needStop = true;
|
output->needStop = true;
|
||||||
|
@ -721,7 +737,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QW_PHASE_POST_FETCH: {
|
case QW_PHASE_POST_FETCH: {
|
||||||
QW_ERR_JRET(qwGetTaskCtx(QW_FPARAMS(), &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -743,7 +759,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
output->needStop = true;
|
output->needStop = true;
|
||||||
|
|
||||||
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
||||||
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS(), QW_WRITE));
|
||||||
|
|
||||||
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
||||||
dropConnection = ctx->dropConnection;
|
dropConnection = ctx->dropConnection;
|
||||||
|
@ -772,7 +788,6 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
}
|
}
|
||||||
case QW_PHASE_PRE_CQUERY: {
|
case QW_PHASE_PRE_CQUERY: {
|
||||||
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), QW_READ, &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), QW_READ, &ctx));
|
||||||
ctxAcquired = true;
|
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -808,7 +823,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QW_PHASE_POST_CQUERY: {
|
case QW_PHASE_POST_CQUERY: {
|
||||||
QW_ERR_JRET(qwGetTaskCtx(QW_FPARAMS(), &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -830,7 +845,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
|
||||||
output->needStop = true;
|
output->needStop = true;
|
||||||
|
|
||||||
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
||||||
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS(), QW_WRITE));
|
||||||
|
|
||||||
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
output->rspCode = TSDB_CODE_QRY_TASK_DROPPED;
|
||||||
dropConnection = ctx->dropConnection;
|
dropConnection = ctx->dropConnection;
|
||||||
|
@ -871,8 +886,8 @@ _return:
|
||||||
QW_UNLOCK(QW_WRITE, &ctx->lock);
|
QW_UNLOCK(QW_WRITE, &ctx->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxAcquired && ctx) {
|
if (ctx) {
|
||||||
qwReleaseTaskCtx(QW_READ, mgmt);
|
qwReleaseTaskCtx(mgmt, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readyConnection) {
|
if (readyConnection) {
|
||||||
|
@ -896,7 +911,7 @@ _return:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t qwProcessQuery(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t tId, SQWMsg *qwMsg, int8_t taskType) {
|
int32_t qwProcessQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg, int8_t taskType) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
bool queryRsped = false;
|
bool queryRsped = false;
|
||||||
bool needStop = false;
|
bool needStop = false;
|
||||||
|
@ -944,7 +959,7 @@ int32_t qwProcessQuery(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t
|
||||||
queryRsped = true;
|
queryRsped = true;
|
||||||
|
|
||||||
if (pTaskInfo && sinkHandle) {
|
if (pTaskInfo && sinkHandle) {
|
||||||
QW_ERR_JRET(qwExecTask(QW_FPARAMS(), &pTaskInfo, sinkHandle, taskType));
|
QW_ERR_JRET(qwExecTask(QW_FPARAMS(), &pTaskInfo, sinkHandle, taskType, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
@ -954,14 +969,8 @@ _return:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!queryRsped) {
|
if (!queryRsped) {
|
||||||
code = qwBuildAndSendQueryRsp(qwMsg->connection, rspCode);
|
qwBuildAndSendQueryRsp(qwMsg->connection, rspCode);
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
QW_TASK_DLOG("query msg rsped, code:%x", rspCode);
|
||||||
QW_TASK_DLOG("query msg rsped, code:%d", rspCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS == rspCode && code) {
|
|
||||||
rspCode = code;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (needStop) {
|
if (needStop) {
|
||||||
|
@ -971,12 +980,7 @@ _return:
|
||||||
input.code = rspCode;
|
input.code = rspCode;
|
||||||
input.taskHandle = pTaskInfo;
|
input.taskHandle = pTaskInfo;
|
||||||
input.sinkHandle = sinkHandle;
|
input.sinkHandle = sinkHandle;
|
||||||
|
input.taskStatus = rspCode ? JOB_TASK_STATUS_FAILED : JOB_TASK_STATUS_PARTIAL_SUCCEED;
|
||||||
if (TSDB_CODE_SUCCESS != rspCode) {
|
|
||||||
input.status = JOB_TASK_STATUS_FAILED;
|
|
||||||
} else {
|
|
||||||
input.status = JOB_TASK_STATUS_PARTIAL_SUCCEED;
|
|
||||||
}
|
|
||||||
|
|
||||||
QW_ERR_RET(qwHandleTaskEvent(QW_FPARAMS(), QW_PHASE_POST_QUERY, &input, &output));
|
QW_ERR_RET(qwHandleTaskEvent(QW_FPARAMS(), QW_PHASE_POST_QUERY, &input, &output));
|
||||||
|
|
||||||
|
@ -990,7 +994,7 @@ int32_t qwProcessReady(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t
|
||||||
bool needRsp = false;
|
bool needRsp = false;
|
||||||
int32_t rspCode = 0;
|
int32_t rspCode = 0;
|
||||||
|
|
||||||
QW_ERR_JRET(qwGetTaskCtx(QW_FPARAMS(), &ctx));
|
QW_ERR_JRET(qwAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -1020,6 +1024,7 @@ _return:
|
||||||
|
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
QW_UNLOCK(QW_WRITE, &ctx->lock);
|
QW_UNLOCK(QW_WRITE, &ctx->lock);
|
||||||
|
qwReleaseTaskCtx(mgmt, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (needRsp) {
|
if (needRsp) {
|
||||||
|
@ -1059,7 +1064,7 @@ int32_t qwProcessCQuery(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t
|
||||||
|
|
||||||
DataSinkHandle sinkHandle = ctx->sinkHandle;
|
DataSinkHandle sinkHandle = ctx->sinkHandle;
|
||||||
|
|
||||||
QW_ERR_JRET(qwExecTask(QW_FPARAMS(), &ctx->taskHandle, sinkHandle, ctx->taskType));
|
QW_ERR_JRET(qwExecTask(QW_FPARAMS(), &ctx->taskHandle, sinkHandle, ctx->taskType, QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_FETCH)));
|
||||||
|
|
||||||
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_FETCH)) {
|
if (QW_IS_EVENT_RECEIVED(ctx, QW_EVENT_FETCH)) {
|
||||||
SOutputData sOutput = {0};
|
SOutputData sOutput = {0};
|
||||||
|
@ -1191,7 +1196,7 @@ int32_t qwProcessDrop(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t t
|
||||||
SQWTaskCtx *ctx = NULL;
|
SQWTaskCtx *ctx = NULL;
|
||||||
bool locked = false;
|
bool locked = false;
|
||||||
|
|
||||||
QW_ERR_JRET(qwAddAcquireTaskCtx(QW_FPARAMS(), QW_WRITE, &ctx));
|
QW_ERR_JRET(qwAddAcquireTaskCtx(QW_FPARAMS(), &ctx));
|
||||||
|
|
||||||
QW_LOCK(QW_WRITE, &ctx->lock);
|
QW_LOCK(QW_WRITE, &ctx->lock);
|
||||||
|
|
||||||
|
@ -1210,7 +1215,7 @@ int32_t qwProcessDrop(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t t
|
||||||
ctx->dropConnection = qwMsg->connection;
|
ctx->dropConnection = qwMsg->connection;
|
||||||
} else if (ctx->phase > 0) {
|
} else if (ctx->phase > 0) {
|
||||||
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskStatus(QW_FPARAMS()));
|
||||||
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS()));
|
QW_ERR_JRET(qwDropTaskCtx(QW_FPARAMS(), QW_WRITE));
|
||||||
|
|
||||||
locked = false;
|
locked = false;
|
||||||
needRsp = true;
|
needRsp = true;
|
||||||
|
@ -1226,12 +1231,8 @@ _return:
|
||||||
QW_SET_RSP_CODE(ctx, code);
|
QW_SET_RSP_CODE(ctx, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locked) {
|
|
||||||
QW_UNLOCK(QW_WRITE, &ctx->lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx) {
|
if (ctx) {
|
||||||
qwReleaseTaskCtx(QW_WRITE, mgmt);
|
qwReleaseTaskCtx(mgmt, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS != code || needRsp) {
|
if (TSDB_CODE_SUCCESS != code || needRsp) {
|
||||||
|
|
|
@ -273,7 +273,7 @@ int32_t qWorkerProcessQueryMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
|
||||||
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
||||||
|
|
||||||
if (NULL == msg || pMsg->contLen <= sizeof(*msg)) {
|
if (NULL == msg || pMsg->contLen <= sizeof(*msg)) {
|
||||||
QW_ELOG("invalid query msg, contLen:%d", pMsg->contLen);
|
QW_ELOG("invalid query msg, msg:%p, msgLen:%d", msg, pMsg->contLen);
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ int32_t qWorkerProcessCQueryMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
|
||||||
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
||||||
|
|
||||||
if (NULL == msg || pMsg->contLen <= sizeof(*msg)) {
|
if (NULL == msg || pMsg->contLen <= sizeof(*msg)) {
|
||||||
QW_ELOG("invalid cquery msg, contLen:%d", pMsg->contLen);
|
QW_ELOG("invalid cquery msg, msg:%p, msgLen:%d", msg, pMsg->contLen);
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ int32_t qWorkerProcessReadyMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg){
|
||||||
|
|
||||||
SResReadyReq *msg = pMsg->pCont;
|
SResReadyReq *msg = pMsg->pCont;
|
||||||
if (NULL == msg || pMsg->contLen < sizeof(*msg)) {
|
if (NULL == msg || pMsg->contLen < sizeof(*msg)) {
|
||||||
qError("invalid task status msg");
|
QW_ELOG("invalid task ready msg, msg:%p, msgLen:%d", msg, pMsg->contLen);
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,6 +398,7 @@ int32_t qWorkerProcessFetchMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
|
||||||
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
SQWorkerMgmt *mgmt = (SQWorkerMgmt *)qWorkerMgmt;
|
||||||
|
|
||||||
if (NULL == msg || pMsg->contLen < sizeof(*msg)) {
|
if (NULL == msg || pMsg->contLen < sizeof(*msg)) {
|
||||||
|
QW_ELOG("invalid fetch msg, msg:%p, msgLen:%d", msg, pMsg->contLen);
|
||||||
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
QW_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue