Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a32c147b
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看板
提交
a32c147b
编写于
7月 13, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more vnode snapshot writer
上级
dc599896
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
115 addition
and
65 deletion
+115
-65
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+1
-10
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
+114
-55
未找到文件。
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
a32c147b
...
@@ -284,16 +284,7 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
...
@@ -284,16 +284,7 @@ static int32_t tsdbCommitFileDataStart(SCommitter *pCommitter) {
.
fLast
=
{.
commitID
=
pCommitter
->
commitID
,
.
size
=
0
},
.
fLast
=
{.
commitID
=
pCommitter
->
commitID
,
.
size
=
0
},
.
fSma
=
pRSet
->
fSma
};
.
fSma
=
pRSet
->
fSma
};
}
else
{
}
else
{
STfs
*
pTfs
=
pTsdb
->
pVnode
->
pTfs
;
wSet
=
(
SDFileSet
){.
diskId
=
(
SDiskID
){.
level
=
0
,
.
id
=
0
},
SDiskID
did
=
{.
level
=
0
,
.
id
=
0
};
// TODO: alloc a new disk
// tfsAllocDisk(pTfs, 0, &did);
// create the directory
tfsMkdirRecurAt
(
pTfs
,
pTsdb
->
path
,
did
);
wSet
=
(
SDFileSet
){.
diskId
=
did
,
.
fid
=
pCommitter
->
commitFid
,
.
fid
=
pCommitter
->
commitFid
,
.
fHead
=
{.
commitID
=
pCommitter
->
commitID
,
.
offset
=
0
,
.
size
=
0
},
.
fHead
=
{.
commitID
=
pCommitter
->
commitID
,
.
offset
=
0
,
.
size
=
0
},
.
fData
=
{.
commitID
=
pCommitter
->
commitID
,
.
size
=
0
},
.
fData
=
{.
commitID
=
pCommitter
->
commitID
,
.
size
=
0
},
...
...
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
浏览文件 @
a32c147b
...
@@ -365,36 +365,39 @@ struct STsdbSnapWriter {
...
@@ -365,36 +365,39 @@ struct STsdbSnapWriter {
int32_t
minRow
;
int32_t
minRow
;
int32_t
maxRow
;
int32_t
maxRow
;
int8_t
cmprAlg
;
int8_t
cmprAlg
;
int64_t
commitID
;
// for data file
// for data file
SBlockData
bData
;
int32_t
fid
;
int32_t
fid
;
SDataFReader
*
pDataFReader
;
SDataFReader
*
pDataFReader
;
SArray
*
aBlockIdx
;
SArray
*
aBlockIdx
;
// SArray<SBlockIdx>
int32_t
iBlockIdx
;
int32_t
iBlockIdx
;
SBlockIdx
*
pBlockIdx
;
SBlockIdx
*
pBlockIdx
;
SMapData
mBlock
;
SMapData
mBlock
;
// SMapData<SBlock>
int32_t
iBlock
;
int32_t
iBlock
;
SBlock
*
pBlock
;
SBlock
*
pBlock
;
SBlock
block
;
SBlock
block
;
SBlockData
b
lockData
;
SBlockData
b
DataR
;
int32_t
iRow
;
int32_t
iRow
;
SDataFWriter
*
pDataFWriter
;
SDataFWriter
*
pDataFWriter
;
SArray
*
aBlockIdx
N
;
SArray
*
aBlockIdx
W
;
// SArray<SBlockIdx>
SBlockIdx
*
pBlockIdx
N
;
SBlockIdx
*
pBlockIdx
W
;
SBlockIdx
blockIdx
;
SBlockIdx
blockIdx
;
SMapData
mBlock
N
;
SMapData
mBlock
W
;
// SMapData<SBlock>
SBlock
*
pBlock
N
;
SBlock
*
pBlock
W
;
SBlock
block
N
;
SBlock
block
W
;
SBlockData
nBlockData
;
SBlockData
bDataW
;
// for del file
// for del file
SDelFReader
*
pDelFReader
;
SDelFReader
*
pDelFReader
;
SDelFWriter
*
pDelFWriter
;
SDelFWriter
*
pDelFWriter
;
int32_t
iDelIdx
;
int32_t
iDelIdx
;
SArray
*
aDelIdx
;
SArray
*
aDelIdx
R
;
SArray
*
aDelData
;
SArray
*
aDelData
;
SArray
*
aDelIdx
N
;
SArray
*
aDelIdx
W
;
};
};
static
int32_t
tsdbSnapRollback
(
STsdbSnapWriter
*
pWriter
)
{
static
int32_t
tsdbSnapRollback
(
STsdbSnapWriter
*
pWriter
)
{
...
@@ -440,7 +443,7 @@ static int32_t tsdbSnapWriteAppendData(STsdbSnapWriter* pWriter, uint8_t* pData,
...
@@ -440,7 +443,7 @@ static int32_t tsdbSnapWriteAppendData(STsdbSnapWriter* pWriter, uint8_t* pData,
SBlockData
*
pBlockData
=
NULL
;
// todo
SBlockData
*
pBlockData
=
NULL
;
// todo
while
(
iRow
<
nRow
)
{
while
(
iRow
<
nRow
)
{
code
=
tBlockDataAppendRow
(
&
pWriter
->
nBlockData
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
code
=
tBlockDataAppendRow
(
&
pWriter
->
bDataW
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
}
...
@@ -478,14 +481,14 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
...
@@ -478,14 +481,14 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
if
(
pWriter
->
pBlockIdx
==
NULL
||
tTABLEIDCmprFn
(
&
id
,
pWriter
->
pBlockIdx
)
<
0
)
{
if
(
pWriter
->
pBlockIdx
==
NULL
||
tTABLEIDCmprFn
(
&
id
,
pWriter
->
pBlockIdx
)
<
0
)
{
int32_t
c
;
int32_t
c
;
if
(
pWriter
->
pBlockIdx
N
&&
((
c
=
tTABLEIDCmprFn
(
&
id
,
pWriter
->
pBlockIdxN
))
!=
0
))
{
if
(
pWriter
->
pBlockIdx
W
&&
((
c
=
tTABLEIDCmprFn
(
&
id
,
pWriter
->
pBlockIdxW
))
!=
0
))
{
ASSERT
(
c
>
0
);
ASSERT
(
c
>
0
);
code
=
tsdbSnapWriteTableDataEnd
(
pWriter
);
code
=
tsdbSnapWriteTableDataEnd
(
pWriter
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
}
if
(
pWriter
->
pBlockIdx
N
==
NULL
)
{
if
(
pWriter
->
pBlockIdx
W
==
NULL
)
{
pWriter
->
pBlockIdx
=
&
pWriter
->
blockIdx
;
pWriter
->
pBlockIdx
=
&
pWriter
->
blockIdx
;
pWriter
->
pBlockIdx
->
suid
=
id
.
suid
;
pWriter
->
pBlockIdx
->
suid
=
id
.
suid
;
pWriter
->
pBlockIdx
->
uid
=
id
.
uid
;
pWriter
->
pBlockIdx
->
uid
=
id
.
uid
;
...
@@ -496,12 +499,12 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
...
@@ -496,12 +499,12 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
int32_t
nRow
=
0
;
// todo
int32_t
nRow
=
0
;
// todo
SBlockData
*
pBlockData
=
NULL
;
// todo
SBlockData
*
pBlockData
=
NULL
;
// todo
for
(
int32_t
iRow
=
0
;
iRow
<
nRow
;
iRow
++
)
{
for
(
int32_t
iRow
=
0
;
iRow
<
nRow
;
iRow
++
)
{
code
=
tBlockDataAppendRow
(
&
pWriter
->
nBlockData
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
code
=
tBlockDataAppendRow
(
&
pWriter
->
bDataW
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
if
(
pWriter
->
nBlockData
.
nRow
>
pWriter
->
maxRow
*
4
/
5
)
{
if
(
pWriter
->
bDataW
.
nRow
>
pWriter
->
maxRow
*
4
/
5
)
{
code
=
tsdbWriteBlockData
(
pWriter
->
pDataFWriter
,
&
pWriter
->
nBlockData
,
NULL
,
NULL
,
pWriter
->
pBlockIdxN
,
code
=
tsdbWriteBlockData
(
pWriter
->
pDataFWriter
,
&
pWriter
->
bDataW
,
NULL
,
NULL
,
pWriter
->
pBlockIdxW
,
pWriter
->
pBlock
N
,
pWriter
->
cmprAlg
);
pWriter
->
pBlock
W
,
pWriter
->
cmprAlg
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
}
}
}
...
@@ -512,7 +515,7 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
...
@@ -512,7 +515,7 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
if
(
pWriter
->
pBlock
->
last
)
break
;
if
(
pWriter
->
pBlock
->
last
)
break
;
if
(
tBlockCmprFn
(
&
(
SBlock
){.
minKey
=
{
0
},
.
maxKey
=
{
0
}},
pWriter
->
pBlock
)
>=
0
)
break
;
if
(
tBlockCmprFn
(
&
(
SBlock
){.
minKey
=
{
0
},
.
maxKey
=
{
0
}},
pWriter
->
pBlock
)
>=
0
)
break
;
code
=
tMapDataPutItem
(
&
pWriter
->
mBlock
N
,
pWriter
->
pBlock
,
tPutBlock
);
code
=
tMapDataPutItem
(
&
pWriter
->
mBlock
W
,
pWriter
->
pBlock
,
tPutBlock
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
}
...
@@ -533,15 +536,15 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
...
@@ -533,15 +536,15 @@ static int32_t tsdbSnapWriteTableData(STsdbSnapWriter* pWriter, uint8_t* pData,
SBlockData
*
pBlockData
=
NULL
;
SBlockData
*
pBlockData
=
NULL
;
for
(
int32_t
iRow
=
0
;
iRow
<
nRow
;
iRow
++
)
{
for
(
int32_t
iRow
=
0
;
iRow
<
nRow
;
iRow
++
)
{
code
=
tBlockDataAppendRow
(
&
pWriter
->
nBlockData
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
code
=
tBlockDataAppendRow
(
&
pWriter
->
bDataW
,
&
tsdbRowFromBlockData
(
pBlockData
,
iRow
),
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
if
(
pWriter
->
nBlockData
.
nRow
>=
pWriter
->
maxRow
*
4
/
5
)
{
if
(
pWriter
->
bDataW
.
nRow
>=
pWriter
->
maxRow
*
4
/
5
)
{
code
=
tsdbWriteBlockData
(
pWriter
->
pDataFWriter
,
&
pWriter
->
nBlockData
,
NULL
,
NULL
,
pWriter
->
pBlockIdxN
,
code
=
tsdbWriteBlockData
(
pWriter
->
pDataFWriter
,
&
pWriter
->
bDataW
,
NULL
,
NULL
,
pWriter
->
pBlockIdxW
,
pWriter
->
pBlock
N
,
pWriter
->
cmprAlg
);
pWriter
->
pBlock
W
,
pWriter
->
cmprAlg
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
tBlockDataClearData
(
&
pWriter
->
nBlockData
);
tBlockDataClearData
(
&
pWriter
->
bDataW
);
}
}
}
}
}
}
...
@@ -560,60 +563,77 @@ static int32_t tsdbSnapWriteData(STsdbSnapWriter* pWriter, uint8_t* pData, uint3
...
@@ -560,60 +563,77 @@ static int32_t tsdbSnapWriteData(STsdbSnapWriter* pWriter, uint8_t* pData, uint3
SSnapDataHdr
*
pHdr
=
(
SSnapDataHdr
*
)
pData
;
SSnapDataHdr
*
pHdr
=
(
SSnapDataHdr
*
)
pData
;
TABLEID
id
=
*
(
TABLEID
*
)(
&
pHdr
[
1
]);
TABLEID
id
=
*
(
TABLEID
*
)(
&
pHdr
[
1
]);
int64_t
n
;
int64_t
n
;
SBlockData
bData
=
{
0
};
SBlockData
*
pBlockData
=
&
bData
;
// decode
// decode
code
=
tBlockDataInit
(
pBlockData
);
SBlockData
*
pBlockData
=
&
pWriter
->
bData
;
if
(
code
)
goto
_err
;
n
=
tGetBlockData
(
pData
+
sizeof
(
SSnapDataHdr
)
+
sizeof
(
TABLEID
),
pBlockData
);
n
=
tGetBlockData
(
pData
+
sizeof
(
SSnapDataHdr
)
+
sizeof
(
TABLEID
),
pBlockData
);
ASSERT
(
n
+
sizeof
(
SSnapDataHdr
)
+
sizeof
(
TABLEID
)
==
nData
);
ASSERT
(
n
+
sizeof
(
SSnapDataHdr
)
+
sizeof
(
TABLEID
)
==
nData
);
#if 0
// open file
int32_t fid = tsdbKeyFid(skey, pWriter->minutes, pWriter->precision
);
TSDBKEY
keyFirst
=
tBlockDataFirstKey
(
pBlockData
);
ASSERT(fid == tsdbKeyFid(ekey, pWriter->minutes, pWriter->precision)
);
TSDBKEY
keyLast
=
tBlockDataLastKey
(
pBlockData
);
// begin
int32_t
fid
=
tsdbKeyFid
(
keyFirst
.
ts
,
pWriter
->
minutes
,
pWriter
->
precision
);
ASSERT
(
fid
==
tsdbKeyFid
(
keyLast
.
ts
,
pWriter
->
minutes
,
pWriter
->
precision
));
if
(
pWriter
->
pDataFWriter
==
NULL
||
pWriter
->
fid
!=
fid
)
{
if
(
pWriter
->
pDataFWriter
==
NULL
||
pWriter
->
fid
!=
fid
)
{
code = tsdbSnapWriteDataEnd(pWriter);
code
=
tsdbSnapWriteDataEnd
(
pWriter
);
// todo
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
pWriter
->
fid
=
fid
;
pWriter
->
fid
=
fid
;
SDFileSet* pSet = tsdbFSStateGetDFileSet(pTsdb->fs->nState, fid, TD_EQ);
// reader
// read
SDFileSet
*
pSet
=
tsdbFSStateGetDFileSet
(
pTsdb
->
fs
->
nState
,
fid
,
TD_EQ
);
// todo: check nState is valid
if
(
pSet
)
{
if
(
pSet
)
{
// open
code
=
tsdbDataFReaderOpen
(
&
pWriter
->
pDataFReader
,
pTsdb
,
pSet
);
code
=
tsdbDataFReaderOpen
(
&
pWriter
->
pDataFReader
,
pTsdb
,
pSet
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
// SBlockIdx
code
=
tsdbReadBlockIdx
(
pWriter
->
pDataFReader
,
pWriter
->
aBlockIdx
,
NULL
);
code
=
tsdbReadBlockIdx
(
pWriter
->
pDataFReader
,
pWriter
->
aBlockIdx
,
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
else
{
}
else
{
ASSERT
(
pWriter
->
pDataFReader
==
NULL
);
taosArrayClear
(
pWriter
->
aBlockIdx
);
taosArrayClear
(
pWriter
->
aBlockIdx
);
}
}
pWriter
->
iBlockIdx
=
0
;
pWriter
->
iBlockIdx
=
0
;
pWriter
->
pBlockIdx
=
NULL
;
tMapDataReset
(
&
pWriter
->
mBlock
);
pWriter
->
iBlock
=
0
;
pWriter
->
pBlock
=
NULL
;
tBlockDataReset
(
&
pWriter
->
bDataR
);
pWriter
->
iRow
=
0
;
// writer
// write
SDFileSet wSet = {0};
SDFileSet
wSet
;
if (pSet == NULL) {
wSet = (SDFileSet){0}; // todo
if
(
pSet
)
{
wSet
=
(
SDFileSet
){.
diskId
=
pSet
->
diskId
,
.
fid
=
fid
,
.
fHead
=
{.
commitID
=
pWriter
->
commitID
,
.
offset
=
0
,
.
size
=
0
},
.
fData
=
pSet
->
fData
,
.
fLast
=
{.
commitID
=
pWriter
->
commitID
,
.
size
=
0
},
.
fSma
=
pSet
->
fSma
};
}
else
{
}
else
{
wSet = (SDFileSet){0}; // todo
wSet
=
(
SDFileSet
){.
diskId
=
(
SDiskID
){.
level
=
0
,
.
id
=
0
},
.
fid
=
fid
,
.
fHead
=
{.
commitID
=
pWriter
->
commitID
,
.
offset
=
0
,
.
size
=
0
},
.
fData
=
{.
commitID
=
pWriter
->
commitID
,
.
size
=
0
},
.
fLast
=
{.
commitID
=
pWriter
->
commitID
,
.
size
=
0
},
.
fSma
=
{.
commitID
=
pWriter
->
commitID
,
.
size
=
0
}};
}
}
code
=
tsdbDataFWriterOpen
(
&
pWriter
->
pDataFWriter
,
pTsdb
,
&
wSet
);
code
=
tsdbDataFWriterOpen
(
&
pWriter
->
pDataFWriter
,
pTsdb
,
&
wSet
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
taosArrayClear(pWriter->aBlockIdxN);
taosArrayClear
(
pWriter
->
aBlockIdxW
);
pWriter
->
pBlockIdxW
=
NULL
;
tMapDataReset
(
&
pWriter
->
mBlockW
);
pWriter
->
pBlockW
=
NULL
;
tBlockDataReset
(
&
pWriter
->
bDataW
);
}
}
code = tsdbSnapWriteTableData(pWriter, pData, nData);
// write data block (todo)
if (code) goto _err;
#endif
tsdbInfo
(
"vgId:%d vnode snapshot tsdb write data,
suid:%"
PRId64
" uid:%"
PRId64
" nRow:%d"
,
TD_VID
(
pTsdb
->
pVnode
)
,
tsdbInfo
(
"vgId:%d vnode snapshot tsdb write data,
fid:%d suid:%"
PRId64
" uid:%"
PRId64
" nRow:%d"
,
id
.
suid
,
id
.
suid
,
pBlockData
->
nRow
);
TD_VID
(
pTsdb
->
pVnode
),
fid
,
id
.
suid
,
id
.
suid
,
pBlockData
->
nRow
);
return
code
;
return
code
;
_err:
_err:
...
@@ -633,7 +653,7 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
...
@@ -633,7 +653,7 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
code
=
tsdbDelFReaderOpen
(
&
pWriter
->
pDelFReader
,
pDelFile
,
pTsdb
,
NULL
);
code
=
tsdbDelFReaderOpen
(
&
pWriter
->
pDelFReader
,
pDelFile
,
pTsdb
,
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
code
=
tsdbReadDelIdx
(
pWriter
->
pDelFReader
,
pWriter
->
aDelIdx
,
NULL
);
code
=
tsdbReadDelIdx
(
pWriter
->
pDelFReader
,
pWriter
->
aDelIdx
R
,
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
}
}
...
@@ -653,8 +673,8 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
...
@@ -653,8 +673,8 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
SDelIdx
delIdx
;
SDelIdx
delIdx
;
int8_t
toBreak
=
0
;
int8_t
toBreak
=
0
;
if
(
pWriter
->
iDelIdx
<
taosArrayGetSize
(
pWriter
->
aDelIdx
))
{
if
(
pWriter
->
iDelIdx
<
taosArrayGetSize
(
pWriter
->
aDelIdx
R
))
{
pDelIdx
=
taosArrayGet
(
pWriter
->
aDelIdx
,
pWriter
->
iDelIdx
);
pDelIdx
=
taosArrayGet
(
pWriter
->
aDelIdx
R
,
pWriter
->
iDelIdx
);
}
}
if
(
pDelIdx
)
{
if
(
pDelIdx
)
{
...
@@ -695,7 +715,7 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
...
@@ -695,7 +715,7 @@ static int32_t tsdbSnapWriteDel(STsdbSnapWriter* pWriter, uint8_t* pData, uint32
code
=
tsdbWriteDelData
(
pWriter
->
pDelFWriter
,
pWriter
->
aDelData
,
NULL
,
&
delIdx
);
code
=
tsdbWriteDelData
(
pWriter
->
pDelFWriter
,
pWriter
->
aDelData
,
NULL
,
&
delIdx
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
if
(
taosArrayPush
(
pWriter
->
aDelIdx
N
,
&
delIdx
)
==
NULL
)
{
if
(
taosArrayPush
(
pWriter
->
aDelIdx
W
,
&
delIdx
)
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
goto
_err
;
}
}
...
@@ -716,8 +736,8 @@ static int32_t tsdbSnapWriteDelEnd(STsdbSnapWriter* pWriter) {
...
@@ -716,8 +736,8 @@ static int32_t tsdbSnapWriteDelEnd(STsdbSnapWriter* pWriter) {
STsdb
*
pTsdb
=
pWriter
->
pTsdb
;
STsdb
*
pTsdb
=
pWriter
->
pTsdb
;
if
(
pWriter
->
pDelFWriter
==
NULL
)
goto
_exit
;
if
(
pWriter
->
pDelFWriter
==
NULL
)
goto
_exit
;
for
(;
pWriter
->
iDelIdx
<
taosArrayGetSize
(
pWriter
->
aDelIdx
);
pWriter
->
iDelIdx
++
)
{
for
(;
pWriter
->
iDelIdx
<
taosArrayGetSize
(
pWriter
->
aDelIdx
R
);
pWriter
->
iDelIdx
++
)
{
SDelIdx
*
pDelIdx
=
(
SDelIdx
*
)
taosArrayGet
(
pWriter
->
aDelIdx
,
pWriter
->
iDelIdx
);
SDelIdx
*
pDelIdx
=
(
SDelIdx
*
)
taosArrayGet
(
pWriter
->
aDelIdx
R
,
pWriter
->
iDelIdx
);
code
=
tsdbReadDelData
(
pWriter
->
pDelFReader
,
pDelIdx
,
pWriter
->
aDelData
,
NULL
);
code
=
tsdbReadDelData
(
pWriter
->
pDelFReader
,
pDelIdx
,
pWriter
->
aDelData
,
NULL
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
...
@@ -726,7 +746,7 @@ static int32_t tsdbSnapWriteDelEnd(STsdbSnapWriter* pWriter) {
...
@@ -726,7 +746,7 @@ static int32_t tsdbSnapWriteDelEnd(STsdbSnapWriter* pWriter) {
code
=
tsdbWriteDelData
(
pWriter
->
pDelFWriter
,
pWriter
->
aDelData
,
NULL
,
&
delIdx
);
code
=
tsdbWriteDelData
(
pWriter
->
pDelFWriter
,
pWriter
->
aDelData
,
NULL
,
&
delIdx
);
if
(
code
)
goto
_err
;
if
(
code
)
goto
_err
;
if
(
taosArrayPush
(
pWriter
->
aDelIdx
,
&
delIdx
)
==
NULL
)
{
if
(
taosArrayPush
(
pWriter
->
aDelIdx
R
,
&
delIdx
)
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
goto
_err
;
}
}
...
@@ -768,11 +788,50 @@ int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapWr
...
@@ -768,11 +788,50 @@ int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapWr
pWriter
->
sver
=
sver
;
pWriter
->
sver
=
sver
;
pWriter
->
ever
=
ever
;
pWriter
->
ever
=
ever
;
// config
pWriter
->
minutes
=
pTsdb
->
keepCfg
.
days
;
pWriter
->
minutes
=
pTsdb
->
keepCfg
.
days
;
pWriter
->
precision
=
pTsdb
->
keepCfg
.
precision
;
pWriter
->
precision
=
pTsdb
->
keepCfg
.
precision
;
pWriter
->
minRow
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
minRows
;
pWriter
->
minRow
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
minRows
;
pWriter
->
maxRow
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
maxRows
;
pWriter
->
maxRow
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
maxRows
;
pWriter
->
cmprAlg
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
compression
;
pWriter
->
cmprAlg
=
pTsdb
->
pVnode
->
config
.
tsdbCfg
.
compression
;
pWriter
->
commitID
=
pTsdb
->
pVnode
->
state
.
commitID
;
// for data file
code
=
tBlockDataInit
(
&
pWriter
->
bData
);
if
(
code
)
goto
_err
;
pWriter
->
aBlockIdx
=
taosArrayInit
(
0
,
sizeof
(
SBlockIdx
));
if
(
pWriter
->
aBlockIdx
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
code
=
tBlockDataInit
(
&
pWriter
->
bDataR
);
if
(
code
)
goto
_err
;
pWriter
->
aBlockIdxW
=
taosArrayInit
(
0
,
sizeof
(
SBlockIdx
));
if
(
pWriter
->
aBlockIdxW
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
code
=
tBlockDataInit
(
&
pWriter
->
bDataW
);
if
(
code
)
goto
_err
;
// for del file
pWriter
->
aDelIdxR
=
taosArrayInit
(
0
,
sizeof
(
SDelIdx
));
if
(
pWriter
->
aDelIdxR
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
pWriter
->
aDelData
=
taosArrayInit
(
0
,
sizeof
(
SDelData
));
if
(
pWriter
->
aDelData
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
pWriter
->
aDelIdxW
=
taosArrayInit
(
0
,
sizeof
(
SDelIdx
));
if
(
pWriter
->
aDelIdxW
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err
;
}
*
ppWriter
=
pWriter
;
*
ppWriter
=
pWriter
;
return
code
;
return
code
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录