Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
813f4cb3
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
813f4cb3
编写于
7月 13, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: do some internal refactor.
上级
af7f78ad
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
53 addition
and
24 deletion
+53
-24
include/libs/stream/tstream.h
include/libs/stream/tstream.h
+6
-2
source/dnode/mnode/impl/src/mndScheduler.c
source/dnode/mnode/impl/src/mndScheduler.c
+3
-3
source/dnode/snode/src/snode.c
source/dnode/snode/src/snode.c
+2
-2
source/dnode/vnode/src/tq/tq.c
source/dnode/vnode/src/tq/tq.c
+2
-1
source/libs/stream/src/stream.c
source/libs/stream/src/stream.c
+24
-1
source/libs/stream/src/streamCheckpoint.c
source/libs/stream/src/streamCheckpoint.c
+6
-5
source/libs/stream/src/streamDispatch.c
source/libs/stream/src/streamDispatch.c
+3
-3
source/libs/stream/src/streamRecover.c
source/libs/stream/src/streamRecover.c
+2
-2
source/libs/stream/src/streamTask.c
source/libs/stream/src/streamTask.c
+5
-5
未找到文件。
include/libs/stream/tstream.h
浏览文件 @
813f4cb3
...
@@ -249,6 +249,7 @@ typedef struct SStreamChildEpInfo {
...
@@ -249,6 +249,7 @@ typedef struct SStreamChildEpInfo {
int32_t
childId
;
int32_t
childId
;
int32_t
taskId
;
int32_t
taskId
;
SEpSet
epSet
;
SEpSet
epSet
;
bool
dataAllowed
;
// denote if the data from this upstream task is allowed to put into inputQ, not serialize it
}
SStreamChildEpInfo
;
}
SStreamChildEpInfo
;
typedef
struct
SStreamId
{
typedef
struct
SStreamId
{
...
@@ -310,8 +311,9 @@ struct SStreamTask {
...
@@ -310,8 +311,9 @@ struct SStreamTask {
SHistDataRange
dataRange
;
SHistDataRange
dataRange
;
SStreamId
historyTaskId
;
SStreamId
historyTaskId
;
SStreamId
streamTaskId
;
SStreamId
streamTaskId
;
SArray
*
pUpstreamEpInfoList
;
// SArray<SStreamChildEpInfo*>, // children info
SArray
*
pUpstreamInfoList
;
// SArray<SStreamChildEpInfo*>, // children info
SArray
*
pRpcMsgList
;
// SArray<SRpcMsg*>
SArray
*
pRpcMsgList
;
// SArray<SRpcMsg*>
// output
// output
union
{
union
{
STaskDispatcherFixedEp
fixedEpDispatcher
;
STaskDispatcherFixedEp
fixedEpDispatcher
;
...
@@ -554,6 +556,8 @@ int32_t streamProcessDispatchMsg(SStreamTask* pTask, SStreamDispatchReq* pReq, S
...
@@ -554,6 +556,8 @@ int32_t streamProcessDispatchMsg(SStreamTask* pTask, SStreamDispatchReq* pReq, S
int32_t
streamProcessDispatchRsp
(
SStreamTask
*
pTask
,
SStreamDispatchRsp
*
pRsp
,
int32_t
code
);
int32_t
streamProcessDispatchRsp
(
SStreamTask
*
pTask
,
SStreamDispatchRsp
*
pRsp
,
int32_t
code
);
int32_t
streamProcessRetrieveReq
(
SStreamTask
*
pTask
,
SStreamRetrieveReq
*
pReq
,
SRpcMsg
*
pMsg
);
int32_t
streamProcessRetrieveReq
(
SStreamTask
*
pTask
,
SStreamRetrieveReq
*
pReq
,
SRpcMsg
*
pMsg
);
void
streamTaskOpenUpstreamInput
(
SStreamTask
*
pTask
);
void
streamTaskCloseUpstreamInput
(
SStreamTask
*
pTask
,
int32_t
taskId
);
void
streamTaskInputFail
(
SStreamTask
*
pTask
);
void
streamTaskInputFail
(
SStreamTask
*
pTask
);
int32_t
streamTryExec
(
SStreamTask
*
pTask
);
int32_t
streamTryExec
(
SStreamTask
*
pTask
);
...
...
source/dnode/mnode/impl/src/mndScheduler.c
浏览文件 @
813f4cb3
...
@@ -301,11 +301,11 @@ int32_t setEpToDownstreamTask(SStreamTask* pTask, SStreamTask* pDownstream) {
...
@@ -301,11 +301,11 @@ int32_t setEpToDownstreamTask(SStreamTask* pTask, SStreamTask* pDownstream) {
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
if
(
pDownstream
->
pUpstream
Ep
InfoList
==
NULL
)
{
if
(
pDownstream
->
pUpstreamInfoList
==
NULL
)
{
pDownstream
->
pUpstream
Ep
InfoList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
pDownstream
->
pUpstreamInfoList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
}
}
taosArrayPush
(
pDownstream
->
pUpstream
Ep
InfoList
,
&
pEpInfo
);
taosArrayPush
(
pDownstream
->
pUpstreamInfoList
,
&
pEpInfo
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
...
source/dnode/snode/src/snode.c
浏览文件 @
813f4cb3
...
@@ -59,7 +59,7 @@ FAIL:
...
@@ -59,7 +59,7 @@ FAIL:
}
}
int32_t
sndExpandTask
(
SSnode
*
pSnode
,
SStreamTask
*
pTask
,
int64_t
ver
)
{
int32_t
sndExpandTask
(
SSnode
*
pSnode
,
SStreamTask
*
pTask
,
int64_t
ver
)
{
ASSERT
(
pTask
->
info
.
taskLevel
==
TASK_LEVEL__AGG
&&
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
)
!=
0
);
ASSERT
(
pTask
->
info
.
taskLevel
==
TASK_LEVEL__AGG
&&
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
)
!=
0
);
pTask
->
refCnt
=
1
;
pTask
->
refCnt
=
1
;
pTask
->
id
.
idStr
=
createStreamTaskIdStr
(
pTask
->
id
.
streamId
,
pTask
->
id
.
taskId
);
pTask
->
id
.
idStr
=
createStreamTaskIdStr
(
pTask
->
id
.
streamId
,
pTask
->
id
.
taskId
);
...
@@ -82,7 +82,7 @@ int32_t sndExpandTask(SSnode *pSnode, SStreamTask *pTask, int64_t ver) {
...
@@ -82,7 +82,7 @@ int32_t sndExpandTask(SSnode *pSnode, SStreamTask *pTask, int64_t ver) {
return
-
1
;
return
-
1
;
}
}
int32_t
numOfChildEp
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
numOfChildEp
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
SReadHandle
handle
=
{
.
vnode
=
NULL
,
.
numOfVgroups
=
numOfChildEp
,
.
pStateBackend
=
pTask
->
pState
,
.
fillHistory
=
pTask
->
info
.
fillHistory
};
SReadHandle
handle
=
{
.
vnode
=
NULL
,
.
numOfVgroups
=
numOfChildEp
,
.
pStateBackend
=
pTask
->
pState
,
.
fillHistory
=
pTask
->
info
.
fillHistory
};
initStreamStateAPI
(
&
handle
.
api
);
initStreamStateAPI
(
&
handle
.
api
);
...
...
source/dnode/vnode/src/tq/tq.c
浏览文件 @
813f4cb3
...
@@ -814,7 +814,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -814,7 +814,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
return
-
1
;
return
-
1
;
}
}
int32_t
numOfVgroups
=
(
int32_t
)
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
numOfVgroups
=
(
int32_t
)
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
SReadHandle
handle
=
{
SReadHandle
handle
=
{
.
checkpointId
=
pTask
->
chkInfo
.
checkpointId
,
.
checkpointId
=
pTask
->
chkInfo
.
checkpointId
,
.
vnode
=
NULL
,
.
vnode
=
NULL
,
...
@@ -865,6 +865,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
...
@@ -865,6 +865,7 @@ int32_t tqExpandTask(STQ* pTq, SStreamTask* pTask, int64_t ver) {
pTask
->
exec
.
pWalReader
=
walOpenReader
(
pTq
->
pVnode
->
pWal
,
&
cond
);
pTask
->
exec
.
pWalReader
=
walOpenReader
(
pTq
->
pVnode
->
pWal
,
&
cond
);
}
}
streamTaskOpenUpstreamInput
(
pTask
);
streamSetupScheduleTrigger
(
pTask
);
streamSetupScheduleTrigger
(
pTask
);
SCheckpointInfo
*
pChkInfo
=
&
pTask
->
chkInfo
;
SCheckpointInfo
*
pChkInfo
=
&
pTask
->
chkInfo
;
...
...
source/libs/stream/src/stream.c
浏览文件 @
813f4cb3
...
@@ -355,4 +355,27 @@ void* streamQueueNextItem(SStreamQueue* pQueue) {
...
@@ -355,4 +355,27 @@ void* streamQueueNextItem(SStreamQueue* pQueue) {
}
}
}
}
void
streamTaskInputFail
(
SStreamTask
*
pTask
)
{
atomic_store_8
(
&
pTask
->
inputStatus
,
TASK_INPUT_STATUS__FAILED
);
}
void
streamTaskInputFail
(
SStreamTask
*
pTask
)
{
atomic_store_8
(
&
pTask
->
inputStatus
,
TASK_INPUT_STATUS__FAILED
);
}
\ No newline at end of file
void
streamTaskOpenUpstreamInput
(
SStreamTask
*
pTask
)
{
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
if
(
num
==
0
)
{
return
;
}
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
SStreamChildEpInfo
*
pInfo
=
taosArrayGet
(
pTask
->
pUpstreamInfoList
,
i
);
pInfo
->
dataAllowed
=
true
;
}
}
void
streamTaskCloseUpstreamInput
(
SStreamTask
*
pTask
,
int32_t
taskId
)
{
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
SStreamChildEpInfo
*
pInfo
=
taosArrayGet
(
pTask
->
pUpstreamInfoList
,
i
);
if
(
pInfo
->
taskId
==
taskId
)
{
pInfo
->
dataAllowed
=
false
;
break
;
}
}
}
\ No newline at end of file
source/libs/stream/src/streamCheckpoint.c
浏览文件 @
813f4cb3
...
@@ -114,7 +114,7 @@ int32_t tDecodeStreamCheckpointRsp(SDecoder* pDecoder, SStreamCheckpointRsp* pRs
...
@@ -114,7 +114,7 @@ int32_t tDecodeStreamCheckpointRsp(SDecoder* pDecoder, SStreamCheckpointRsp* pRs
}
}
static
int32_t
streamAlignCheckpoint
(
SStreamTask
*
pTask
,
int64_t
checkpointId
,
int32_t
childId
)
{
static
int32_t
streamAlignCheckpoint
(
SStreamTask
*
pTask
,
int64_t
checkpointId
,
int32_t
childId
)
{
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
int64_t
old
=
atomic_val_compare_exchange_32
(
&
pTask
->
checkpointAlignCnt
,
0
,
num
);
int64_t
old
=
atomic_val_compare_exchange_32
(
&
pTask
->
checkpointAlignCnt
,
0
,
num
);
if
(
old
==
0
)
{
if
(
old
==
0
)
{
qDebug
(
"s-task:%s set initial align upstream num:%d"
,
pTask
->
id
.
idStr
,
num
);
qDebug
(
"s-task:%s set initial align upstream num:%d"
,
pTask
->
id
.
idStr
,
num
);
...
@@ -180,13 +180,14 @@ int32_t streamProcessCheckpointReq(SStreamTask* pTask, SStreamCheckpointReq* pRe
...
@@ -180,13 +180,14 @@ int32_t streamProcessCheckpointReq(SStreamTask* pTask, SStreamCheckpointReq* pRe
streamSchedExec
(
pTask
);
streamSchedExec
(
pTask
);
qDebug
(
"s-task:%s sink task set to checkpoint ready, start to send rsp to upstream"
,
pTask
->
id
.
idStr
);
qDebug
(
"s-task:%s sink task set to checkpoint ready, start to send rsp to upstream"
,
pTask
->
id
.
idStr
);
}
else
{
}
else
{
// todo close the inputQ for data from childId, which means data from childId are not allowed to put into intpuQ
ASSERT
(
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
)
>
0
);
// anymore
ASSERT
(
taosArrayGetSize
(
pTask
->
pUpstreamEpInfoList
)
>
0
);
// close the inputQ for data from upstream task.
streamTaskCloseUpstreamInput
(
pTask
,
pReq
->
upstreamTaskId
);
// there are still some upstream tasks not send checkpoint request, do nothing and wait for then
// there are still some upstream tasks not send checkpoint request, do nothing and wait for then
int32_t
notReady
=
streamAlignCheckpoint
(
pTask
,
checkpointId
,
childId
);
int32_t
notReady
=
streamAlignCheckpoint
(
pTask
,
checkpointId
,
childId
);
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
num
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
if
(
notReady
>
0
)
{
if
(
notReady
>
0
)
{
qDebug
(
"s-task:%s received checkpoint req, %d upstream tasks not send checkpoint info yet, total:%d"
,
qDebug
(
"s-task:%s received checkpoint req, %d upstream tasks not send checkpoint info yet, total:%d"
,
pTask
->
id
.
idStr
,
notReady
,
num
);
pTask
->
id
.
idStr
,
notReady
,
num
);
...
...
source/libs/stream/src/streamDispatch.c
浏览文件 @
813f4cb3
...
@@ -157,11 +157,11 @@ int32_t streamBroadcastToChildren(SStreamTask* pTask, const SSDataBlock* pBlock)
...
@@ -157,11 +157,11 @@ int32_t streamBroadcastToChildren(SStreamTask* pTask, const SSDataBlock* pBlock)
.
retrieveLen
=
dataStrLen
,
.
retrieveLen
=
dataStrLen
,
};
};
int32_t
sz
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
sz
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
ASSERT
(
sz
>
0
);
ASSERT
(
sz
>
0
);
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
sz
;
i
++
)
{
req
.
reqId
=
tGenIdPI64
();
req
.
reqId
=
tGenIdPI64
();
SStreamChildEpInfo
*
pEpInfo
=
taosArrayGetP
(
pTask
->
pUpstream
Ep
InfoList
,
i
);
SStreamChildEpInfo
*
pEpInfo
=
taosArrayGetP
(
pTask
->
pUpstreamInfoList
,
i
);
req
.
dstNodeId
=
pEpInfo
->
nodeId
;
req
.
dstNodeId
=
pEpInfo
->
nodeId
;
req
.
dstTaskId
=
pEpInfo
->
taskId
;
req
.
dstTaskId
=
pEpInfo
->
taskId
;
int32_t
len
;
int32_t
len
;
...
@@ -516,7 +516,7 @@ int32_t streamDispatchScanHistoryFinishMsg(SStreamTask* pTask) {
...
@@ -516,7 +516,7 @@ int32_t streamDispatchScanHistoryFinishMsg(SStreamTask* pTask) {
// this function is usually invoked by sink/agg task
// this function is usually invoked by sink/agg task
int32_t
streamTaskSendCheckpointRsp
(
SStreamTask
*
pTask
)
{
int32_t
streamTaskSendCheckpointRsp
(
SStreamTask
*
pTask
)
{
int32_t
num
=
taosArrayGetSize
(
pTask
->
pRpcMsgList
);
int32_t
num
=
taosArrayGetSize
(
pTask
->
pRpcMsgList
);
ASSERT
(
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
)
==
num
);
ASSERT
(
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
)
==
num
);
qDebug
(
"s-task:%s level:%d checkpoint completed msg sent to %d upstream tasks"
,
pTask
->
id
.
idStr
,
pTask
->
info
.
taskLevel
,
qDebug
(
"s-task:%s level:%d checkpoint completed msg sent to %d upstream tasks"
,
pTask
->
id
.
idStr
,
pTask
->
info
.
taskLevel
,
num
);
num
);
...
...
source/libs/stream/src/streamRecover.c
浏览文件 @
813f4cb3
...
@@ -355,7 +355,7 @@ int32_t streamDispatchTransferStateMsg(SStreamTask* pTask) {
...
@@ -355,7 +355,7 @@ int32_t streamDispatchTransferStateMsg(SStreamTask* pTask) {
// agg
// agg
int32_t
streamAggScanHistoryPrepare
(
SStreamTask
*
pTask
)
{
int32_t
streamAggScanHistoryPrepare
(
SStreamTask
*
pTask
)
{
pTask
->
numOfWaitingUpstream
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
pTask
->
numOfWaitingUpstream
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
qDebug
(
"s-task:%s agg task is ready and wait for %d upstream tasks complete scan-history procedure"
,
pTask
->
id
.
idStr
,
qDebug
(
"s-task:%s agg task is ready and wait for %d upstream tasks complete scan-history procedure"
,
pTask
->
id
.
idStr
,
pTask
->
numOfWaitingUpstream
);
pTask
->
numOfWaitingUpstream
);
return
0
;
return
0
;
...
@@ -379,7 +379,7 @@ int32_t streamProcessScanHistoryFinishReq(SStreamTask* pTask, int32_t taskId, in
...
@@ -379,7 +379,7 @@ int32_t streamProcessScanHistoryFinishReq(SStreamTask* pTask, int32_t taskId, in
ASSERT
(
left
>=
0
);
ASSERT
(
left
>=
0
);
if
(
left
==
0
)
{
if
(
left
==
0
)
{
int32_t
numOfTasks
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
numOfTasks
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
qDebug
(
"s-task:%s all %d upstream tasks finish scan-history data, set param for agg task for stream data"
,
qDebug
(
"s-task:%s all %d upstream tasks finish scan-history data, set param for agg task for stream data"
,
pTask
->
id
.
idStr
,
numOfTasks
);
pTask
->
id
.
idStr
,
numOfTasks
);
...
...
source/libs/stream/src/streamTask.c
浏览文件 @
813f4cb3
...
@@ -99,10 +99,10 @@ int32_t tEncodeStreamTask(SEncoder* pEncoder, const SStreamTask* pTask) {
...
@@ -99,10 +99,10 @@ int32_t tEncodeStreamTask(SEncoder* pEncoder, const SStreamTask* pTask) {
if
(
tEncodeI64
(
pEncoder
,
pTask
->
dataRange
.
window
.
skey
))
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
dataRange
.
window
.
skey
))
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
dataRange
.
window
.
ekey
))
return
-
1
;
if
(
tEncodeI64
(
pEncoder
,
pTask
->
dataRange
.
window
.
ekey
))
return
-
1
;
int32_t
epSz
=
taosArrayGetSize
(
pTask
->
pUpstream
Ep
InfoList
);
int32_t
epSz
=
taosArrayGetSize
(
pTask
->
pUpstreamInfoList
);
if
(
tEncodeI32
(
pEncoder
,
epSz
)
<
0
)
return
-
1
;
if
(
tEncodeI32
(
pEncoder
,
epSz
)
<
0
)
return
-
1
;
for
(
int32_t
i
=
0
;
i
<
epSz
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
epSz
;
i
++
)
{
SStreamChildEpInfo
*
pInfo
=
taosArrayGetP
(
pTask
->
pUpstream
Ep
InfoList
,
i
);
SStreamChildEpInfo
*
pInfo
=
taosArrayGetP
(
pTask
->
pUpstreamInfoList
,
i
);
if
(
tEncodeStreamEpInfo
(
pEncoder
,
pInfo
)
<
0
)
return
-
1
;
if
(
tEncodeStreamEpInfo
(
pEncoder
,
pInfo
)
<
0
)
return
-
1
;
}
}
...
@@ -165,7 +165,7 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
...
@@ -165,7 +165,7 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
int32_t
epSz
;
int32_t
epSz
;
if
(
tDecodeI32
(
pDecoder
,
&
epSz
)
<
0
)
return
-
1
;
if
(
tDecodeI32
(
pDecoder
,
&
epSz
)
<
0
)
return
-
1
;
pTask
->
pUpstream
Ep
InfoList
=
taosArrayInit
(
epSz
,
POINTER_BYTES
);
pTask
->
pUpstreamInfoList
=
taosArrayInit
(
epSz
,
POINTER_BYTES
);
for
(
int32_t
i
=
0
;
i
<
epSz
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
epSz
;
i
++
)
{
SStreamChildEpInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamChildEpInfo
));
SStreamChildEpInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamChildEpInfo
));
if
(
pInfo
==
NULL
)
return
-
1
;
if
(
pInfo
==
NULL
)
return
-
1
;
...
@@ -173,7 +173,7 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
...
@@ -173,7 +173,7 @@ int32_t tDecodeStreamTask(SDecoder* pDecoder, SStreamTask* pTask) {
taosMemoryFreeClear
(
pInfo
);
taosMemoryFreeClear
(
pInfo
);
return
-
1
;
return
-
1
;
}
}
taosArrayPush
(
pTask
->
pUpstream
Ep
InfoList
,
&
pInfo
);
taosArrayPush
(
pTask
->
pUpstreamInfoList
,
&
pInfo
);
}
}
if
(
pTask
->
info
.
taskLevel
!=
TASK_LEVEL__SINK
)
{
if
(
pTask
->
info
.
taskLevel
!=
TASK_LEVEL__SINK
)
{
...
@@ -226,7 +226,7 @@ void tFreeStreamTask(SStreamTask* pTask) {
...
@@ -226,7 +226,7 @@ void tFreeStreamTask(SStreamTask* pTask) {
walCloseReader
(
pTask
->
exec
.
pWalReader
);
walCloseReader
(
pTask
->
exec
.
pWalReader
);
}
}
taosArrayDestroyP
(
pTask
->
pUpstream
Ep
InfoList
,
taosMemoryFree
);
taosArrayDestroyP
(
pTask
->
pUpstreamInfoList
,
taosMemoryFree
);
if
(
pTask
->
outputType
==
TASK_OUTPUT__TABLE
)
{
if
(
pTask
->
outputType
==
TASK_OUTPUT__TABLE
)
{
tDeleteSchemaWrapper
(
pTask
->
tbSink
.
pSchemaWrapper
);
tDeleteSchemaWrapper
(
pTask
->
tbSink
.
pSchemaWrapper
);
taosMemoryFree
(
pTask
->
tbSink
.
pTSchema
);
taosMemoryFree
(
pTask
->
tbSink
.
pTSchema
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录