Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
7ef4df87
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看板
提交
7ef4df87
编写于
8月 07, 2023
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support reopen stream state
上级
4ca39d0f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
30 deletion
+24
-30
source/libs/stream/src/streamBackendRocksdb.c
source/libs/stream/src/streamBackendRocksdb.c
+24
-30
未找到文件。
source/libs/stream/src/streamBackendRocksdb.c
浏览文件 @
7ef4df87
...
...
@@ -408,6 +408,7 @@ int32_t getLatestCheckpoint(void* arg, int64_t* checkpoint) {
int64_t
tc
=
0
;
int32_t
sz
=
taosArrayGetSize
(
pMeta
->
checkpointSaved
);
if
(
sz
<=
0
)
{
taosWUnLockLatch
(
&
pMeta
->
checkpointDirLock
);
return
-
1
;
}
else
{
tc
=
*
(
int64_t
*
)
taosArrayGetLast
(
pMeta
->
checkpointSaved
);
...
...
@@ -623,9 +624,9 @@ int defaultKeyComp(void* state, const char* aBuf, size_t aLen, const char* bBuf,
return
ret
;
}
}
int
streamStateValueIsStale
(
char
*
v
v
)
{
int
streamStateValueIsStale
(
char
*
v
)
{
int64_t
ts
=
0
;
taosDecodeFixedI64
(
v
v
,
&
ts
);
taosDecodeFixedI64
(
v
,
&
ts
);
return
(
ts
!=
0
&&
ts
<
taosGetTimestampMs
())
?
1
:
0
;
}
int
iterValueIsStale
(
rocksdb_iterator_t
*
iter
)
{
...
...
@@ -956,33 +957,23 @@ int32_t decodeValueFunc(void* value, int32_t vlen, int64_t* ttl, char** dest) {
SStreamValue
key
=
{
0
};
char
*
p
=
value
;
if
(
streamStateValueIsStale
(
p
))
{
if
(
dest
!=
NULL
)
*
dest
=
NULL
;
return
-
1
;
goto
_EXCEPT
;
}
p
=
taosDecodeFixedI64
(
p
,
&
key
.
unixTimestamp
);
p
=
taosDecodeFixedI32
(
p
,
&
key
.
len
);
if
(
vlen
!=
(
sizeof
(
int64_t
)
+
sizeof
(
int32_t
)
+
key
.
len
))
{
if
(
dest
!=
NULL
)
*
dest
=
NULL
;
qError
(
"vlen: %d, read len: %d"
,
vlen
,
key
.
len
);
return
-
1
;
}
if
(
key
.
len
==
0
)
{
key
.
data
=
NULL
;
}
else
{
p
=
taosDecodeBinary
(
p
,
(
void
**
)
&
(
key
.
data
),
key
.
len
);
goto
_EXCEPT
;
}
if
(
key
.
len
!=
0
&&
dest
!=
NULL
)
p
=
taosDecodeBinary
(
p
,
(
void
**
)
dest
,
key
.
len
);
if
(
ttl
!=
NULL
)
{
int64_t
now
=
taosGetTimestampMs
();
*
ttl
=
key
.
unixTimestamp
==
0
?
0
:
key
.
unixTimestamp
-
now
;
}
if
(
dest
!=
NULL
)
{
*
dest
=
key
.
data
;
}
else
{
taosMemoryFree
(
key
.
data
);
}
if
(
ttl
!=
NULL
)
*
ttl
=
key
.
unixTimestamp
==
0
?
0
:
key
.
unixTimestamp
-
taosGetTimestampMs
();
return
key
.
len
;
_EXCEPT:
if
(
dest
!=
NULL
)
*
dest
=
NULL
;
if
(
ttl
!=
NULL
)
*
ttl
=
0
;
return
-
1
;
}
const
char
*
compareDefaultName
(
void
*
arg
)
{
...
...
@@ -1096,9 +1087,10 @@ int32_t streamStateOpenBackendCf(void* backend, char* name, char** cfs, int32_t
}
else
{
qDebug
(
"succ to open rocksdb cf"
);
}
// close default cf
// close default cf
and destroy default cfOpts
if
(((
rocksdb_column_family_handle_t
**
)
cfHandle
)[
0
]
!=
0
)
rocksdb_column_family_handle_destroy
(
cfHandle
[
0
]);
rocksdb_options_destroy
(
cfOpts
[
0
]);
handle
->
db
=
db
;
static
int32_t
cfLen
=
sizeof
(
ginitDict
)
/
sizeof
(
ginitDict
[
0
]);
...
...
@@ -2354,9 +2346,7 @@ void* streamDefaultIterCreate_rocksdb(SStreamState* pState) {
}
int32_t
streamDefaultIterValid_rocksdb
(
void
*
iter
)
{
SStreamStateCur
*
pCur
=
iter
;
bool
val
=
rocksdb_iter_valid
(
pCur
->
iter
);
return
val
?
1
:
0
;
return
rocksdb_iter_valid
(
pCur
->
iter
)
?
1
:
0
;
}
void
streamDefaultIterSeek_rocksdb
(
void
*
iter
,
const
char
*
key
)
{
SStreamStateCur
*
pCur
=
iter
;
...
...
@@ -2372,13 +2362,16 @@ char* streamDefaultIterKey_rocksdb(void* iter, int32_t* len) {
}
char
*
streamDefaultIterVal_rocksdb
(
void
*
iter
,
int32_t
*
len
)
{
SStreamStateCur
*
pCur
=
iter
;
int32_t
vlen
=
0
;
char
*
dst
=
NULL
;
const
char
*
vval
=
rocksdb_iter_value
(
pCur
->
iter
,
(
size_t
*
)
&
vlen
);
if
(
decodeValueFunc
((
void
*
)
vval
,
vlen
,
NULL
,
&
dst
)
<
0
)
{
char
*
ret
=
NULL
;
int32_t
vlen
=
0
;
const
char
*
val
=
rocksdb_iter_value
(
pCur
->
iter
,
(
size_t
*
)
&
vlen
);
*
len
=
decodeValueFunc
((
void
*
)
val
,
vlen
,
NULL
,
&
ret
);
if
(
*
len
<
0
)
{
return
NULL
;
}
return
dst
;
return
ret
;
}
// batch func
void
*
streamStateCreateBatch
()
{
...
...
@@ -2433,6 +2426,7 @@ int32_t streamStatePutBatchOptimize(SStreamState* pState, int32_t cfIdx, rocksdb
if
(
tmpBuf
==
NULL
)
{
taosMemoryFree
(
ttlV
);
}
{
char
tbuf
[
256
]
=
{
0
};
ginitDict
[
cfIdx
].
toStrFunc
((
void
*
)
key
,
tbuf
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录