Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a3836b23
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看板
提交
a3836b23
编写于
4月 11, 2023
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix invalid free
上级
743ed82d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
1 deletion
+19
-1
include/libs/stream/streamState.h
include/libs/stream/streamState.h
+2
-0
source/libs/stream/src/streamStateRocksdb.c
source/libs/stream/src/streamStateRocksdb.c
+17
-1
未找到文件。
include/libs/stream/streamState.h
浏览文件 @
a3836b23
...
...
@@ -38,6 +38,8 @@ typedef struct STdbState {
rocksdb_comparator_t
**
pCompare
;
rocksdb_options_t
*
dbOpt
;
struct
SStreamTask
*
pOwner
;
void
*
param
;
void
*
env
;
TDB
*
db
;
TTB
*
pStateDb
;
...
...
source/libs/stream/src/streamStateRocksdb.c
浏览文件 @
a3836b23
...
...
@@ -13,6 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rocksdb/c.h"
#include "streamBackendRocksdb.h"
#include "tcommon.h"
#include "tlog.h"
...
...
@@ -280,6 +281,10 @@ int parKeyToString(void* k, char* buf) {
return
n
;
}
typedef
struct
{
void
*
tableOpt
;
void
*
lru
;
// global or not
}
rocksdbCfParam
;
const
char
*
cfName
[]
=
{
"default"
,
"state"
,
"fill"
,
"sess"
,
"func"
,
"parname"
,
"partag"
};
typedef
int
(
*
EncodeFunc
)(
void
*
key
,
char
*
buf
);
...
...
@@ -354,6 +359,7 @@ int streamInitBackend(SStreamState* pState, char* path) {
char
*
err
=
NULL
;
int
cfLen
=
sizeof
(
ginitDict
)
/
sizeof
(
ginitDict
[
0
]);
rocksdbCfParam
*
param
=
taosMemoryCalloc
(
cfLen
,
sizeof
(
rocksdbCfParam
));
const
rocksdb_options_t
**
cfOpt
=
taosMemoryCalloc
(
cfLen
,
sizeof
(
rocksdb_options_t
*
));
for
(
int
i
=
0
;
i
<
cfLen
;
i
++
)
{
cfOpt
[
i
]
=
rocksdb_options_create_copy
(
opts
);
...
...
@@ -367,6 +373,8 @@ int streamInitBackend(SStreamState* pState, char* path) {
rocksdb_options_set_block_based_table_factory
((
rocksdb_options_t
*
)
cfOpt
[
i
],
tableOpt
);
param
[
i
].
tableOpt
=
tableOpt
;
param
[
i
].
lru
=
cache
;
// rocksdb_slicetransform_t* trans = rocksdb_slicetransform_create_fixed_prefix(8);
// rocksdb_options_set_prefix_extractor((rocksdb_options_t*)cfOpt[i], trans);
};
...
...
@@ -391,6 +399,8 @@ int streamInitBackend(SStreamState* pState, char* path) {
pState
->
pTdbState
->
cfOpts
=
(
rocksdb_options_t
**
)
cfOpt
;
pState
->
pTdbState
->
pCompare
=
pCompare
;
pState
->
pTdbState
->
dbOpt
=
opts
;
pState
->
pTdbState
->
param
=
param
;
pState
->
pTdbState
->
env
=
env
;
return
0
;
}
void
streamCleanBackend
(
SStreamState
*
pState
)
{
...
...
@@ -398,12 +408,17 @@ void streamCleanBackend(SStreamState* pState) {
qInfo
(
"rocksdb already free"
);
return
;
}
int
cfLen
=
sizeof
(
ginitDict
)
/
sizeof
(
ginitDict
[
0
]);
int
cfLen
=
sizeof
(
ginitDict
)
/
sizeof
(
ginitDict
[
0
]);
rocksdbCfParam
*
param
=
pState
->
pTdbState
->
param
;
for
(
int
i
=
0
;
i
<
cfLen
;
i
++
)
{
rocksdb_column_family_handle_destroy
(
pState
->
pTdbState
->
pHandle
[
i
]);
rocksdb_options_destroy
(
pState
->
pTdbState
->
cfOpts
[
i
]);
rocksdb_comparator_destroy
(
pState
->
pTdbState
->
pCompare
[
i
]);
rocksdb_cache_destroy
(
param
[
i
].
lru
);
rocksdb_block_based_options_destroy
(
param
[
i
].
tableOpt
);
}
taosMemoryFree
(
pState
->
pTdbState
->
param
);
rocksdb_options_destroy
(
pState
->
pTdbState
->
dbOpt
);
taosMemoryFreeClear
(
pState
->
pTdbState
->
pHandle
);
...
...
@@ -417,6 +432,7 @@ void streamCleanBackend(SStreamState* pState) {
pState
->
pTdbState
->
readOpts
=
NULL
;
rocksdb_close
(
pState
->
pTdbState
->
rocksdb
);
rocksdb_env_destroy
(
pState
->
pTdbState
->
env
);
pState
->
pTdbState
->
rocksdb
=
NULL
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录