Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1e9ce7c5
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
1e9ce7c5
编写于
6月 11, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
a21f83c9
变更
4
展开全部
显示空白变更内容
内联
并排
Showing
4 changed file
with
190 addition
and
486 deletion
+190
-486
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+26
-458
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+4
-4
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
+128
-16
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+32
-8
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
1e9ce7c5
此差异已折叠。
点击以展开。
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
1e9ce7c5
...
...
@@ -172,7 +172,7 @@ static int32_t tsdbCommitDelStart(SCommitter *pCommitter) {
SDelFile
*
pDelFileW
=
NULL
;
// TODO
if
(
pDelFileR
)
{
code
=
tsdbDelFReaderOpen
(
&
pCommitter
->
pDelFReader
,
pDelFileR
);
code
=
tsdbDelFReaderOpen
(
&
pCommitter
->
pDelFReader
,
pDelFileR
,
pTsdb
,
NULL
);
if
(
code
)
{
goto
_err
;
}
...
...
@@ -183,7 +183,7 @@ static int32_t tsdbCommitDelStart(SCommitter *pCommitter) {
}
}
code
=
tsdbDelFWriterOpen
(
&
pCommitter
->
pDelFWriter
,
pDelFileW
);
code
=
tsdbDelFWriterOpen
(
&
pCommitter
->
pDelFWriter
,
pDelFileW
,
pTsdb
);
if
(
code
)
{
goto
_err
;
}
...
...
@@ -299,11 +299,11 @@ static int32_t tsdbCommitDel(SCommitter *pCommitter) {
}
_exit:
tsdbDebug
(
"vgId:%d commit del data, nDel:%"
PRId64
,
TD_VID
(
pTsdb
->
pVnode
),
pMemTable
->
nDel
);
tsdbDebug
(
"vgId:%d commit del data
done
, nDel:%"
PRId64
,
TD_VID
(
pTsdb
->
pVnode
),
pMemTable
->
nDel
);
return
code
;
_err:
tsdbError
(
"vgId:%d
failed to commit del data
since %s"
,
TD_VID
(
pTsdb
->
pVnode
),
tstrerror
(
code
));
tsdbError
(
"vgId:%d
commit del data failed
since %s"
,
TD_VID
(
pTsdb
->
pVnode
),
tstrerror
(
code
));
return
code
;
}
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
1e9ce7c5
...
...
@@ -15,6 +15,9 @@
#include "tsdb.h"
#define TSDB_FHDR_SIZE 512
#define TSDB_FILE_DLMT ((uint32_t)0xF00AFA0F)
// SDFileSetWritter ====================================================
struct
SDFileSetWritter
{
STsdb
*
pTsdb
;
...
...
@@ -75,13 +78,39 @@ int32_t tsdbLoadSBlockStatis(SDFileSetReader *pReader, SBlock *pBlock, SBlockSta
// SDelFWriter ====================================================
struct
SDelFWriter
{
STsdb
*
pTsdb
;
SDelFile
*
pFile
;
TdFilePtr
pWriteH
;
};
int32_t
tsdbDelFWriterOpen
(
SDelFWriter
**
ppWriter
,
SDelFile
*
pFile
)
{
int32_t
tsdbDelFWriterOpen
(
SDelFWriter
**
ppWriter
,
SDelFile
*
pFile
,
STsdb
*
pTsdb
)
{
int32_t
code
=
0
;
// TODO
char
*
fname
=
NULL
;
// TODO
SDelFWriter
*
pDelFWriter
;
pDelFWriter
=
(
SDelFWriter
*
)
taosMemoryCalloc
(
1
,
sizeof
(
*
pDelFWriter
));
if
(
pDelFWriter
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
pDelFWriter
->
pTsdb
=
pTsdb
;
pDelFWriter
->
pFile
=
pFile
;
pDelFWriter
->
pWriteH
=
taosOpenFile
(
fname
,
TD_FILE_WRITE
|
TD_FILE_CREATE
);
if
(
pDelFWriter
->
pWriteH
==
NULL
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
if
(
taosLSeekFile
(
pDelFWriter
->
pWriteH
,
TSDB_FHDR_SIZE
,
SEEK_SET
)
<
0
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
return
code
;
_err:
tsdbError
(
"vgId:%d failed to open del file writer since %s"
,
TD_VID
(
pTsdb
->
pVnode
),
tstrerror
(
code
));
return
code
;
}
...
...
@@ -91,15 +120,44 @@ int32_t tsdbDelFWriterClose(SDelFWriter *pWriter) {
return
code
;
}
int32_t
tsdbWriteDelData
(
SDelFWriter
*
pWriter
,
SDelData
*
pDelData
,
uint8_t
**
ppBuf
)
{
int32_t
tsdbWriteDelData
(
SDelFWriter
*
pWriter
,
SDelData
*
pDelData
,
uint8_t
**
ppBuf
,
SDelIdxItem
*
pItem
)
{
int32_t
code
=
0
;
int64_t
size
;
// TODO
return
code
;
}
int32_t
tsdbWriteDelIdx
(
SDelFWriter
*
pWriter
,
SDelIdx
*
pDelIdx
,
uint8_t
**
ppBuf
)
{
int32_t
code
=
0
;
// TODO
int64_t
size
;
size
=
tPutDelIdx
(
NULL
,
pDelIdx
)
+
sizeof
(
TSCKSUM
);
// alloc
code
=
tsdbRealloc
(
ppBuf
,
size
);
if
(
code
)
{
goto
_err
;
}
// encode
tPutDelIdx
(
*
ppBuf
,
pDelIdx
);
// checksum
taosCalcChecksumAppend
(
0
,
*
ppBuf
,
size
);
// write
if
(
taosWriteFile
(
pWriter
->
pWriteH
,
*
ppBuf
,
size
)
<
size
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
pWriter
->
pFile
->
offset
=
pWriter
->
pFile
->
size
;
pWriter
->
pFile
->
size
+=
size
;
return
code
;
_err:
return
code
;
}
...
...
@@ -110,15 +168,65 @@ struct SDelFReader {
TdFilePtr
pReadH
;
};
int32_t
tsdbDelFReaderOpen
(
SDelFReader
**
ppReader
,
SDelFile
*
pFile
)
{
int32_t
tsdbDelFReaderOpen
(
SDelFReader
**
ppReader
,
SDelFile
*
pFile
,
STsdb
*
pTsdb
,
uint8_t
**
ppBuf
)
{
int32_t
code
=
0
;
// TODO
char
*
fname
=
NULL
;
// todo
SDelFReader
*
pDelFReader
;
// alloc
pDelFReader
=
(
SDelFReader
*
)
taosMemoryCalloc
(
1
,
sizeof
(
*
pDelFReader
));
if
(
pDelFReader
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
// open impl
pDelFReader
->
pTsdb
=
pTsdb
;
pDelFReader
->
pFile
=
pFile
;
pDelFReader
->
pReadH
=
taosOpenFile
(
fname
,
TD_FILE_READ
);
if
(
pDelFReader
==
NULL
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
taosMemoryFree
(
pDelFReader
);
goto
_err
;
}
// load and check hdr if buffer is given
if
(
ppBuf
)
{
code
=
tsdbRealloc
(
ppBuf
,
TSDB_FHDR_SIZE
);
if
(
code
)
{
goto
_err
;
}
if
(
taosReadFile
(
pDelFReader
->
pReadH
,
*
ppBuf
,
TSDB_FHDR_SIZE
)
<
TSDB_FHDR_SIZE
)
{
code
=
TSDB_CODE_FILE_CORRUPTED
;
goto
_err
;
}
if
(
!
taosCheckChecksumWhole
(
*
ppBuf
,
TSDB_FHDR_SIZE
))
{
code
=
TSDB_CODE_FILE_CORRUPTED
;
goto
_err
;
}
// TODO: check the content
}
_exit:
*
ppReader
=
pDelFReader
;
return
code
;
_err:
*
ppReader
=
NULL
;
return
code
;
}
int32_t
tsdbDelFReaderClose
(
SDelFReader
*
pReader
)
{
int32_t
code
=
0
;
// TODO
if
(
pReader
)
{
taosCloseFile
(
&
pReader
->
pReadH
);
taosMemoryFree
(
pReader
);
}
return
code
;
}
...
...
@@ -134,20 +242,20 @@ int32_t tsdbReadDelIdx(SDelFReader *pReader, SDelIdx *pDelIdx, uint8_t **ppBuf)
int64_t
size
=
pReader
->
pFile
->
size
-
offset
;
// seek
if
(
taosLSeekFile
(
pReader
->
pReadH
,
pReader
->
pFile
->
offset
,
SEEK_SET
)
<
0
)
{
if
(
taosLSeekFile
(
pReader
->
pReadH
,
offset
,
SEEK_SET
)
<
0
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
//
read
if
(
taosReadFile
(
pReader
->
pReadH
,
*
ppBuf
,
size
)
<
size
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
//
alloc
code
=
tsdbRealloc
(
ppBuf
,
size
);
if
(
code
)
{
goto
_err
;
}
// rea
lloc buf
code
=
tsdbRealloc
(
ppBuf
,
size
);
if
(
code
)
{
// rea
d
if
(
taosReadFile
(
pReader
->
pReadH
,
*
ppBuf
,
size
)
<
size
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
goto
_err
;
}
...
...
@@ -158,6 +266,10 @@ int32_t tsdbReadDelIdx(SDelFReader *pReader, SDelIdx *pDelIdx, uint8_t **ppBuf)
}
// decode
int32_t
n
=
tGetDelIdx
(
*
ppBuf
,
pDelIdx
);
ASSERT
(
n
==
size
-
sizeof
(
TSCKSUM
));
ASSERT
(
pDelIdx
->
delimiter
==
TSDB_FILE_DLMT
);
ASSERT
(
pDelIdx
->
nOffset
>
0
&&
pDelIdx
->
nData
>
0
);
return
code
;
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
1e9ce7c5
...
...
@@ -88,22 +88,46 @@ int32_t tsdbKeyCmprFn(const void *p1, const void *p2) {
return
0
;
}
int32_t
tPut
TMap
(
uint8_t
*
p
,
STMap
*
pMap
)
{
int32_t
tPut
DelIdx
(
uint8_t
*
p
,
SDelIdx
*
pDelIdx
)
{
int32_t
n
=
0
;
n
+=
tPutU8
(
p
?
p
+
n
:
p
,
pMap
->
flags
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pMap
->
pOffset
,
pMap
->
nOffset
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pMap
->
pData
,
pMap
->
nData
);
n
+=
tPutU32
(
p
?
p
+
n
:
p
,
pDelIdx
->
delimiter
);
n
+=
tPutU8
(
p
?
p
+
n
:
p
,
pDelIdx
->
flags
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelIdx
->
pOffset
,
pDelIdx
->
nOffset
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelIdx
->
pData
,
pDelIdx
->
nData
);
return
n
;
}
int32_t
tGet
TMap
(
uint8_t
*
p
,
STMap
*
pMap
)
{
int32_t
tGet
DelIdx
(
uint8_t
*
p
,
SDelIdx
*
pDelIdx
)
{
int32_t
n
=
0
;
n
+=
tGetU8
(
p
,
&
pMap
->
flags
);
n
+=
tGetBinary
(
p
,
&
pMap
->
pOffset
,
&
pMap
->
nOffset
);
n
+=
tGetBinary
(
p
,
&
pMap
->
pData
,
&
pMap
->
nData
);
n
+=
tGetU32
(
p
,
&
pDelIdx
->
delimiter
);
n
+=
tGetU8
(
p
,
&
pDelIdx
->
flags
);
n
+=
tGetBinary
(
p
,
&
pDelIdx
->
pOffset
,
&
pDelIdx
->
nOffset
);
n
+=
tGetBinary
(
p
,
&
pDelIdx
->
pData
,
&
pDelIdx
->
nData
);
return
n
;
}
int32_t
tPutDelData
(
uint8_t
*
p
,
SDelData
*
pDelData
)
{
int32_t
n
=
0
;
n
+=
tPutU32
(
p
?
p
+
n
:
p
,
pDelData
->
delimiter
);
n
+=
tPutU8
(
p
?
p
+
n
:
p
,
pDelData
->
flags
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelData
->
pOffset
,
pDelData
->
nOffset
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelData
->
pData
,
pDelData
->
nData
);
return
n
;
}
int32_t
tGetDelData
(
uint8_t
*
p
,
SDelData
*
pDelData
)
{
int32_t
n
=
0
;
n
+=
tGetU32
(
p
,
&
pDelData
->
delimiter
);
n
+=
tGetU8
(
p
,
&
pDelData
->
flags
);
n
+=
tGetBinary
(
p
,
&
pDelData
->
pOffset
,
&
pDelData
->
nOffset
);
n
+=
tGetBinary
(
p
,
&
pDelData
->
pData
,
&
pDelData
->
nData
);
return
n
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录