Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
772f5b57
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
772f5b57
编写于
9月 11, 2020
作者:
R
root
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-1284 mnode illegal pointer operation
上级
e4a31b6e
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
16 addition
and
5 deletion
+16
-5
src/mnode/src/mnodeSdb.c
src/mnode/src/mnodeSdb.c
+16
-5
未找到文件。
src/mnode/src/mnodeSdb.c
浏览文件 @
772f5b57
...
...
@@ -65,6 +65,7 @@ typedef struct _SSdbTable {
int32_t
(
*
encodeFp
)(
SSdbOper
*
pOper
);
int32_t
(
*
destroyFp
)(
SSdbOper
*
pOper
);
int32_t
(
*
restoredFp
)();
pthread_mutex_t
mutex
;
}
SSdbTable
;
typedef
struct
{
...
...
@@ -447,6 +448,7 @@ void sdbDecRef(void *handle, void *pObj) {
}
static
void
*
sdbGetRowMeta
(
SSdbTable
*
pTable
,
void
*
key
)
{
void
*
pRet
=
NULL
;
if
(
pTable
==
NULL
)
return
NULL
;
int32_t
keySize
=
sizeof
(
int32_t
);
...
...
@@ -454,9 +456,12 @@ static void *sdbGetRowMeta(SSdbTable *pTable, void *key) {
keySize
=
strlen
((
char
*
)
key
);
}
pthread_mutex_lock
(
&
pTable
->
mutex
);
void
**
ppRow
=
(
void
**
)
taosHashGet
(
pTable
->
iHandle
,
key
,
keySize
);
if
(
ppRow
==
NULL
)
return
NULL
;
return
*
ppRow
;
if
(
ppRow
!=
NULL
)
pRet
=
*
ppRow
;
pthread_mutex_unlock
(
&
pTable
->
mutex
);
return
pRet
;
}
static
void
*
sdbGetRowMetaFromObj
(
SSdbTable
*
pTable
,
void
*
key
)
{
...
...
@@ -467,10 +472,9 @@ void *sdbGetRow(void *handle, void *key) {
void
*
pRow
=
sdbGetRowMeta
(
handle
,
key
);
if
(
pRow
)
{
sdbIncRef
(
handle
,
pRow
);
return
pRow
;
}
else
{
return
NULL
;
}
return
pRow
;
}
static
void
*
sdbGetRowFromObj
(
SSdbTable
*
pTable
,
void
*
key
)
{
...
...
@@ -485,7 +489,9 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) {
keySize
=
strlen
((
char
*
)
key
);
}
pthread_mutex_lock
(
&
pTable
->
mutex
);
taosHashPut
(
pTable
->
iHandle
,
key
,
keySize
,
&
pOper
->
pObj
,
sizeof
(
int64_t
));
pthread_mutex_unlock
(
&
pTable
->
mutex
);
sdbIncRef
(
pTable
,
pOper
->
pObj
);
atomic_add_fetch_32
(
&
pTable
->
numOfRows
,
1
);
...
...
@@ -526,7 +532,10 @@ static int32_t sdbDeleteHash(SSdbTable *pTable, SSdbOper *pOper) {
keySize
=
strlen
((
char
*
)
key
);
}
pthread_mutex_lock
(
&
pTable
->
mutex
);
taosHashRemove
(
pTable
->
iHandle
,
key
,
keySize
);
pthread_mutex_unlock
(
&
pTable
->
mutex
);
atomic_sub_fetch_32
(
&
pTable
->
numOfRows
,
1
);
sdbDebug
(
"table:%s, delete record:%s from hash, numOfRows:%"
PRId64
", msg:%p"
,
pTable
->
tableName
,
...
...
@@ -868,6 +877,7 @@ void *sdbOpenTable(SSdbTableDesc *pDesc) {
if
(
pTable
==
NULL
)
return
NULL
;
pthread_mutex_init
(
&
pTable
->
mutex
,
NULL
);
tstrncpy
(
pTable
->
tableName
,
pDesc
->
tableName
,
SDB_TABLE_LEN
);
pTable
->
keyType
=
pDesc
->
keyType
;
pTable
->
tableId
=
pDesc
->
tableId
;
...
...
@@ -915,6 +925,7 @@ void sdbCloseTable(void *handle) {
taosHashDestroyIter
(
pIter
);
taosHashCleanup
(
pTable
->
iHandle
);
pthread_mutex_destroy
(
&
pTable
->
mutex
);
sdbDebug
(
"table:%s, is closed, numOfTables:%d"
,
pTable
->
tableName
,
tsSdbObj
.
numOfTables
);
free
(
pTable
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录