提交 d731fc0d 编写于 作者: 陶建辉(Jeff)'s avatar 陶建辉(Jeff)

fix #742

上级 dbb888c1
......@@ -479,7 +479,7 @@ int vnodeImportToFile(SImportInfo *pImport) {
slot = (slot + 1 + pInfo->maxBlocks) % pInfo->maxBlocks;
}
// last slot, the uncommitted slots shall be shifted
// last slot, the uncommitted slots shall be shifted, a cache block may have empty rows
SCacheBlock *pCacheBlock = pInfo->cacheBlocks[slot];
int points = pCacheBlock->numOfPoints - pInfo->commitPoint;
if (points > 0) {
......@@ -568,7 +568,7 @@ int vnodeImportToCache(SImportInfo *pImport, char *payload, int rows) {
}
}
// copy the overwritten data into buffer
// copy the overwritten data into buffer, merge cache blocks
tpoints = rows;
pos = pImport->pos;
slot = pImport->slot;
......@@ -603,6 +603,19 @@ int vnodeImportToCache(SImportInfo *pImport, char *payload, int rows) {
pos = 0;
tpoints -= points;
if (tpoints == 0) {
// free the rest of cache blocks, since cache blocks are merged
int currentSlot = slot;
while (slot != pInfo->currentSlot) {
slot = (slot + 1) % pInfo->maxBlocks;
pCacheBlock = pInfo->cacheBlocks[slot];
vnodeFreeCacheBlock(pCacheBlock);
}
pInfo->currentSlot = currentSlot;
slot = currentSlot; // make sure to exit from the while loop
}
if (slot == pInfo->currentSlot) break;
slot = (slot + 1) % pInfo->maxBlocks;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册