Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b7040ed1
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b7040ed1
编写于
4月 27, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh(stream): support resume from the latest data, and do some internal refactor.
上级
dbdc3153
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
20 addition
and
14 deletion
+20
-14
include/libs/stream/tstream.h
include/libs/stream/tstream.h
+1
-1
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+13
-2
source/libs/stream/src/stream.c
source/libs/stream/src/stream.c
+1
-7
source/libs/stream/src/streamMeta.c
source/libs/stream/src/streamMeta.c
+5
-4
未找到文件。
include/libs/stream/tstream.h
浏览文件 @
b7040ed1
...
...
@@ -51,7 +51,7 @@ enum {
TASK_STATUS__RECOVER_PREPARE
,
TASK_STATUS__RECOVER1
,
TASK_STATUS__RECOVER2
,
TASK_STATUS__RESTORE
,
// only available for source task to replay WAL from the checkpoint
TASK_STATUS__RESTORE
,
// only available for source task to replay WAL from the checkpoint
, todo remove it
TASK_STATUS__PAUSE
,
};
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
b7040ed1
...
...
@@ -1220,11 +1220,22 @@ int32_t tqProcessTaskResumeReq(STQ* pTq, int64_t sversion, char* msg, int32_t ms
SVResumeStreamTaskReq
*
pReq
=
(
SVResumeStreamTaskReq
*
)
msg
;
SStreamTask
*
pTask
=
streamMetaAcquireTask
(
pTq
->
pStreamMeta
,
pReq
->
taskId
);
if
(
pTask
)
{
tqDebug
(
"vgId:%d s-task:%s set normal flag"
,
pTq
->
pStreamMeta
->
vgId
,
pTask
->
id
.
idStr
);
streamSetStatusNormal
(
pTask
);
// no lock needs to secure the access of the version
if
(
pReq
->
igUntreated
)
{
// discard all the data when the stream task is suspended.
pTask
->
chkInfo
.
currentVer
=
sversion
;
tqDebug
(
"vgId:%d s-task:%s resume to normal from the latest version:%"
PRId64
", vnode ver:%"
PRId64
,
pTq
->
pStreamMeta
->
vgId
,
pTask
->
id
.
idStr
,
pTask
->
chkInfo
.
currentVer
,
sversion
);
}
else
{
// from the previous paused version and go on
tqDebug
(
"vgId:%d s-task:%s resume to normal from paused ver:%"
PRId64
", vnode ver:%"
PRId64
,
pTq
->
pStreamMeta
->
vgId
,
pTask
->
id
.
idStr
,
pTask
->
chkInfo
.
currentVer
,
sversion
);
}
streamMetaReleaseTask
(
pTq
->
pStreamMeta
,
pTask
);
tqStartStreamTasks
(
pTq
);
}
return
0
;
}
...
...
@@ -1329,7 +1340,7 @@ int32_t tqStartStreamTasks(STQ* pTq) {
taosWLockLatch
(
&
pMeta
->
lock
);
int32_t
numOfTasks
=
taosHashGetSize
(
pTq
->
pStreamMeta
->
pTasks
);
if
(
numOfTasks
==
0
)
{
tqInfo
(
"vgId:%d no stream tasks exist
s
"
,
vgId
);
tqInfo
(
"vgId:%d no stream tasks exist"
,
vgId
);
taosWUnLockLatch
(
&
pTq
->
pStreamMeta
->
lock
);
return
0
;
}
...
...
source/libs/stream/src/stream.c
浏览文件 @
b7040ed1
...
...
@@ -273,17 +273,11 @@ int32_t streamProcessRunReq(SStreamTask* pTask) {
}
int32_t
streamProcessRetrieveReq
(
SStreamTask
*
pTask
,
SStreamRetrieveReq
*
pReq
,
SRpcMsg
*
pRsp
)
{
qDebug
(
"task %d receive retrieve req from node %d task %d"
,
pTask
->
id
.
taskId
,
pReq
->
srcNodeId
,
pReq
->
srcTaskId
);
qDebug
(
"s-task:%s receive retrieve req from node %d taskId:%d"
,
pTask
->
id
.
idStr
,
pReq
->
srcNodeId
,
pReq
->
srcTaskId
);
streamTaskEnqueueRetrieve
(
pTask
,
pReq
,
pRsp
);
ASSERT
(
pTask
->
taskLevel
!=
TASK_LEVEL__SINK
);
streamSchedExec
(
pTask
);
/*streamTryExec(pTask);*/
/*streamDispatch(pTask);*/
return
0
;
}
...
...
source/libs/stream/src/streamMeta.c
浏览文件 @
b7040ed1
...
...
@@ -206,8 +206,9 @@ SStreamTask* streamMetaAcquireTask(SStreamMeta* pMeta, int32_t taskId) {
void
streamMetaReleaseTask
(
SStreamMeta
*
pMeta
,
SStreamTask
*
pTask
)
{
int32_t
left
=
atomic_sub_fetch_32
(
&
pTask
->
refCnt
,
1
);
ASSERT
(
left
>=
0
);
if
(
left
==
0
)
{
if
(
left
<
0
)
{
qError
(
"task ref is invalid, ref:%d, %s"
,
left
,
pTask
->
id
.
idStr
);
}
else
if
(
left
==
0
)
{
ASSERT
(
streamTaskShouldStop
(
&
pTask
->
status
));
tFreeStreamTask
(
pTask
);
}
...
...
@@ -238,12 +239,12 @@ int32_t streamMetaBegin(SStreamMeta* pMeta) {
int32_t
streamMetaCommit
(
SStreamMeta
*
pMeta
)
{
if
(
tdbCommit
(
pMeta
->
db
,
pMeta
->
txn
)
<
0
)
{
ASSERT
(
0
);
qError
(
"failed to commit stream meta"
);
return
-
1
;
}
if
(
tdbPostCommit
(
pMeta
->
db
,
pMeta
->
txn
)
<
0
)
{
ASSERT
(
0
);
qError
(
"failed to commit stream meta"
);
return
-
1
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录