Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2f90a535
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
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看板
提交
2f90a535
编写于
7月 13, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(stream): set checkpoint id when expanding task.
上级
773ae39d
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
32 addition
and
34 deletion
+32
-34
include/libs/executor/executor.h
include/libs/executor/executor.h
+2
-3
include/libs/stream/tstream.h
include/libs/stream/tstream.h
+3
-3
source/dnode/snode/src/snode.c
source/dnode/snode/src/snode.c
+1
-1
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+11
-12
source/dnode/vnode/src/vnd/vnodeSvr.c
source/dnode/vnode/src/vnd/vnodeSvr.c
+2
-2
source/libs/stream/src/streamCheckpoint.c
source/libs/stream/src/streamCheckpoint.c
+3
-3
source/libs/stream/src/streamExec.c
source/libs/stream/src/streamExec.c
+5
-5
source/libs/stream/src/streamMeta.c
source/libs/stream/src/streamMeta.c
+1
-1
source/libs/stream/src/streamTask.c
source/libs/stream/src/streamTask.c
+4
-4
未找到文件。
include/libs/executor/executor.h
浏览文件 @
2f90a535
...
@@ -41,13 +41,12 @@ typedef struct {
...
@@ -41,13 +41,12 @@ typedef struct {
}
SLocalFetch
;
}
SLocalFetch
;
typedef
struct
{
typedef
struct
{
void
*
tqReader
;
void
*
tqReader
;
// todo remove it
void
*
config
;
void
*
vnode
;
void
*
vnode
;
void
*
mnd
;
void
*
mnd
;
SMsgCb
*
pMsgCb
;
SMsgCb
*
pMsgCb
;
int64_t
version
;
int64_t
version
;
bool
initMetaReader
;
uint64_t
checkpointId
;
bool
initTableReader
;
bool
initTableReader
;
bool
initTqReader
;
bool
initTqReader
;
int32_t
numOfVgroups
;
int32_t
numOfVgroups
;
...
...
include/libs/stream/tstream.h
浏览文件 @
2f90a535
...
@@ -258,9 +258,9 @@ typedef struct SStreamId {
...
@@ -258,9 +258,9 @@ typedef struct SStreamId {
}
SStreamId
;
}
SStreamId
;
typedef
struct
SCheckpointInfo
{
typedef
struct
SCheckpointInfo
{
int64_t
keptC
heckpointId
;
int64_t
c
heckpointId
;
int64_t
version
;
// latest checkpointId version
int64_t
checkpointVer
;
// latest checkpointId version
int64_t
currentVer
;
// current offset in WAL, not serialize it
int64_t
currentVer
;
// current offset in WAL, not serialize it
}
SCheckpointInfo
;
}
SCheckpointInfo
;
typedef
struct
SStreamStatus
{
typedef
struct
SStreamStatus
{
...
...
source/dnode/snode/src/snode.c
浏览文件 @
2f90a535
...
@@ -92,7 +92,7 @@ int32_t sndExpandTask(SSnode *pSnode, SStreamTask *pTask, int64_t ver) {
...
@@ -92,7 +92,7 @@ int32_t sndExpandTask(SSnode *pSnode, SStreamTask *pTask, int64_t ver) {
streamSetupScheduleTrigger
(
pTask
);
streamSetupScheduleTrigger
(
pTask
);
qDebug
(
"snode:%d expand stream task on snode, s-task:%s, checkpoint ver:%"
PRId64
" child id:%d, level:%d"
,
SNODE_HANDLE
,
qDebug
(
"snode:%d expand stream task on snode, s-task:%s, checkpoint ver:%"
PRId64
" child id:%d, level:%d"
,
SNODE_HANDLE
,
pTask
->
id
.
idStr
,
pTask
->
chkInfo
.
version
,
pTask
->
info
.
selfChildId
,
pTask
->
info
.
taskLevel
);
pTask
->
id
.
idStr
,
pTask
->
chkInfo
.
checkpointVer
,
pTask
->
info
.
selfChildId
,
pTask
->
info
.
taskLevel
);
return
0
;
return
0
;
}
}
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
2f90a535
...
@@ -758,12 +758,11 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -758,12 +758,11 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
pTask
->
pMeta
=
pTq
->
pStreamMeta
;
pTask
->
pMeta
=
pTq
->
pStreamMeta
;
// checkpoint exists, restore from the last checkpoint
// checkpoint exists, restore from the last checkpoint
if
(
pTask
->
chkInfo
.
keptCheckpointId
!=
0
)
{
if
(
pTask
->
chkInfo
.
checkpointId
!=
0
)
{
ASSERT
(
pTask
->
chkInfo
.
version
>
0
);
ASSERT
(
pTask
->
chkInfo
.
checkpointVer
>
0
);
pTask
->
chkInfo
.
currentVer
=
pTask
->
chkInfo
.
version
;
pTask
->
chkInfo
.
currentVer
=
pTask
->
chkInfo
.
checkpointVer
;
pTask
->
dataRange
.
range
.
maxVer
=
pTask
->
chkInfo
.
version
;
pTask
->
dataRange
.
range
.
maxVer
=
pTask
->
chkInfo
.
checkpointVer
;
pTask
->
dataRange
.
range
.
minVer
=
pTask
->
chkInfo
.
version
;
pTask
->
dataRange
.
range
.
minVer
=
pTask
->
chkInfo
.
checkpointVer
;
pTask
->
chkInfo
.
currentVer
=
pTask
->
chkInfo
.
version
;
}
else
{
}
else
{
pTask
->
chkInfo
.
currentVer
=
ver
;
pTask
->
chkInfo
.
currentVer
=
ver
;
pTask
->
dataRange
.
range
.
maxVer
=
ver
;
pTask
->
dataRange
.
range
.
maxVer
=
ver
;
...
@@ -785,7 +784,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -785,7 +784,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
}
}
SReadHandle
handle
=
{
SReadHandle
handle
=
{
.
version
=
pTask
->
chkInfo
.
currentVer
,
.
checkpointId
=
pTask
->
chkInfo
.
checkpointId
,
.
vnode
=
pTq
->
pVnode
,
.
vnode
=
pTq
->
pVnode
,
.
initTqReader
=
1
,
.
initTqReader
=
1
,
.
pStateBackend
=
pTask
->
pState
,
.
pStateBackend
=
pTask
->
pState
,
...
@@ -817,7 +816,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -817,7 +816,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
int32_t
numOfVgroups
=
(
int32_t
)
taosArrayGetSize
(
pTask
->
pUpstreamEpInfoList
);
int32_t
numOfVgroups
=
(
int32_t
)
taosArrayGetSize
(
pTask
->
pUpstreamEpInfoList
);
SReadHandle
handle
=
{
SReadHandle
handle
=
{
.
version
=
pTask
->
chkInfo
.
currentVer
,
.
checkpointId
=
pTask
->
chkInfo
.
checkpointId
,
.
vnode
=
NULL
,
.
vnode
=
NULL
,
.
numOfVgroups
=
numOfVgroups
,
.
numOfVgroups
=
numOfVgroups
,
.
pStateBackend
=
pTask
->
pState
,
.
pStateBackend
=
pTask
->
pState
,
...
@@ -871,12 +870,12 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -871,12 +870,12 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
tqInfo
(
"vgId:%d expand stream task, s-task:%s, checkpointId:%"
PRId64
" checkpointVer:%"
PRId64
" currentVer:%"
PRId64
tqInfo
(
"vgId:%d expand stream task, s-task:%s, checkpointId:%"
PRId64
" checkpointVer:%"
PRId64
" currentVer:%"
PRId64
" child id:%d, level:%d, scan-history:%d, trigger:%"
PRId64
" ms"
,
" child id:%d, level:%d, scan-history:%d, trigger:%"
PRId64
" ms"
,
vgId
,
pTask
->
id
.
idStr
,
pChkInfo
->
keptCheckpointId
,
pChkInfo
->
version
,
pChkInfo
->
currentVer
,
vgId
,
pTask
->
id
.
idStr
,
pChkInfo
->
checkpointId
,
pChkInfo
->
checkpointVer
,
pChkInfo
->
currentVer
,
pTask
->
info
.
selfChildId
,
pTask
->
info
.
taskLevel
,
pTask
->
info
.
fillHistory
,
pTask
->
triggerParam
);
pTask
->
info
.
selfChildId
,
pTask
->
info
.
taskLevel
,
pTask
->
info
.
fillHistory
,
pTask
->
triggerParam
);
if
(
pTask
->
chkInfo
.
keptC
heckpointId
!=
0
)
{
if
(
pTask
->
chkInfo
.
c
heckpointId
!=
0
)
{
tqInfo
(
"s-task:%s restore from the checkpointId:%"
PRId64
" ver:%"
PRId64
" currentVer:%"
PRId64
,
pTask
->
id
.
idStr
,
tqInfo
(
"s-task:%s restore from the checkpointId:%"
PRId64
" ver:%"
PRId64
" currentVer:%"
PRId64
,
pTask
->
id
.
idStr
,
pChkInfo
->
keptCheckpointId
,
pChkInfo
->
version
,
pChkInfo
->
currentVer
);
pChkInfo
->
checkpointId
,
pChkInfo
->
checkpointVer
,
pChkInfo
->
currentVer
);
}
}
return
0
;
return
0
;
...
@@ -1277,7 +1276,7 @@ int32_t tqProcessTaskRunReq(STQ* pTq, SRpcMsg* pMsg) {
...
@@ -1277,7 +1276,7 @@ int32_t tqProcessTaskRunReq(STQ* pTq, SRpcMsg* pMsg) {
int8_t
status
=
pTask
->
status
.
taskStatus
;
int8_t
status
=
pTask
->
status
.
taskStatus
;
if
(
status
==
TASK_STATUS__NORMAL
||
status
==
TASK_STATUS__HALT
||
status
==
TASK_STATUS__CK
)
{
if
(
status
==
TASK_STATUS__NORMAL
||
status
==
TASK_STATUS__HALT
||
status
==
TASK_STATUS__CK
)
{
tqDebug
(
"vgId:%d s-task:%s start to process block from inputQ, last chk point:%"
PRId64
,
vgId
,
pTask
->
id
.
idStr
,
tqDebug
(
"vgId:%d s-task:%s start to process block from inputQ, last chk point:%"
PRId64
,
vgId
,
pTask
->
id
.
idStr
,
pTask
->
chkInfo
.
version
);
pTask
->
chkInfo
.
checkpointVer
);
streamProcessRunReq
(
pTask
);
streamProcessRunReq
(
pTask
);
}
else
{
}
else
{
atomic_store_8
(
&
pTask
->
status
.
schedStatus
,
TASK_SCHED_STATUS__INACTIVE
);
atomic_store_8
(
&
pTask
->
status
.
schedStatus
,
TASK_SCHED_STATUS__INACTIVE
);
...
...
source/dnode/vnode/src/vnd/vnodeSvr.c
浏览文件 @
2f90a535
...
@@ -295,7 +295,7 @@ static int32_t vnodePreProcessDeleteMsg(SVnode *pVnode, SRpcMsg *pMsg) {
...
@@ -295,7 +295,7 @@ static int32_t vnodePreProcessDeleteMsg(SVnode *pVnode, SRpcMsg *pMsg) {
SEncoder
*
pCoder
=
&
(
SEncoder
){
0
};
SEncoder
*
pCoder
=
&
(
SEncoder
){
0
};
SDeleteRes
res
=
{
0
};
SDeleteRes
res
=
{
0
};
SReadHandle
handle
=
{.
config
=
&
pVnode
->
config
,
.
vnode
=
pVnode
,
.
pMsgCb
=
&
pVnode
->
msgCb
};
SReadHandle
handle
=
{.
vnode
=
pVnode
,
.
pMsgCb
=
&
pVnode
->
msgCb
};
initStorageAPI
(
&
handle
.
api
);
initStorageAPI
(
&
handle
.
api
);
code
=
qWorkerProcessDeleteMsg
(
&
handle
,
pVnode
->
pQuery
,
pMsg
,
&
res
);
code
=
qWorkerProcessDeleteMsg
(
&
handle
,
pVnode
->
pQuery
,
pMsg
,
&
res
);
...
@@ -580,7 +580,7 @@ int32_t vnodeProcessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg) {
...
@@ -580,7 +580,7 @@ int32_t vnodeProcessQueryMsg(SVnode *pVnode, SRpcMsg *pMsg) {
return
0
;
return
0
;
}
}
SReadHandle
handle
=
{.
config
=
&
pVnode
->
config
,
.
vnode
=
pVnode
,
.
pMsgCb
=
&
pVnode
->
msgCb
};
SReadHandle
handle
=
{.
vnode
=
pVnode
,
.
pMsgCb
=
&
pVnode
->
msgCb
};
initStorageAPI
(
&
handle
.
api
);
initStorageAPI
(
&
handle
.
api
);
switch
(
pMsg
->
msgType
)
{
switch
(
pMsg
->
msgType
)
{
...
...
source/libs/stream/src/streamCheckpoint.c
浏览文件 @
2f90a535
...
@@ -241,8 +241,8 @@ int32_t streamSaveTasks(SStreamMeta* pMeta, int64_t checkpointId) {
...
@@ -241,8 +241,8 @@ int32_t streamSaveTasks(SStreamMeta* pMeta, int64_t checkpointId) {
uint32_t
*
pTaskId
=
taosArrayGet
(
pMeta
->
pTaskList
,
i
);
uint32_t
*
pTaskId
=
taosArrayGet
(
pMeta
->
pTaskList
,
i
);
SStreamTask
*
p
=
*
(
SStreamTask
**
)
taosHashGet
(
pMeta
->
pTasks
,
pTaskId
,
sizeof
(
*
pTaskId
));
SStreamTask
*
p
=
*
(
SStreamTask
**
)
taosHashGet
(
pMeta
->
pTasks
,
pTaskId
,
sizeof
(
*
pTaskId
));
ASSERT
(
p
->
chkInfo
.
keptC
heckpointId
<
p
->
checkpointingId
&&
p
->
checkpointingId
==
checkpointId
);
ASSERT
(
p
->
chkInfo
.
c
heckpointId
<
p
->
checkpointingId
&&
p
->
checkpointingId
==
checkpointId
);
p
->
chkInfo
.
keptC
heckpointId
=
p
->
checkpointingId
;
p
->
chkInfo
.
c
heckpointId
=
p
->
checkpointingId
;
int8_t
prev
=
p
->
status
.
taskStatus
;
int8_t
prev
=
p
->
status
.
taskStatus
;
p
->
status
.
taskStatus
=
TASK_STATUS__NORMAL
;
p
->
status
.
taskStatus
=
TASK_STATUS__NORMAL
;
...
@@ -250,7 +250,7 @@ int32_t streamSaveTasks(SStreamMeta* pMeta, int64_t checkpointId) {
...
@@ -250,7 +250,7 @@ int32_t streamSaveTasks(SStreamMeta* pMeta, int64_t checkpointId) {
streamMetaSaveTask
(
pMeta
,
p
);
streamMetaSaveTask
(
pMeta
,
p
);
qDebug
(
"vgId:%d s-task:%s commit task status after checkpoint completed, checkpointId:%"
PRId64
", ver:%"
PRId64
qDebug
(
"vgId:%d s-task:%s commit task status after checkpoint completed, checkpointId:%"
PRId64
", ver:%"
PRId64
" currentVer:%"
PRId64
", status to be normal, prev:%s"
,
" currentVer:%"
PRId64
", status to be normal, prev:%s"
,
pMeta
->
vgId
,
p
->
id
.
idStr
,
checkpointId
,
p
->
chkInfo
.
version
,
p
->
chkInfo
.
currentVer
,
pMeta
->
vgId
,
p
->
id
.
idStr
,
checkpointId
,
p
->
chkInfo
.
checkpointVer
,
p
->
chkInfo
.
currentVer
,
streamGetTaskStatusStr
(
prev
));
streamGetTaskStatusStr
(
prev
));
}
}
...
...
source/libs/stream/src/streamExec.c
浏览文件 @
2f90a535
...
@@ -482,8 +482,8 @@ int32_t streamExecForAll(SStreamTask* pTask) {
...
@@ -482,8 +482,8 @@ int32_t streamExecForAll(SStreamTask* pTask) {
const
SStreamQueueItem
*
pItem
=
pInput
;
const
SStreamQueueItem
*
pItem
=
pInput
;
qDebug
(
"s-task:%s start to process batch of blocks, num:%d, type:%d"
,
id
,
batchSize
,
pItem
->
type
);
qDebug
(
"s-task:%s start to process batch of blocks, num:%d, type:%d"
,
id
,
batchSize
,
pItem
->
type
);
int64_t
ver
=
pTask
->
chkInfo
.
version
;
int64_t
ver
=
pTask
->
chkInfo
.
checkpointVer
;
doSetStreamInputBlock
(
pTask
,
pInput
,
&
pTask
->
chkInfo
.
version
,
id
);
doSetStreamInputBlock
(
pTask
,
pInput
,
&
pTask
->
chkInfo
.
checkpointVer
,
id
);
int64_t
resSize
=
0
;
int64_t
resSize
=
0
;
int32_t
totalBlocks
=
0
;
int32_t
totalBlocks
=
0
;
...
@@ -494,11 +494,11 @@ int32_t streamExecForAll(SStreamTask* pTask) {
...
@@ -494,11 +494,11 @@ int32_t streamExecForAll(SStreamTask* pTask) {
resSize
/
1048576
.
0
,
totalBlocks
);
resSize
/
1048576
.
0
,
totalBlocks
);
// update the currentVer if processing the submit blocks.
// update the currentVer if processing the submit blocks.
ASSERT
(
pTask
->
chkInfo
.
version
<=
pTask
->
chkInfo
.
currentVer
&&
ver
<=
pTask
->
chkInfo
.
version
);
ASSERT
(
pTask
->
chkInfo
.
checkpointVer
<=
pTask
->
chkInfo
.
currentVer
&&
ver
<=
pTask
->
chkInfo
.
checkpointVer
);
if
(
ver
!=
pTask
->
chkInfo
.
version
)
{
if
(
ver
!=
pTask
->
chkInfo
.
checkpointVer
)
{
qDebug
(
"s-task:%s update checkpoint ver from %"
PRId64
" to %"
PRId64
,
pTask
->
id
.
idStr
,
ver
,
qDebug
(
"s-task:%s update checkpoint ver from %"
PRId64
" to %"
PRId64
,
pTask
->
id
.
idStr
,
ver
,
pTask
->
chkInfo
.
version
);
pTask
->
chkInfo
.
checkpointVer
);
}
}
streamFreeQitem
(
pInput
);
streamFreeQitem
(
pInput
);
...
...
source/libs/stream/src/streamMeta.c
浏览文件 @
2f90a535
...
@@ -434,7 +434,7 @@ int32_t streamLoadTasks(SStreamMeta* pMeta, int64_t ver) {
...
@@ -434,7 +434,7 @@ int32_t streamLoadTasks(SStreamMeta* pMeta, int64_t ver) {
// remove duplicate
// remove duplicate
void
*
p
=
taosHashGet
(
pMeta
->
pTasks
,
&
pTask
->
id
.
taskId
,
sizeof
(
pTask
->
id
.
taskId
));
void
*
p
=
taosHashGet
(
pMeta
->
pTasks
,
&
pTask
->
id
.
taskId
,
sizeof
(
pTask
->
id
.
taskId
));
if
(
p
==
NULL
)
{
if
(
p
==
NULL
)
{
if
(
pMeta
->
expandFunc
(
pMeta
->
ahandle
,
pTask
,
pTask
->
chkInfo
.
version
)
<
0
)
{
if
(
pMeta
->
expandFunc
(
pMeta
->
ahandle
,
pTask
,
pTask
->
chkInfo
.
checkpointVer
)
<
0
)
{
tdbFree
(
pKey
);
tdbFree
(
pKey
);
tdbFree
(
pVal
);
tdbFree
(
pVal
);
tdbTbcClose
(
pCur
);
tdbTbcClose
(
pCur
);
...
...
source/libs/stream/src/streamTask.c
浏览文件 @
2f90a535
...
@@ -85,8 +85,8 @@ int32_t tEncodeStreamTask(SEncoder* pEncoder, const SStreamTask* pTask) {
...
@@ -85,8 +85,8 @@ int32_t tEncodeStreamTask(SEncoder* pEncoder, const SStreamTask* pTask) {
if
(
tEncodeI32
(
pEncoder
,
pTask
->
info
.
nodeId
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
pEncoder
,
pTask
->
info
.
nodeId
)
<
0
)
return
-
1
;
if
(
tEncodeSEpSet
(
pEncoder
,
&
pTask
->
info
.
epSet
)
<
0
)
return
-
1
;
if
(
tEncodeSEpSet
(
pEncoder
,
&
pTask
->
info
.
epSet
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
chkInfo
.
keptC
heckpointId
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
chkInfo
.
c
heckpointId
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
chkInfo
.
version
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
chkInfo
.
checkpointVer
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
pEncoder
,
pTask
->
info
.
fillHistory
)
<
0
)
return
-
1
;
if
(
tEncodeI8
(
pEncoder
,
pTask
->
info
.
fillHistory
)
<
0
)
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
historyTaskId
.
streamId
))
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
historyTaskId
.
streamId
))
return
-
1
;
...
@@ -148,8 +148,8 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
...
@@ -148,8 +148,8 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
if
(
tDecodeI32
(
pDecoder
,
&
pTask
->
info
.
nodeId
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
pDecoder
,
&
pTask
->
info
.
nodeId
)
<
0
)
return
-
1
;
if
(
tDecodeSEpSet
(
pDecoder
,
&
pTask
->
info
.
epSet
)
<
0
)
return
-
1
;
if
(
tDecodeSEpSet
(
pDecoder
,
&
pTask
->
info
.
epSet
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
chkInfo
.
keptC
heckpointId
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
chkInfo
.
c
heckpointId
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
chkInfo
.
version
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
chkInfo
.
checkpointVer
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
pDecoder
,
&
pTask
->
info
.
fillHistory
)
<
0
)
return
-
1
;
if
(
tDecodeI8
(
pDecoder
,
&
pTask
->
info
.
fillHistory
)
<
0
)
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
historyTaskId
.
streamId
))
return
-
1
;
if
(
tDecodeI64
(
pDecoder
,
&
pTask
->
historyTaskId
.
streamId
))
return
-
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录