Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
ae2514ef
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
ae2514ef
编写于
7月 01, 2022
作者:
M
Minglei Jin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
tsdbCache/last: fix last loading crash issues
上级
e3bb1021
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
38 addition
and
31 deletion
+38
-31
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+0
-1
source/dnode/vnode/src/tsdb/tsdbCache.c
source/dnode/vnode/src/tsdb/tsdbCache.c
+36
-30
source/dnode/vnode/src/tsdb/tsdbMemTable.c
source/dnode/vnode/src/tsdb/tsdbMemTable.c
+2
-0
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
ae2514ef
...
...
@@ -253,7 +253,6 @@ int32_t tsdbOpenCache(STsdb *pTsdb);
void
tsdbCloseCache
(
SLRUCache
*
pCache
);
int32_t
tsdbCacheInsertLast
(
SLRUCache
*
pCache
,
tb_uid_t
uid
,
STSRow
*
row
);
int32_t
tsdbCacheInsertLastrow
(
SLRUCache
*
pCache
,
STsdb
*
pTsdb
,
tb_uid_t
uid
,
STSRow
*
row
,
bool
dup
);
int32_t
tsdbCacheGetLastH
(
SLRUCache
*
pCache
,
tb_uid_t
uid
,
STsdb
*
pTsdb
,
LRUHandle
**
h
);
int32_t
tsdbCacheGetLastrowH
(
SLRUCache
*
pCache
,
tb_uid_t
uid
,
STsdb
*
pTsdb
,
LRUHandle
**
h
);
int32_t
tsdbCacheRelease
(
SLRUCache
*
pCache
,
LRUHandle
*
h
);
...
...
source/dnode/vnode/src/tsdb/tsdbCache.c
浏览文件 @
ae2514ef
...
...
@@ -162,30 +162,13 @@ int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, STSRow *row) {
char
key
[
32
]
=
{
0
};
int
keyLen
=
0
;
((
void
)(
row
));
getTableCacheKey
(
uid
,
"l"
,
key
,
&
keyLen
);
LRUHandle
*
h
=
taosLRUCacheLookup
(
pCache
,
key
,
keyLen
);
if
(
h
)
{
cacheRow
=
(
STSRow
*
)
taosLRUCacheValue
(
pCache
,
h
);
if
(
row
->
ts
>=
cacheRow
->
ts
)
{
if
(
TD_ROW_LEN
(
row
)
<=
TD_ROW_LEN
(
cacheRow
))
{
tdRowCpy
(
cacheRow
,
row
);
taosLRUCacheRelease
(
pCache
,
h
,
false
);
}
else
{
// clear last cache anyway, lazy load when get last lookup
taosLRUCacheRelease
(
pCache
,
h
,
true
);
/* tsdbCacheDeleteLast(pCache, uid, TSKEY_MAX); */
tsdbCacheInsertLast
(
pCache
,
uid
,
row
);
}
}
}
else
{
cacheRow
=
tdRowDup
(
row
);
_taos_lru_deleter_t
deleter
=
deleteTableCacheLastrow
;
LRUStatus
status
=
taosLRUCacheInsert
(
pCache
,
key
,
keyLen
,
cacheRow
,
TD_ROW_LEN
(
cacheRow
),
deleter
,
NULL
,
TAOS_LRU_PRIORITY_LOW
);
if
(
status
!=
TAOS_LRU_STATUS_OK
)
{
code
=
-
1
;
}
}
return
code
;
...
...
@@ -283,8 +266,10 @@ static int32_t getTableDelSkyline(STbData *pMem, STbData *pIMem, SDelFReader *pD
if
(
code
)
goto
_err
;
size_t
nDelData
=
taosArrayGetSize
(
aDelData
);
if
(
nDelData
>
0
)
{
code
=
tsdbBuildDeleteSkyline
(
aDelData
,
0
,
(
int32_t
)(
nDelData
-
1
),
aSkyline
);
if
(
code
)
goto
_err
;
}
taosArrayDestroy
(
aDelData
);
...
...
@@ -390,6 +375,8 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
state
->
nBlock
=
state
->
blockMap
.
nItem
;
state
->
iBlock
=
state
->
nBlock
-
1
;
tBlockDataInit
(
&
state
->
blockData
);
}
case
SFSNEXTROW_BLOCKDATA
:
if
(
state
->
iBlock
>=
0
)
{
...
...
@@ -420,6 +407,8 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
if
(
state
->
aBlockIdx
)
{
taosArrayDestroy
(
state
->
aBlockIdx
);
}
tBlockDataClear
(
&
state
->
blockData
);
state
->
state
=
SFSNEXTROW_FILESET
;
}
}
...
...
@@ -438,6 +427,7 @@ _err:
if
(
state
->
aBlockIdx
)
{
taosArrayDestroy
(
state
->
aBlockIdx
);
}
tBlockDataClear
(
&
state
->
blockData
);
*
ppRow
=
NULL
;
...
...
@@ -511,6 +501,15 @@ static int32_t tsRowFromTsdbRow(STSchema *pTSchema, TSDBROW *pRow, STSRow **ppRo
goto
_exit
;
}
TSDBKEY
key
=
TSDBROW_KEY
(
pRow
);
STColumn
*
pTColumn
=
&
pTSchema
->
columns
[
0
];
*
pColVal
=
COL_VAL_VALUE
(
pTColumn
->
colId
,
pTColumn
->
type
,
(
SValue
){.
ts
=
key
.
ts
});
if
(
taosArrayPush
(
pArray
,
pColVal
)
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_exit
;
}
for
(
int16_t
iCol
=
1
;
iCol
<
pTSchema
->
numOfCols
;
iCol
++
)
{
tsdbRowGetColVal
(
pRow
,
pTSchema
,
iCol
,
pColVal
);
if
(
taosArrayPush
(
pArray
,
pColVal
)
==
NULL
)
{
...
...
@@ -683,7 +682,7 @@ static int32_t mergeLastRow(tb_uid_t uid, STsdb *pTsdb, bool *dup, STSRow **ppRo
// delete detection
TSDBROW
*
merge
[
3
]
=
{
0
};
int
iMerge
[
3
]
=
{
-
1
,
-
1
,
-
1
};
//
int iMerge[3] = {-1, -1, -1};
int
nMerge
=
0
;
for
(
int
i
=
0
;
i
<
nMax
;
++
i
)
{
TSDBKEY
maxKey
=
TSDBROW_KEY
(
max
[
i
]);
...
...
@@ -691,7 +690,7 @@ static int32_t mergeLastRow(tb_uid_t uid, STsdb *pTsdb, bool *dup, STSRow **ppRo
// bool deleted = false;
bool
deleted
=
tsdbKeyDeleted
(
&
maxKey
,
pSkyline
,
&
iSkyline
);
if
(
!
deleted
)
{
iMerge
[
nMerge
]
=
i
;
//
iMerge[nMerge] = i;
merge
[
nMerge
++
]
=
max
[
i
];
}
...
...
@@ -857,7 +856,7 @@ static int32_t mergeLast(tb_uid_t uid, STsdb *pTsdb, STSRow **ppRow) {
// bool deleted = false;
bool
deleted
=
tsdbKeyDeleted
(
&
maxKey
,
pSkyline
,
&
iSkyline
);
if
(
!
deleted
)
{
iMerge
[
nMerge
]
=
i
;
iMerge
[
nMerge
]
=
i
Max
[
i
]
;
merge
[
nMerge
++
]
=
max
[
i
];
}
...
...
@@ -896,8 +895,9 @@ static int32_t mergeLast(tb_uid_t uid, STsdb *pTsdb, STSRow **ppRow) {
++
iCol
;
setICol
=
false
;
for
(
int16_t
i
=
iCol
;
i
Col
<
nCol
;
++
i
)
{
for
(
int16_t
i
=
iCol
;
i
<
nCol
;
++
i
)
{
// tsdbRowGetColVal(*ppRow, pTSchema, i, pColVal);
tTSRowGetVal
(
*
ppRow
,
pTSchema
,
i
,
pColVal
);
if
(
taosArrayPush
(
pColArray
,
pColVal
)
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
...
...
@@ -936,7 +936,7 @@ static int32_t mergeLast(tb_uid_t uid, STsdb *pTsdb, STSRow **ppRow) {
--
nilColCount
;
}
}
else
{
if
(
tColVal
->
isNull
||
tColVal
->
isNone
&&
!
setICol
)
{
if
(
(
tColVal
->
isNull
||
tColVal
->
isNone
)
&&
!
setICol
)
{
iCol
=
i
;
setICol
=
true
;
...
...
@@ -1020,7 +1020,13 @@ int32_t tsdbCacheGetLastH(SLRUCache *pCache, tb_uid_t uid, STsdb *pTsdb, LRUHand
return
0
;
}
tsdbCacheInsertLast
(
pCache
,
uid
,
pRow
);
_taos_lru_deleter_t
deleter
=
deleteTableCacheLastrow
;
LRUStatus
status
=
taosLRUCacheInsert
(
pCache
,
key
,
keyLen
,
pRow
,
TD_ROW_LEN
(
pRow
),
deleter
,
NULL
,
TAOS_LRU_PRIORITY_LOW
);
if
(
status
!=
TAOS_LRU_STATUS_OK
)
{
code
=
-
1
;
}
/* tsdbCacheInsertLast(pCache, uid, pRow); */
h
=
taosLRUCacheLookup
(
pCache
,
key
,
keyLen
);
//*ppRow = (STSRow *)taosLRUCacheValue(pCache, h);
}
...
...
source/dnode/vnode/src/tsdb/tsdbMemTable.c
浏览文件 @
ae2514ef
...
...
@@ -558,6 +558,8 @@ static int32_t tsdbInsertTableDataImpl(SMemTable *pMemTable, STbData *pTbData, i
}
}
tsdbCacheInsertLast
(
pMemTable
->
pTsdb
->
lruCache
,
pTbData
->
uid
,
pLastRow
);
pTbData
->
minVersion
=
TMIN
(
pTbData
->
minVersion
,
version
);
pTbData
->
maxVersion
=
TMAX
(
pTbData
->
maxVersion
,
version
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录