Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a3464134
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22017
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看板
提交
a3464134
编写于
11月 25, 2019
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix small bug
上级
7d1da212
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
0 deletion
+30
-0
src/system/detail/src/vnodeImport.c
src/system/detail/src/vnodeImport.c
+30
-0
未找到文件。
src/system/detail/src/vnodeImport.c
浏览文件 @
a3464134
...
...
@@ -674,6 +674,9 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
TSCKSUM
checksum
=
0
;
int
pointsImported
=
0
;
int
code
=
TSDB_CODE_SUCCESS
;
SCachePool
*
pPool
=
(
SCachePool
*
)
pVnode
->
pCachePool
;
SCacheInfo
*
pInfo
=
(
SCacheInfo
*
)(
pObj
->
pCache
);
TSKEY
lastKeyImported
=
0
;
TSKEY
delta
=
pVnode
->
cfg
.
daysPerFile
*
tsMsPerDay
[
pVnode
->
cfg
.
precision
];
TSKEY
minFileKey
=
fid
*
delta
;
...
...
@@ -758,6 +761,7 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
}
importHandle
.
oldNumOfBlocks
=
0
;
importHandle
.
driftOffset
+=
sizeof
(
SCompInfo
);
lastKeyImported
=
lastKey
;
for
(
int
rowsWritten
=
0
;
rowsWritten
<
rows
;)
{
int
rowsToWrite
=
MIN
(
pVnode
->
cfg
.
rowsInFileBlock
,
(
rows
-
rowsWritten
)
/* the rows left */
);
...
...
@@ -874,6 +878,7 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
// TODO : Convert into while here
vnodeConvertRowsToCols
(
pObj
,
payload
+
pObj
->
bytesPerPoint
*
payloadIter
,
rowsLeft
,
data
,
0
);
pointsImported
++
;
lastKeyImported
=
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
);
assert
(
importHandle
.
last
==
0
);
...
...
@@ -1032,6 +1037,7 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
vnodeConvertRowsToCols
(
pObj
,
payload
+
pObj
->
bytesPerPoint
*
payloadIter
,
1
,
data
,
rowOffset
);
pointsImported
++
;
lastKeyImported
=
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
);
payloadIter
++
;
}
...
...
@@ -1099,6 +1105,7 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
}
else
if
(
blockIter
.
pos
>=
importHandle
.
pBlocks
[
blockIter
.
slot
].
numOfPoints
)
{
// block end
vnodeConvertRowsToCols
(
pObj
,
payload
+
pObj
->
bytesPerPoint
*
payloadIter
,
1
,
data
,
rowOffset
);
pointsImported
++
;
lastKeyImported
=
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
);
payloadIter
++
;
rowOffset
++
;
}
else
{
...
...
@@ -1112,6 +1119,7 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
blockIter
.
pos
))
{
vnodeConvertRowsToCols
(
pObj
,
payload
+
pObj
->
bytesPerPoint
*
payloadIter
,
1
,
data
,
rowOffset
);
pointsImported
++
;
lastKeyImported
=
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
);
payloadIter
++
;
rowOffset
++
;
}
else
{
...
...
@@ -1157,6 +1165,28 @@ static int vnodeMergeDataIntoFile(SImportInfo *pImport, const char *payload, int
pImport
->
importedRows
+=
pointsImported
;
pthread_mutex_lock
(
&
(
pPool
->
vmutex
));
if
(
pInfo
->
numOfBlocks
>
0
)
{
int
slot
=
(
pInfo
->
currentSlot
-
pInfo
->
numOfBlocks
+
1
+
pInfo
->
maxBlocks
)
%
pInfo
->
maxBlocks
;
TSKEY
firstKeyInCache
=
*
((
TSKEY
*
)(
pInfo
->
cacheBlocks
[
slot
]
->
offset
[
0
]));
// data may be in commited cache, cache shall be released
if
(
lastKeyImported
>
firstKeyInCache
)
{
while
(
slot
!=
pInfo
->
commitSlot
)
{
SCacheBlock
*
pCacheBlock
=
pInfo
->
cacheBlocks
[
slot
];
vnodeFreeCacheBlock
(
pCacheBlock
);
slot
=
(
slot
+
1
+
pInfo
->
maxBlocks
)
%
pInfo
->
maxBlocks
;
}
if
(
pInfo
->
commitPoint
==
pObj
->
pointsPerBlock
)
{
if
(
pInfo
->
cacheBlocks
[
pInfo
->
commitSlot
]
->
pMeterObj
==
pObj
)
{
vnodeFreeCacheBlock
(
pInfo
->
cacheBlocks
[
pInfo
->
commitSlot
]);
}
}
}
}
pthread_mutex_unlock
(
&
(
pPool
->
vmutex
));
// TODO: free the allocated memory
tfree
(
buffer
);
tfree
(
cbuffer
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录