Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d23ae400
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
d23ae400
编写于
4月 24, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: table meta double free issue
上级
4bb7a25f
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
72 addition
and
1 deletion
+72
-1
source/libs/catalog/inc/catalogInt.h
source/libs/catalog/inc/catalogInt.h
+1
-0
source/libs/catalog/src/ctgAsync.c
source/libs/catalog/src/ctgAsync.c
+69
-0
source/libs/catalog/src/ctgCache.c
source/libs/catalog/src/ctgCache.c
+2
-1
未找到文件。
source/libs/catalog/inc/catalogInt.h
浏览文件 @
d23ae400
...
...
@@ -359,6 +359,7 @@ typedef struct SCtgSubRes {
struct
SCtgTask
{
CTG_TASK_TYPE
type
;
bool
subTask
;
int32_t
taskId
;
SCtgJob
*
pJob
;
void
*
taskCtx
;
...
...
source/libs/catalog/src/ctgAsync.c
浏览文件 @
d23ae400
...
...
@@ -699,6 +699,10 @@ _return:
}
int32_t
ctgDumpTbMetaRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pTableMeta
)
{
pJob
->
jobRes
.
pTableMeta
=
taosArrayInit
(
pJob
->
tbMetaNum
,
sizeof
(
SMetaRes
));
...
...
@@ -714,6 +718,10 @@ int32_t ctgDumpTbMetaRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbMetasRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
pJob
->
jobRes
.
pTableMeta
=
pTask
->
res
;
...
...
@@ -722,6 +730,10 @@ int32_t ctgDumpTbMetasRes(SCtgTask* pTask) {
}
int32_t
ctgDumpDbVgRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pDbVgroup
)
{
pJob
->
jobRes
.
pDbVgroup
=
taosArrayInit
(
pJob
->
dbVgNum
,
sizeof
(
SMetaRes
));
...
...
@@ -737,6 +749,10 @@ int32_t ctgDumpDbVgRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbHashRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pTableHash
)
{
pJob
->
jobRes
.
pTableHash
=
taosArrayInit
(
pJob
->
tbHashNum
,
sizeof
(
SMetaRes
));
...
...
@@ -752,6 +768,10 @@ int32_t ctgDumpTbHashRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbHashsRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
pJob
->
jobRes
.
pTableHash
=
pTask
->
res
;
...
...
@@ -760,6 +780,10 @@ int32_t ctgDumpTbHashsRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbIndexRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pTableIndex
)
{
SArray
*
pRes
=
taosArrayInit
(
pJob
->
tbIndexNum
,
sizeof
(
SMetaRes
));
...
...
@@ -779,6 +803,10 @@ int32_t ctgDumpTbIndexRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbCfgRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pTableCfg
)
{
SArray
*
pRes
=
taosArrayInit
(
pJob
->
tbCfgNum
,
sizeof
(
SMetaRes
));
...
...
@@ -798,6 +826,10 @@ int32_t ctgDumpTbCfgRes(SCtgTask* pTask) {
}
int32_t
ctgDumpTbTagRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pTableTag
)
{
SArray
*
pRes
=
taosArrayInit
(
pJob
->
tbTagNum
,
sizeof
(
SMetaRes
));
...
...
@@ -818,6 +850,10 @@ int32_t ctgDumpTbTagRes(SCtgTask* pTask) {
int32_t
ctgDumpIndexRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pIndex
)
{
pJob
->
jobRes
.
pIndex
=
taosArrayInit
(
pJob
->
indexNum
,
sizeof
(
SMetaRes
));
...
...
@@ -833,6 +869,10 @@ int32_t ctgDumpIndexRes(SCtgTask* pTask) {
}
int32_t
ctgDumpQnodeRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pQnodeList
)
{
pJob
->
jobRes
.
pQnodeList
=
taosArrayInit
(
1
,
sizeof
(
SMetaRes
));
...
...
@@ -848,6 +888,10 @@ int32_t ctgDumpQnodeRes(SCtgTask* pTask) {
}
int32_t
ctgDumpDnodeRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pDnodeList
)
{
pJob
->
jobRes
.
pDnodeList
=
taosArrayInit
(
1
,
sizeof
(
SMetaRes
));
...
...
@@ -863,6 +907,10 @@ int32_t ctgDumpDnodeRes(SCtgTask* pTask) {
}
int32_t
ctgDumpDbCfgRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pDbCfg
)
{
pJob
->
jobRes
.
pDbCfg
=
taosArrayInit
(
pJob
->
dbCfgNum
,
sizeof
(
SMetaRes
));
...
...
@@ -878,6 +926,10 @@ int32_t ctgDumpDbCfgRes(SCtgTask* pTask) {
}
int32_t
ctgDumpDbInfoRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pDbInfo
)
{
pJob
->
jobRes
.
pDbInfo
=
taosArrayInit
(
pJob
->
dbInfoNum
,
sizeof
(
SMetaRes
));
...
...
@@ -893,6 +945,10 @@ int32_t ctgDumpDbInfoRes(SCtgTask* pTask) {
}
int32_t
ctgDumpUdfRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pUdfList
)
{
pJob
->
jobRes
.
pUdfList
=
taosArrayInit
(
pJob
->
udfNum
,
sizeof
(
SMetaRes
));
...
...
@@ -908,6 +964,10 @@ int32_t ctgDumpUdfRes(SCtgTask* pTask) {
}
int32_t
ctgDumpUserRes
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pUser
)
{
pJob
->
jobRes
.
pUser
=
taosArrayInit
(
pJob
->
userNum
,
sizeof
(
SMetaRes
));
...
...
@@ -923,6 +983,10 @@ int32_t ctgDumpUserRes(SCtgTask* pTask) {
}
int32_t
ctgDumpSvrVer
(
SCtgTask
*
pTask
)
{
if
(
pTask
->
subTask
)
{
return
TSDB_CODE_SUCCESS
;
}
SCtgJob
*
pJob
=
pTask
->
pJob
;
if
(
NULL
==
pJob
->
jobRes
.
pSvrVer
)
{
pJob
->
jobRes
.
pSvrVer
=
taosMemoryCalloc
(
1
,
sizeof
(
SMetaRes
));
...
...
@@ -2239,6 +2303,8 @@ int32_t ctgLaunchGetUserTask(SCtgTask* pTask) {
if
(
inCache
)
{
pTask
->
res
=
rsp
.
pRawRes
;
ctgTaskDebug
(
"Final res got, pass:%d, pCond:%p"
,
rsp
.
pRawRes
->
pass
,
rsp
.
pRawRes
->
pCond
);
CTG_ERR_RET
(
ctgHandleTaskEnd
(
pTask
,
0
));
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -2475,6 +2541,9 @@ int32_t ctgLaunchSubTask(SCtgTask* pTask, CTG_TASK_TYPE type, ctgSubTaskCbFp fp,
}
SCtgTask
*
pSub
=
taosArrayGet
(
pJob
->
pTasks
,
subTaskId
);
if
(
newTask
)
{
pSub
->
subTask
=
true
;
}
CTG_ERR_RET
(
ctgSetSubTaskCb
(
pSub
,
pTask
));
...
...
source/libs/catalog/src/ctgCache.c
浏览文件 @
d23ae400
...
...
@@ -765,8 +765,9 @@ _return:
*
inCache
=
false
;
CTG_CACHE_NHIT_INC
(
CTG_CI_USER
,
1
);
ctgDebug
(
"Get user from cache failed, user:%s, metaNotExists:%d, code:%d"
,
pReq
->
user
,
pRes
->
metaNotExists
,
code
);
return
TSDB_CODE_SUCCESS
;
return
code
;
}
void
ctgDequeue
(
SCtgCacheOperation
**
op
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录