fix commit coredump
This commit is contained in:
parent
fb538e8860
commit
2e2286e2cd
|
@ -256,7 +256,7 @@ int tsdbCommitTableData(SRWHelper *pHelper, SCommitIter *pCommitIter, SDataCols
|
||||||
TSKEY keyFirst = tsdbNextIterKey(pCommitIter->pIter);
|
TSKEY keyFirst = tsdbNextIterKey(pCommitIter->pIter);
|
||||||
if (keyFirst < 0 || keyFirst > maxKey) break; // iter over
|
if (keyFirst < 0 || keyFirst > maxKey) break; // iter over
|
||||||
|
|
||||||
if (pIdx->offset <= 0 || keyFirst > pIdx->maxKey) {
|
if (pIdx->len <= 0 || keyFirst > pIdx->maxKey) {
|
||||||
if (tsdbProcessAppendCommit(pHelper, pCommitIter, pDataCols, maxKey) < 0) return -1;
|
if (tsdbProcessAppendCommit(pHelper, pCommitIter, pDataCols, maxKey) < 0) return -1;
|
||||||
blkIdx = pIdx->numOfBlocks;
|
blkIdx = pIdx->numOfBlocks;
|
||||||
} else {
|
} else {
|
||||||
|
@ -340,27 +340,30 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pHelper->pCompInfo->delimiter = TSDB_FILE_DELIMITER;
|
if (pIdx->len > 0) {
|
||||||
pHelper->pCompInfo->uid = pHelper->tableInfo.uid;
|
pHelper->pCompInfo->delimiter = TSDB_FILE_DELIMITER;
|
||||||
pHelper->pCompInfo->checksum = 0;
|
pHelper->pCompInfo->uid = pHelper->tableInfo.uid;
|
||||||
ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0);
|
pHelper->pCompInfo->checksum = 0;
|
||||||
taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len);
|
ASSERT(pIdx->len > sizeof(SCompInfo) + sizeof(TSCKSUM) &&
|
||||||
offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END);
|
(pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0);
|
||||||
if (offset < 0) {
|
taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len);
|
||||||
tsdbError("vgId:%d failed to lseek file %s since %s", REPO_ID(pHelper->pRepo), pHelper->files.nHeadF.fname,
|
offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END);
|
||||||
strerror(errno));
|
if (offset < 0) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
tsdbError("vgId:%d failed to lseek file %s since %s", REPO_ID(pHelper->pRepo), pHelper->files.nHeadF.fname,
|
||||||
return -1;
|
strerror(errno));
|
||||||
}
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
pIdx->offset = offset;
|
return -1;
|
||||||
pIdx->uid = pHelper->tableInfo.uid;
|
}
|
||||||
ASSERT(pIdx->offset >= TSDB_FILE_HEAD_SIZE);
|
pIdx->offset = offset;
|
||||||
|
pIdx->uid = pHelper->tableInfo.uid;
|
||||||
|
ASSERT(pIdx->offset >= TSDB_FILE_HEAD_SIZE);
|
||||||
|
|
||||||
if (twrite(pHelper->files.nHeadF.fd, (void *)(pHelper->pCompInfo), pIdx->len) < pIdx->len) {
|
if (twrite(pHelper->files.nHeadF.fd, (void *)(pHelper->pCompInfo), pIdx->len) < pIdx->len) {
|
||||||
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pIdx->len,
|
tsdbError("vgId:%d failed to write %d bytes to file %s since %s", REPO_ID(pHelper->pRepo), pIdx->len,
|
||||||
pHelper->files.nHeadF.fname, strerror(errno));
|
pHelper->files.nHeadF.fname, strerror(errno));
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1337,9 +1340,9 @@ static int tsdbProcessAppendCommit(SRWHelper *pHelper, SCommitIter *pCommitIter,
|
||||||
int defaultRowsInBlock = pCfg->maxRowsPerFileBlock * 4 / 5;
|
int defaultRowsInBlock = pCfg->maxRowsPerFileBlock * 4 / 5;
|
||||||
SCompBlock compBlock = {0};
|
SCompBlock compBlock = {0};
|
||||||
|
|
||||||
ASSERT(pIdx->offset <= 0 || keyFirst > pIdx->maxKey);
|
ASSERT(pIdx->len <= 0 || keyFirst > pIdx->maxKey);
|
||||||
if (pIdx->hasLast) { // append to with last block
|
if (pIdx->hasLast) { // append to with last block
|
||||||
ASSERT(pIdx->offset > 0);
|
ASSERT(pIdx->len > 0);
|
||||||
SCompBlock *pCompBlock = blockAtIdx(pHelper, pIdx->numOfBlocks - 1);
|
SCompBlock *pCompBlock = blockAtIdx(pHelper, pIdx->numOfBlocks - 1);
|
||||||
ASSERT(pCompBlock->last && pCompBlock->numOfRows < pCfg->minRowsPerFileBlock);
|
ASSERT(pCompBlock->last && pCompBlock->numOfRows < pCfg->minRowsPerFileBlock);
|
||||||
tdResetDataCols(pDataCols);
|
tdResetDataCols(pDataCols);
|
||||||
|
|
Loading…
Reference in New Issue