Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d87a2b18
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看板
提交
d87a2b18
编写于
8月 10, 2023
作者:
S
Shungang Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
flag 'hasTtlTask' for single task
上级
474aeb44
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
28 addition
and
20 deletion
+28
-20
source/dnode/vnode/src/inc/meta.h
source/dnode/vnode/src/inc/meta.h
+1
-1
source/dnode/vnode/src/inc/metaTtl.h
source/dnode/vnode/src/inc/metaTtl.h
+1
-1
source/dnode/vnode/src/inc/vnodeInt.h
source/dnode/vnode/src/inc/vnodeInt.h
+2
-1
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+8
-2
source/dnode/vnode/src/meta/metaTtl.c
source/dnode/vnode/src/meta/metaTtl.c
+5
-11
source/dnode/vnode/src/vnd/vnodeCommit.c
source/dnode/vnode/src/vnd/vnodeCommit.c
+2
-2
source/dnode/vnode/src/vnd/vnodeOpen.c
source/dnode/vnode/src/vnd/vnodeOpen.c
+1
-0
source/dnode/vnode/src/vnd/vnodeSvr.c
source/dnode/vnode/src/vnd/vnodeSvr.c
+8
-2
未找到文件。
source/dnode/vnode/src/inc/meta.h
浏览文件 @
d87a2b18
...
@@ -77,7 +77,7 @@ int32_t metaUidFilterCacheGet(SMeta* pMeta, uint64_t suid, const void* pKey, int
...
@@ -77,7 +77,7 @@ int32_t metaUidFilterCacheGet(SMeta* pMeta, uint64_t suid, const void* pKey, int
struct
SMeta
{
struct
SMeta
{
TdThreadRwlock
lock
;
TdThreadRwlock
lock
;
tsem_t
txnReady
;
// if false we should not write journal
tsem_t
txnReady
;
// if false
,
we should not write journal
char
*
path
;
char
*
path
;
SVnode
*
pVnode
;
SVnode
*
pVnode
;
...
...
source/dnode/vnode/src/inc/metaTtl.h
浏览文件 @
d87a2b18
...
@@ -31,7 +31,7 @@ typedef enum DirtyEntryType {
...
@@ -31,7 +31,7 @@ typedef enum DirtyEntryType {
}
DirtyEntryType
;
}
DirtyEntryType
;
typedef
struct
STtlManger
{
typedef
struct
STtlManger
{
TdThreadRwlock
lock
;
//TdThreadRwlock lock; // use meta lock, no self lock needed
TTB
*
pOldTtlIdx
;
// btree<{deleteTime, tuid}, NULL>
TTB
*
pOldTtlIdx
;
// btree<{deleteTime, tuid}, NULL>
...
...
source/dnode/vnode/src/inc/vnodeInt.h
浏览文件 @
d87a2b18
...
@@ -153,7 +153,7 @@ int metaCreateTable(SMeta* pMeta, int64_t version, SVCreateTbReq* pR
...
@@ -153,7 +153,7 @@ int metaCreateTable(SMeta* pMeta, int64_t version, SVCreateTbReq* pR
int
metaDropTable
(
SMeta
*
pMeta
,
int64_t
version
,
SVDropTbReq
*
pReq
,
SArray
*
tbUids
,
int64_t
*
tbUid
);
int
metaDropTable
(
SMeta
*
pMeta
,
int64_t
version
,
SVDropTbReq
*
pReq
,
SArray
*
tbUids
,
int64_t
*
tbUid
);
int32_t
metaTrimTables
(
SMeta
*
pMeta
);
int32_t
metaTrimTables
(
SMeta
*
pMeta
);
int32_t
metaTtlSetExpireTime
(
SMeta
*
pMeta
,
int64_t
timePointMs
);
int32_t
metaTtlSetExpireTime
(
SMeta
*
pMeta
,
int64_t
timePointMs
);
int
metaTtlDropTable
(
SMeta
*
pMeta
,
SArray
*
tbUids
);
int
metaTtlDropTable
s
(
SMeta
*
pMeta
,
SArray
*
tbUids
);
int
metaAlterTable
(
SMeta
*
pMeta
,
int64_t
version
,
SVAlterTbReq
*
pReq
,
STableMetaRsp
*
pMetaRsp
);
int
metaAlterTable
(
SMeta
*
pMeta
,
int64_t
version
,
SVAlterTbReq
*
pReq
,
STableMetaRsp
*
pMetaRsp
);
int
metaUpdateChangeTimeWithLock
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
int64_t
changeTimeMs
);
int
metaUpdateChangeTimeWithLock
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
int64_t
changeTimeMs
);
SSchemaWrapper
*
metaGetTableSchema
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
int32_t
sver
,
int
lock
);
SSchemaWrapper
*
metaGetTableSchema
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
int32_t
sver
,
int
lock
);
...
@@ -415,6 +415,7 @@ struct SVnode {
...
@@ -415,6 +415,7 @@ struct SVnode {
TdThreadMutex
lock
;
TdThreadMutex
lock
;
bool
blocked
;
bool
blocked
;
bool
restored
;
bool
restored
;
bool
hasTtlTask
;
tsem_t
syncSem
;
tsem_t
syncSem
;
int32_t
blockSec
;
int32_t
blockSec
;
int64_t
blockSeq
;
int64_t
blockSeq
;
...
...
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
d87a2b18
...
@@ -932,14 +932,19 @@ int metaTtlSetExpireTime(SMeta *pMeta, int64_t timePointMs) {
...
@@ -932,14 +932,19 @@ int metaTtlSetExpireTime(SMeta *pMeta, int64_t timePointMs) {
return
0
;
return
0
;
}
}
int
metaTtlDropTable
(
SMeta
*
pMeta
,
SArray
*
tbUids
)
{
int
metaTtlDropTables
(
SMeta
*
pMeta
,
SArray
*
tbUids
)
{
int
ret
=
0
;
int64_t
startMs
=
taosGetTimestampMs
();
int64_t
startMs
=
taosGetTimestampMs
();
tsem_wait
(
&
pMeta
->
txnReady
);
tsem_wait
(
&
pMeta
->
txnReady
);
metaWLock
(
pMeta
);
ttlMgrFlush
(
pMeta
->
pTtlMgr
,
pMeta
->
txn
);
ttlMgrFlush
(
pMeta
->
pTtlMgr
,
pMeta
->
txn
);
metaULock
(
pMeta
);
tsem_post
(
&
pMeta
->
txnReady
);
tsem_post
(
&
pMeta
->
txnReady
);
int
ret
=
ttlMgrFindExpired
(
pMeta
->
pTtlMgr
,
tbUids
);
metaRLock
(
pMeta
);
ret
=
ttlMgrFindExpired
(
pMeta
->
pTtlMgr
,
tbUids
);
metaULock
(
pMeta
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
metaError
(
"ttl failed to find expired table, ret:%d"
,
ret
);
metaError
(
"ttl failed to find expired table, ret:%d"
,
ret
);
return
ret
;
return
ret
;
...
@@ -959,6 +964,7 @@ int metaTtlDropTable(SMeta *pMeta, SArray *tbUids) {
...
@@ -959,6 +964,7 @@ int metaTtlDropTable(SMeta *pMeta, SArray *tbUids) {
metaDropTableByUid
(
pMeta
,
uid
,
NULL
);
metaDropTableByUid
(
pMeta
,
uid
,
NULL
);
metaULock
(
pMeta
);
metaULock
(
pMeta
);
tsem_post
(
&
pMeta
->
txnReady
);
tsem_post
(
&
pMeta
->
txnReady
);
taosUsleep
(
1
);
}
}
int64_t
endMs
=
taosGetTimestampMs
();
int64_t
endMs
=
taosGetTimestampMs
();
...
...
source/dnode/vnode/src/meta/metaTtl.c
浏览文件 @
d87a2b18
...
@@ -73,7 +73,7 @@ int ttlMgrOpen(STtlManger **ppTtlMgr, TDB *pEnv, int8_t rollback, const char *lo
...
@@ -73,7 +73,7 @@ int ttlMgrOpen(STtlManger **ppTtlMgr, TDB *pEnv, int8_t rollback, const char *lo
pTtlMgr
->
pTtlCache
=
taosHashInit
(
8192
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
pTtlMgr
->
pTtlCache
=
taosHashInit
(
8192
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
pTtlMgr
->
pDirtyUids
=
taosHashInit
(
8192
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
pTtlMgr
->
pDirtyUids
=
taosHashInit
(
8192
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
true
,
HASH_NO_LOCK
);
taosThreadRwlockInit
(
&
pTtlMgr
->
lock
,
NULL
);
//
taosThreadRwlockInit(&pTtlMgr->lock, NULL);
ret
=
ttlMgrFillCache
(
pTtlMgr
);
ret
=
ttlMgrFillCache
(
pTtlMgr
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
...
@@ -150,7 +150,7 @@ static void ttlMgrCleanup(STtlManger *pTtlMgr) {
...
@@ -150,7 +150,7 @@ static void ttlMgrCleanup(STtlManger *pTtlMgr) {
taosHashCleanup
(
pTtlMgr
->
pTtlCache
);
taosHashCleanup
(
pTtlMgr
->
pTtlCache
);
taosHashCleanup
(
pTtlMgr
->
pDirtyUids
);
taosHashCleanup
(
pTtlMgr
->
pDirtyUids
);
tdbTbClose
(
pTtlMgr
->
pTtlIdx
);
tdbTbClose
(
pTtlMgr
->
pTtlIdx
);
taosThreadRwlockDestroy
(
&
pTtlMgr
->
lock
);
//
taosThreadRwlockDestroy(&pTtlMgr->lock);
taosMemoryFree
(
pTtlMgr
);
taosMemoryFree
(
pTtlMgr
);
}
}
...
@@ -508,9 +508,7 @@ int ttlMgrSetExpireTime(STtlManger *pTtlMgr, int64_t timePointMs) {
...
@@ -508,9 +508,7 @@ int ttlMgrSetExpireTime(STtlManger *pTtlMgr, int64_t timePointMs) {
static
int32_t
ttlMgrRLock
(
STtlManger
*
pTtlMgr
)
{
static
int32_t
ttlMgrRLock
(
STtlManger
*
pTtlMgr
)
{
int32_t
ret
=
0
;
int32_t
ret
=
0
;
metaTrace
(
"%s, ttl mgr rlock %p"
,
pTtlMgr
->
logPrefix
,
&
pTtlMgr
->
lock
);
//ret = taosThreadRwlockRdlock(&pTtlMgr->lock);
ret
=
taosThreadRwlockRdlock
(
&
pTtlMgr
->
lock
);
return
ret
;
return
ret
;
}
}
...
@@ -518,9 +516,7 @@ static int32_t ttlMgrRLock(STtlManger *pTtlMgr) {
...
@@ -518,9 +516,7 @@ static int32_t ttlMgrRLock(STtlManger *pTtlMgr) {
static
int32_t
ttlMgrWLock
(
STtlManger
*
pTtlMgr
)
{
static
int32_t
ttlMgrWLock
(
STtlManger
*
pTtlMgr
)
{
int32_t
ret
=
0
;
int32_t
ret
=
0
;
metaTrace
(
"%s, ttl mgr wlock %p"
,
pTtlMgr
->
logPrefix
,
&
pTtlMgr
->
lock
);
//ret = taosThreadRwlockWrlock(&pTtlMgr->lock);
ret
=
taosThreadRwlockWrlock
(
&
pTtlMgr
->
lock
);
return
ret
;
return
ret
;
}
}
...
@@ -528,9 +524,7 @@ static int32_t ttlMgrWLock(STtlManger *pTtlMgr) {
...
@@ -528,9 +524,7 @@ static int32_t ttlMgrWLock(STtlManger *pTtlMgr) {
static
int32_t
ttlMgrULock
(
STtlManger
*
pTtlMgr
)
{
static
int32_t
ttlMgrULock
(
STtlManger
*
pTtlMgr
)
{
int32_t
ret
=
0
;
int32_t
ret
=
0
;
metaTrace
(
"%s, ttl mgr ulock %p"
,
pTtlMgr
->
logPrefix
,
&
pTtlMgr
->
lock
);
//ret = taosThreadRwlockUnlock(&pTtlMgr->lock);
ret
=
taosThreadRwlockUnlock
(
&
pTtlMgr
->
lock
);
return
ret
;
return
ret
;
}
}
source/dnode/vnode/src/vnd/vnodeCommit.c
浏览文件 @
d87a2b18
...
@@ -362,7 +362,7 @@ static int32_t vnodeTtlTask(void *arg) {
...
@@ -362,7 +362,7 @@ static int32_t vnodeTtlTask(void *arg) {
SVnode
*
pVnode
=
pInfo
->
pVnode
;
SVnode
*
pVnode
=
pInfo
->
pVnode
;
SArray
*
tbUids
=
taosArrayInit
(
8
,
sizeof
(
int64_t
));
SArray
*
tbUids
=
taosArrayInit
(
8
,
sizeof
(
int64_t
));
code
=
metaTtlDropTable
(
pVnode
->
pMeta
,
tbUids
);
code
=
metaTtlDropTable
s
(
pVnode
->
pMeta
,
tbUids
);
if
(
code
)
{
if
(
code
)
{
vFatal
(
"vgId:%d, meta failed to drop table by ttl since %s"
,
TD_VID
(
pVnode
),
terrstr
());
vFatal
(
"vgId:%d, meta failed to drop table by ttl since %s"
,
TD_VID
(
pVnode
),
terrstr
());
goto
_exit
;
goto
_exit
;
...
@@ -373,7 +373,7 @@ static int32_t vnodeTtlTask(void *arg) {
...
@@ -373,7 +373,7 @@ static int32_t vnodeTtlTask(void *arg) {
}
}
_exit:
_exit:
// end commit
pVnode
->
hasTtlTask
=
false
;
taosArrayDestroy
(
tbUids
);
taosArrayDestroy
(
tbUids
);
taosMemoryFree
(
pInfo
);
taosMemoryFree
(
pInfo
);
return
code
;
return
code
;
...
...
source/dnode/vnode/src/vnd/vnodeOpen.c
浏览文件 @
d87a2b18
...
@@ -371,6 +371,7 @@ SVnode *vnodeOpen(const char *path, int32_t diskPrimary, STfs *pTfs, SMsgCb msgC
...
@@ -371,6 +371,7 @@ SVnode *vnodeOpen(const char *path, int32_t diskPrimary, STfs *pTfs, SMsgCb msgC
pVnode
->
msgCb
=
msgCb
;
pVnode
->
msgCb
=
msgCb
;
taosThreadMutexInit
(
&
pVnode
->
lock
,
NULL
);
taosThreadMutexInit
(
&
pVnode
->
lock
,
NULL
);
pVnode
->
blocked
=
false
;
pVnode
->
blocked
=
false
;
pVnode
->
hasTtlTask
=
false
;
tsem_init
(
&
pVnode
->
syncSem
,
0
,
0
);
tsem_init
(
&
pVnode
->
syncSem
,
0
,
0
);
tsem_init
(
&
(
pVnode
->
canCommit
),
0
,
1
);
tsem_init
(
&
(
pVnode
->
canCommit
),
0
,
1
);
...
...
source/dnode/vnode/src/vnd/vnodeSvr.c
浏览文件 @
d87a2b18
...
@@ -725,8 +725,14 @@ static int32_t vnodeProcessDropTtlTbReq(SVnode *pVnode, int64_t ver, void *pReq,
...
@@ -725,8 +725,14 @@ static int32_t vnodeProcessDropTtlTbReq(SVnode *pVnode, int64_t ver, void *pReq,
code
=
metaTtlSetExpireTime
(
pVnode
->
pMeta
,
ttlExpireTimeMs
);
code
=
metaTtlSetExpireTime
(
pVnode
->
pMeta
,
ttlExpireTimeMs
);
if
(
code
)
goto
end
;
if
(
code
)
goto
end
;
code
=
vnodeAsyncTtlDropTable
(
pVnode
);
if
(
!
pVnode
->
hasTtlTask
)
{
if
(
code
)
goto
end
;
pVnode
->
hasTtlTask
=
true
;
code
=
vnodeAsyncTtlDropTable
(
pVnode
);
if
(
code
)
{
pVnode
->
hasTtlTask
=
false
;
goto
end
;
}
}
code
=
vnodeDoRetention
(
pVnode
,
ttlReq
.
timestampSec
);
code
=
vnodeDoRetention
(
pVnode
,
ttlReq
.
timestampSec
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录