Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5c04048e
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看板
提交
5c04048e
编写于
1月 06, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
partial work
上级
313fd6b2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
62 addition
and
47 deletion
+62
-47
src/inc/tfs.h
src/inc/tfs.h
+1
-0
src/tfs/src/tfs.c
src/tfs/src/tfs.c
+24
-0
src/tsdb/src/tsdbCommit.c
src/tsdb/src/tsdbCommit.c
+37
-47
未找到文件。
src/inc/tfs.h
浏览文件 @
5c04048e
...
...
@@ -40,6 +40,7 @@ int64_t tfsTotalSize();
int64_t
tfsAvailSize
();
void
tfsIncDiskFile
(
int
level
,
int
id
,
int
num
);
void
tfsDecDiskFile
(
int
level
,
int
id
,
int
num
);
void
tfsAllocDisk
(
int
expLevel
,
int
*
level
,
int
*
id
);
const
char
*
TFS_PRIMARY_PATH
();
const
char
*
TFS_DISK_PATH
(
int
level
,
int
id
);
...
...
src/tfs/src/tfs.c
浏览文件 @
5c04048e
...
...
@@ -156,6 +156,30 @@ void tfsDecDiskFile(int level, int id, int num) {
tfsUnLock
();
}
/* Allocate an existing available tier level
*/
void
tfsAllocDisk
(
int
expLevel
,
int
*
level
,
int
*
id
)
{
*
level
=
expLevel
;
*
id
=
TFS_UNDECIDED_ID
;
if
(
*
level
>
TFS_NLEVEL
())
{
*
level
=
TFS_NLEVEL
();
}
while
(
*
level
>=
0
)
{
*
id
=
tfsAssignDisk
(
*
level
);
if
(
*
id
<
0
)
{
*
level
--
;
continue
;
}
return
;
}
*
level
=
TFS_UNDECIDED_LEVEL
;
*
id
=
TFS_UNDECIDED_ID
;
}
const
char
*
TFS_PRIMARY_PATH
()
{
return
DISK_DIR
(
TFS_PRIMARY_DISK
());
}
const
char
*
TFS_DISK_PATH
(
int
level
,
int
id
)
{
return
DISK_DIR
(
TFS_DISK_AT
(
level
,
id
));
}
...
...
src/tsdb/src/tsdbCommit.c
浏览文件 @
5c04048e
...
...
@@ -24,9 +24,14 @@ typedef struct {
}
SRtn
;
typedef
struct
{
SRtn
rtn
;
SCommitIter
*
iters
;
SRWHelper
whelper
;
SRtn
rtn
;
// retention snapshot
int
niters
;
SCommitIter
*
iters
;
// memory iterators
SReadH
readh
;
SDFileSet
*
pWSet
;
SArray
*
aBlkIdx
;
SArray
*
aSupBlk
;
SArray
*
aSubBlk
;
SDataCols
*
pDataCols
;
}
SCommitH
;
...
...
@@ -210,59 +215,44 @@ static bool tsdbHasDataToCommit(SCommitIter *iters, int nIters, TSKEY minKey, TS
static
int
tsdbCommitToFile
(
STsdbRepo
*
pRepo
,
SDFileSet
*
pOldSet
,
SCommitH
*
pch
,
int
fid
)
{
SDFileSet
rSet
;
SDFileSet
wSet
;
int
level
;
int
level
,
id
;
if
(
pOldSet
&&
pOldSet
->
fid
<
pch
->
rtn
.
minFid
)
{
// file is deleted
// ASSERT(pOldSet != NULL || fid != TSDB_IVLD_FID);
// file should be deleted, do nothing and return
if
(
pOldSet
&&
pOldSet
->
fid
<
pch
->
rtn
.
minFid
)
{
ASSERT
(
fid
==
TSDB_IVLD_FID
);
return
0
;
}
// if (pOldSet) {
// ASSERT(fid == TSDB_IVLD_FID || pOldSet->fid == fid);
// if (true /* TODO: pOldSet not in correct level*/) {
// // TODO: Check if pOldSet is on correct level, if not, move it to correct level
// } else {
// tsdbInitDFile(TSDB_DFILE_IN_SET(&nSet, TSDB_FILE_HEAD), REPO_ID(pRepo), fid, 0 /*TODO*/, 0 /*TODO*/, 0
// /*TODO*/,
// NULL, TSDB_FILE_HEAD);
// // TODO: init data
// tsdbInitDFileWithOld(TSDB_DFILE_IN_SET(&nSet, TSDB_FILE_DATA), TSDB_DFILE_IN_SET(pOldSet, TSDB_FILE_DATA));
// // TODO: init last file
// SDFile *pDFile = TSDB_DFILE_IN_SET(pOldSet, TSDB_FILE_LAST);
// if (pDFile->info->size < 32K) {
// } else {
// }
// tsdbInitDFileWithOld(&oSet, pOldSet);
// pReadSet = &oSet;
// }
// } else {
// ASSERT(fid != TSDB_IVLD_FID);
// // Create a new file group
// tsdbInitDFileSet(&nSet, REPO_ID(pRepo), fid, 0 /*TODO*/, tsdbGetFidLevel(fid, &(pch->rtn)), TFS_UNDECIDED_ID);
// tsdbOpenDFileSet(&nSet, O_WRONLY | O_CREAT);
// tsdbUpdateDFileSetHeader(&nSet);
// }
{
// TODO: set rSet and wSet, the read file set and write file set
}
if
(
pOldSet
==
NULL
)
{
ASSERT
(
fid
!=
TSDB_IVLD_FID
);
if
(
fid
==
TSDB_IVLD_FID
)
{
// TODO: copy rSet as wSet
}
else
{
tsdbSetAndOpenCommitFSet
(
pch
,
&
rSet
,
&
wSet
);
tfsAllocDisk
(
tsdbGetFidLevel
(
fid
,
&
(
pch
->
rtn
)),
&
level
,
&
id
);
if
(
level
==
TFS_UNDECIDED_LEVEL
)
{
// terrno = TSDB_CODE_TDB_NO_INVALID_DISK;
return
-
1
;
}
for
(
int
i
=
0
;
i
<
pMem
->
maxTable
;
i
++
)
{
tsdbCommitTableData
;
/* code */
// wSet here is the file to write, no read set
tsdbInitDFileSet
(
&
wSet
,
REPO_ID
(
pRepo
),
fid
,
0
/*TODO*/
,
level
,
id
);
}
else
{
tfsAllocDisk
(
tsdbGetFidLevel
(
pOldSet
->
fid
,
&
(
pch
->
rtn
)),
&
level
,
&
fid
);
if
(
level
==
TFS_UNDECIDED_LEVEL
)
{
// terrno = TSDB_CODE_TDB_NO_INVALID_DISK;
return
-
1
;
}
tsdbCloseAndUnSetCommitFSet
(
pch
);
if
(
level
>
TSDB_FSET_LEVEL
(
pOldSet
))
{
// wSet here is the file to write, pOldSet here is the read set
tsdbInitDFileSet
(
&
wSet
,
REPO_ID
(
pRepo
),
fid
,
0
/*TODO*/
,
level
,
id
);
}
else
{
// get wSet with pOldSet
}
// if (level == TSDB_FSET_LEVEL(pOldSet)) {
// } else {
// // TODO
// }
}
tsdbUpdateDFileSet
(
pRepo
,
&
wSet
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录