Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
50bbb874
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
50bbb874
编写于
1月 21, 2022
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature/qnode
上级
e4bda74d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
67 addition
and
53 deletion
+67
-53
source/libs/qworker/src/qworker.c
source/libs/qworker/src/qworker.c
+55
-49
source/libs/qworker/test/qworkerTests.cpp
source/libs/qworker/test/qworkerTests.cpp
+12
-4
未找到文件。
source/libs/qworker/src/qworker.c
浏览文件 @
50bbb874
...
...
@@ -439,52 +439,6 @@ _return:
QW_RET
(
code
);
}
int32_t
qwDropTask
(
SQWorkerMgmt
*
mgmt
,
uint64_t
sId
,
uint64_t
qId
,
uint64_t
tId
,
bool
*
needRsp
)
{
int32_t
code
=
0
;
SQWTaskCtx
*
ctx
=
NULL
;
bool
locked
=
false
;
QW_ERR_JRET
(
qwAddAcquireTaskCtx
(
QW_FPARAMS
(),
QW_WRITE
,
&
ctx
));
QW_LOCK
(
QW_WRITE
,
&
ctx
->
lock
);
locked
=
true
;
if
(
QW_IS_EVENT_RECEIVED
(
ctx
,
QW_EVENT_DROP
))
{
QW_TASK_WLOG
(
"task already dropping, phase:%d"
,
ctx
->
phase
);
QW_ERR_JRET
(
TSDB_CODE_QRY_DUPLICATTED_OPERATION
);
}
if
(
QW_IN_EXECUTOR
(
ctx
))
{
QW_ERR_JRET
(
qwKillTaskHandle
(
QW_FPARAMS
(),
ctx
));
QW_ERR_JRET
(
qwUpdateTaskStatus
(
QW_FPARAMS
(),
JOB_TASK_STATUS_DROPPING
));
}
else
if
(
ctx
->
phase
>
0
)
{
QW_ERR_JRET
(
qwDropTaskStatus
(
QW_FPARAMS
()));
QW_ERR_JRET
(
qwDropTaskCtx
(
QW_FPARAMS
()));
locked
=
false
;
*
needRsp
=
true
;
}
if
(
locked
)
{
QW_SET_EVENT_RECEIVED
(
ctx
,
QW_EVENT_DROP
);
}
_return:
if
(
code
)
{
QW_SET_RSP_CODE
(
ctx
,
code
);
}
if
(
locked
)
{
QW_UNLOCK
(
QW_WRITE
,
&
ctx
->
lock
);
}
QW_RET
(
code
);
}
int32_t
qwExecTask
(
QW_FPARAMS_DEF
,
qTaskInfo_t
*
taskHandle
,
DataSinkHandle
sinkHandle
,
int8_t
taskType
)
{
int32_t
code
=
0
;
bool
qcontinue
=
true
;
...
...
@@ -619,11 +573,12 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
int8_t
status
=
0
;
SQWTaskCtx
*
ctx
=
NULL
;
bool
locked
=
false
;
bool
ctxAcquired
=
false
;
void
*
readyConnection
=
NULL
;
void
*
dropConnection
=
NULL
;
void
*
cancelConnection
=
NULL
;
QW_SCH_TASK_DLOG
(
"handle event at phase %d"
,
phase
);
QW_SCH_TASK_DLOG
(
"
start to
handle event at phase %d"
,
phase
);
switch
(
phase
)
{
case
QW_PHASE_PRE_QUERY
:
{
...
...
@@ -716,6 +671,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
}
case
QW_PHASE_PRE_FETCH
:
{
QW_ERR_JRET
(
qwAcquireTaskCtx
(
QW_FPARAMS
(),
QW_READ
,
&
ctx
));
ctxAcquired
=
true
;
QW_LOCK
(
QW_WRITE
,
&
ctx
->
lock
);
...
...
@@ -816,6 +772,7 @@ int32_t qwHandleTaskEvent(QW_FPARAMS_DEF, int8_t phase, SQWPhaseInput *input, SQ
}
case
QW_PHASE_PRE_CQUERY
:
{
QW_ERR_JRET
(
qwAcquireTaskCtx
(
QW_FPARAMS
(),
QW_READ
,
&
ctx
));
ctxAcquired
=
true
;
QW_LOCK
(
QW_WRITE
,
&
ctx
->
lock
);
...
...
@@ -914,6 +871,10 @@ _return:
QW_UNLOCK
(
QW_WRITE
,
&
ctx
->
lock
);
}
if
(
ctxAcquired
&&
ctx
)
{
qwReleaseTaskCtx
(
QW_READ
,
mgmt
);
}
if
(
readyConnection
)
{
qwBuildAndSendReadyRsp
(
readyConnection
,
output
->
rspCode
);
QW_TASK_DLOG
(
"ready msg rsped, code:%x"
,
output
->
rspCode
);
...
...
@@ -929,6 +890,7 @@ _return:
QW_TASK_DLOG
(
"cancel msg rsped, code:%x"
,
output
->
rspCode
);
}
QW_SCH_TASK_DLOG
(
"end to handle event at phase %d"
,
phase
);
QW_RET
(
code
);
}
...
...
@@ -1036,6 +998,7 @@ int32_t qwProcessReady(SQWorkerMgmt *mgmt, uint64_t sId, uint64_t qId, uint64_t
if
(
phase
==
QW_PHASE_PRE_QUERY
)
{
QW_SET_EVENT_RECEIVED
(
ctx
,
QW_EVENT_READY
);
ctx
->
readyConnection
=
qwMsg
->
connection
;
QW_TASK_DLOG
(
"ready msg not rsped, phase:%d"
,
phase
);
}
else
if
(
phase
==
QW_PHASE_POST_QUERY
)
{
QW_SET_EVENT_PROCESSED
(
ctx
,
QW_EVENT_READY
);
...
...
@@ -1225,16 +1188,59 @@ _return:
int32_t
qwProcessDrop
(
SQWorkerMgmt
*
mgmt
,
uint64_t
sId
,
uint64_t
qId
,
uint64_t
tId
,
SQWMsg
*
qwMsg
)
{
int32_t
code
=
0
;
bool
needRsp
=
false
;
SQWTaskCtx
*
ctx
=
NULL
;
bool
locked
=
false
;
QW_ERR_JRET
(
qwAddAcquireTaskCtx
(
QW_FPARAMS
(),
QW_WRITE
,
&
ctx
));
QW_ERR_JRET
(
qwDropTask
(
QW_FPARAMS
(),
&
needRsp
));
QW_LOCK
(
QW_WRITE
,
&
ctx
->
lock
);
locked
=
true
;
if
(
QW_IS_EVENT_RECEIVED
(
ctx
,
QW_EVENT_DROP
))
{
QW_TASK_WLOG
(
"task already dropping, phase:%d"
,
ctx
->
phase
);
QW_ERR_JRET
(
TSDB_CODE_QRY_DUPLICATTED_OPERATION
);
}
if
(
QW_IN_EXECUTOR
(
ctx
))
{
QW_ERR_JRET
(
qwKillTaskHandle
(
QW_FPARAMS
(),
ctx
));
QW_ERR_JRET
(
qwUpdateTaskStatus
(
QW_FPARAMS
(),
JOB_TASK_STATUS_DROPPING
));
ctx
->
dropConnection
=
qwMsg
->
connection
;
}
else
if
(
ctx
->
phase
>
0
)
{
QW_ERR_JRET
(
qwDropTaskStatus
(
QW_FPARAMS
()));
QW_ERR_JRET
(
qwDropTaskCtx
(
QW_FPARAMS
()));
locked
=
false
;
needRsp
=
true
;
}
if
(
!
needRsp
)
{
QW_SET_EVENT_RECEIVED
(
ctx
,
QW_EVENT_DROP
);
}
_return:
if
(
code
)
{
QW_SET_RSP_CODE
(
ctx
,
code
);
}
if
(
locked
)
{
QW_UNLOCK
(
QW_WRITE
,
&
ctx
->
lock
);
}
if
(
ctx
)
{
qwReleaseTaskCtx
(
QW_WRITE
,
mgmt
);
}
if
(
TSDB_CODE_SUCCESS
!=
code
||
needRsp
)
{
QW_ERR_RET
(
qwBuildAndSendDropRsp
(
qwMsg
->
connection
,
code
));
QW_TASK_DLOG
(
"drop msg rsped, code:%x"
,
code
);
}
return
TSDB_CODE_SUCCESS
;
QW_RET
(
code
)
;
}
int32_t
qWorkerInit
(
int8_t
nodeType
,
int32_t
nodeId
,
SQWorkerCfg
*
cfg
,
void
**
qWorkerMgmt
,
void
*
nodeObj
,
putReqToQueryQFp
fp
)
{
...
...
source/libs/qworker/test/qworkerTests.cpp
浏览文件 @
50bbb874
...
...
@@ -129,17 +129,17 @@ int32_t qwtCreateExecTask(void* tsdb, int32_t vgId, struct SSubplan* pPlan, qTas
int32_t
idx
=
qwtTestCaseIdx
%
qwtTestCaseNum
;
if
(
0
==
idx
)
{
*
pTaskInfo
=
qwtTestCaseIdx
;
*
handle
=
qwtTestCaseIdx
+
1
;
*
pTaskInfo
=
(
qTaskInfo_t
)
qwtTestCaseIdx
;
*
handle
=
(
DataSinkHandle
)
qwtTestCaseIdx
+
1
;
}
else
if
(
1
==
idx
)
{
*
pTaskInfo
=
NULL
;
*
handle
=
NULL
;
}
else
if
(
2
==
idx
)
{
*
pTaskInfo
=
qwtTestCaseIdx
;
*
pTaskInfo
=
(
qTaskInfo_t
)
qwtTestCaseIdx
;
*
handle
=
NULL
;
}
else
if
(
3
==
idx
)
{
*
pTaskInfo
=
NULL
;
*
handle
=
qwtTestCaseIdx
;
*
handle
=
(
DataSinkHandle
)
qwtTestCaseIdx
;
}
++
qwtTestCaseIdx
;
...
...
@@ -460,6 +460,14 @@ void *controlThread(void *param) {
return
NULL
;
}
void
*
queryQueueThread
(
void
*
param
)
{
}
void
*
fetchQueueThread
(
void
*
param
)
{
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录