Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6e5be0d3
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
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看板
提交
6e5be0d3
编写于
7月 20, 2023
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix stream state transfer
上级
733db123
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
24 addition
and
7 deletion
+24
-7
include/libs/stream/tstream.h
include/libs/stream/tstream.h
+3
-1
source/dnode/vnode/src/tq/tqStreamStateSnap.c
source/dnode/vnode/src/tq/tqStreamStateSnap.c
+14
-2
source/libs/stream/src/streamBackendRocksdb.c
source/libs/stream/src/streamBackendRocksdb.c
+2
-2
source/libs/stream/src/streamSnapshot.c
source/libs/stream/src/streamSnapshot.c
+2
-0
source/libs/stream/src/streamState.c
source/libs/stream/src/streamState.c
+3
-2
未找到文件。
include/libs/stream/tstream.h
浏览文件 @
6e5be0d3
...
@@ -367,7 +367,9 @@ typedef struct SStreamMeta {
...
@@ -367,7 +367,9 @@ typedef struct SStreamMeta {
SHashObj
*
pTaskBackendUnique
;
SHashObj
*
pTaskBackendUnique
;
TdThreadMutex
backendMutex
;
TdThreadMutex
backendMutex
;
int32_t
chkptNotReadyTasks
;
int32_t
chkptNotReadyTasks
;
int64_t
checkpointId
;
SArray
*
checkpointSaved
;
SArray
*
checkpointSaved
;
SArray
*
checkpointInUse
;
SArray
*
checkpointInUse
;
int32_t
checkpointCap
;
int32_t
checkpointCap
;
...
...
source/dnode/vnode/src/tq/tqStreamStateSnap.c
浏览文件 @
6e5be0d3
...
@@ -41,13 +41,25 @@ int32_t streamStateSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamS
...
@@ -41,13 +41,25 @@ int32_t streamStateSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamS
code
=
TSDB_CODE_OUT_OF_MEMORY
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
goto
_err
;
}
}
SStreamMeta
*
meta
=
pTq
->
pStreamMeta
;
pReader
->
pTq
=
pTq
;
pReader
->
pTq
=
pTq
;
pReader
->
sver
=
sver
;
pReader
->
sver
=
sver
;
pReader
->
ever
=
ever
;
pReader
->
ever
=
ever
;
int64_t
checkpointId
=
meta
?
meta
->
checkpointId
:
0
;
SStreamSnapReader
*
pSnapReader
=
NULL
;
SStreamSnapReader
*
pSnapReader
=
NULL
;
sprintf
(
tdir
,
"%s%s%s%s%s"
,
pTq
->
path
,
TD_DIRSEP
,
VNODE_TQ_STREAM
,
TD_DIRSEP
,
"checkpoints"
);
if
(
streamSnapReaderOpen
(
pTq
,
sver
,
ever
,
tdir
,
&
pSnapReader
)
==
0
)
{
// restore from checkpoint if checkpointid != 0
if
(
checkpointId
!=
0
)
{
sprintf
(
tdir
,
"%s%s%s%s%s%scheckpoint%"
PRId64
""
,
pTq
->
path
,
TD_DIRSEP
,
VNODE_TQ_STREAM
,
TD_DIRSEP
,
"checkpoints"
,
TD_DIRSEP
,
checkpointId
);
}
else
{
sprintf
(
tdir
,
"%s%s%s%s%s"
,
pTq
->
path
,
TD_DIRSEP
,
VNODE_TQ_STREAM
,
TD_DIRSEP
,
"state"
);
}
if
(
streamSnapReaderOpen
(
pTq
,
sver
,
checkpointId
,
tdir
,
&
pSnapReader
)
==
0
)
{
pReader
->
complete
=
1
;
pReader
->
complete
=
1
;
}
else
{
}
else
{
code
=
-
1
;
code
=
-
1
;
...
...
source/libs/stream/src/streamBackendRocksdb.c
浏览文件 @
6e5be0d3
...
@@ -163,8 +163,8 @@ int32_t copyFiles(const char* src, const char* dst) {
...
@@ -163,8 +163,8 @@ int32_t copyFiles(const char* src, const char* dst) {
char
*
name
=
taosGetDirEntryName
(
de
);
char
*
name
=
taosGetDirEntryName
(
de
);
if
(
strcmp
(
name
,
"."
)
==
0
||
strcmp
(
name
,
".."
)
==
0
)
continue
;
if
(
strcmp
(
name
,
"."
)
==
0
||
strcmp
(
name
,
".."
)
==
0
)
continue
;
sprintf
(
absSrcPath
,
"%s
/%s"
,
src
,
name
);
sprintf
(
absSrcPath
,
"%s
%s%s"
,
src
,
TD_DIRSEP
,
name
);
sprintf
(
absDstPath
,
"%s
/%s"
,
dst
,
name
);
sprintf
(
absDstPath
,
"%s
%s%s"
,
dst
,
TD_DIRSEP
,
name
);
if
(
!
taosDirEntryIsDir
(
de
))
{
if
(
!
taosDirEntryIsDir
(
de
))
{
code
=
taosCopyFile
(
absSrcPath
,
absDstPath
);
code
=
taosCopyFile
(
absSrcPath
,
absDstPath
);
if
(
code
==
-
1
)
{
if
(
code
==
-
1
)
{
...
...
source/libs/stream/src/streamSnapshot.c
浏览文件 @
6e5be0d3
...
@@ -64,6 +64,7 @@ struct SStreamSnapReader {
...
@@ -64,6 +64,7 @@ struct SStreamSnapReader {
int64_t
sver
;
int64_t
sver
;
int64_t
ever
;
int64_t
ever
;
SStreamSnapHandle
handle
;
SStreamSnapHandle
handle
;
int64_t
checkpointId
;
};
};
struct
SStreamSnapWriter
{
struct
SStreamSnapWriter
{
void
*
pMeta
;
void
*
pMeta
;
...
@@ -217,6 +218,7 @@ int32_t streamSnapReaderOpen(void* pMeta, int64_t sver, int64_t ever, char* path
...
@@ -217,6 +218,7 @@ int32_t streamSnapReaderOpen(void* pMeta, int64_t sver, int64_t ever, char* path
if
(
pReader
==
NULL
)
{
if
(
pReader
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
pReader
->
handle
.
checkpointId
=
ever
;
// const char* path = NULL;
// const char* path = NULL;
if
(
streamSnapHandleInit
(
&
pReader
->
handle
,
(
char
*
)
path
)
<
0
)
{
if
(
streamSnapHandleInit
(
&
pReader
->
handle
,
(
char
*
)
path
)
<
0
)
{
taosMemoryFree
(
pReader
);
taosMemoryFree
(
pReader
);
...
...
source/libs/stream/src/streamState.c
浏览文件 @
6e5be0d3
...
@@ -108,7 +108,7 @@ SStreamState* streamStateOpen(char* path, void* pTask, bool specPath, int32_t sz
...
@@ -108,7 +108,7 @@ SStreamState* streamStateOpen(char* path, void* pTask, bool specPath, int32_t sz
SStreamTask
*
pStreamTask
=
pTask
;
SStreamTask
*
pStreamTask
=
pTask
;
char
statePath
[
1024
];
char
statePath
[
1024
];
if
(
!
specPath
)
{
if
(
!
specPath
)
{
sprintf
(
statePath
,
"%s
/%d"
,
path
,
pStreamTask
->
id
.
taskId
);
sprintf
(
statePath
,
"%s
%s%d"
,
path
,
TD_DIRSEP
,
pStreamTask
->
id
.
taskId
);
}
else
{
}
else
{
memset
(
statePath
,
0
,
1024
);
memset
(
statePath
,
0
,
1024
);
tstrncpy
(
statePath
,
path
,
1024
);
tstrncpy
(
statePath
,
path
,
1024
);
...
@@ -762,7 +762,8 @@ int32_t streamStateSessionGet(SStreamState* pState, SSessionKey* key, void** pVa
...
@@ -762,7 +762,8 @@ int32_t streamStateSessionGet(SStreamState* pState, SSessionKey* key, void** pVa
int32_t
streamStateSessionDel
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
int32_t
streamStateSessionDel
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
#ifdef USE_ROCKSDB
#ifdef USE_ROCKSDB
qDebug
(
"===stream===delete skey:%"
PRId64
", ekey:%"
PRId64
", groupId:%"
PRIu64
,
key
->
win
.
skey
,
key
->
win
.
ekey
,
key
->
groupId
);
qDebug
(
"===stream===delete skey:%"
PRId64
", ekey:%"
PRId64
", groupId:%"
PRIu64
,
key
->
win
.
skey
,
key
->
win
.
ekey
,
key
->
groupId
);
return
streamStateSessionDel_rocksdb
(
pState
,
key
);
return
streamStateSessionDel_rocksdb
(
pState
,
key
);
#else
#else
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录