This commit is contained in:
Hongze Cheng 2020-06-19 02:41:47 +00:00
parent b51aceefde
commit f1ce022556
3 changed files with 32 additions and 28 deletions

View File

@ -337,7 +337,7 @@ char *tsdbGetMetaFileName(char *rootDir) {
} }
void tsdbGetDataFileName(STsdbRepo *pRepo, int fid, int type, char *fname) { void tsdbGetDataFileName(STsdbRepo *pRepo, int fid, int type, char *fname) {
snprintf(fname, TSDB_FILENAME_LEN, "%s/%s/v%df%d.%s", pRepo->rootDir, TSDB_DATA_DIR_NAME, REPO_ID(pRepo), fid, tsdbFileSuffix[type]); snprintf(fname, TSDB_FILENAME_LEN, "%s/%s/v%df%d%s", pRepo->rootDir, TSDB_DATA_DIR_NAME, REPO_ID(pRepo), fid, tsdbFileSuffix[type]);
} }
int tsdbLockRepo(STsdbRepo *pRepo) { int tsdbLockRepo(STsdbRepo *pRepo) {

View File

@ -148,44 +148,49 @@ _err:
int tsdbCloseHelperFile(SRWHelper *pHelper, bool hasError) { int tsdbCloseHelperFile(SRWHelper *pHelper, bool hasError) {
if (pHelper->files.headF.fd > 0) { if (pHelper->files.headF.fd > 0) {
fsync(pHelper->files.headF.fd);
close(pHelper->files.headF.fd); close(pHelper->files.headF.fd);
pHelper->files.headF.fd = -1; pHelper->files.headF.fd = -1;
} }
if (pHelper->files.dataF.fd > 0) { if (pHelper->files.dataF.fd > 0) {
if (!hasError) tsdbUpdateFileHeader(&(pHelper->files.dataF), 0); if ((helperType(pHelper) == TSDB_WRITE_HELPER)) {
fsync(pHelper->files.dataF.fd); tsdbUpdateFileHeader(&(pHelper->files.dataF), 0);
fsync(pHelper->files.dataF.fd);
}
close(pHelper->files.dataF.fd); close(pHelper->files.dataF.fd);
pHelper->files.dataF.fd = -1; pHelper->files.dataF.fd = -1;
} }
if (pHelper->files.lastF.fd > 0) { if (pHelper->files.lastF.fd > 0) {
fsync(pHelper->files.lastF.fd); if ((helperType(pHelper) == TSDB_WRITE_HELPER)) {
close(pHelper->files.lastF.fd); fsync(pHelper->files.lastF.fd);
close(pHelper->files.lastF.fd);
}
pHelper->files.lastF.fd = -1; pHelper->files.lastF.fd = -1;
} }
if (pHelper->files.nHeadF.fd > 0) { if (helperType(pHelper) == TSDB_WRITE_HELPER) {
if (!hasError) tsdbUpdateFileHeader(&(pHelper->files.nHeadF), 0); if (pHelper->files.nHeadF.fd > 0) {
fsync(pHelper->files.nHeadF.fd); if (!hasError) tsdbUpdateFileHeader(&(pHelper->files.nHeadF), 0);
close(pHelper->files.nHeadF.fd); fsync(pHelper->files.nHeadF.fd);
pHelper->files.nHeadF.fd = -1; close(pHelper->files.nHeadF.fd);
if (hasError) { pHelper->files.nHeadF.fd = -1;
remove(pHelper->files.nHeadF.fname); if (hasError) {
} else { remove(pHelper->files.nHeadF.fname);
rename(pHelper->files.nHeadF.fname, pHelper->files.headF.fname); } else {
pHelper->files.headF.info = pHelper->files.nHeadF.info; rename(pHelper->files.nHeadF.fname, pHelper->files.headF.fname);
pHelper->files.headF.info = pHelper->files.nHeadF.info;
}
} }
}
if (pHelper->files.nLastF.fd > 0) { if (pHelper->files.nLastF.fd > 0) {
if (!hasError) tsdbUpdateFileHeader(&(pHelper->files.nLastF), 0); if (!hasError) tsdbUpdateFileHeader(&(pHelper->files.nLastF), 0);
fsync(pHelper->files.nLastF.fd); fsync(pHelper->files.nLastF.fd);
close(pHelper->files.nLastF.fd); close(pHelper->files.nLastF.fd);
pHelper->files.nLastF.fd = -1; pHelper->files.nLastF.fd = -1;
if (hasError) { if (hasError) {
remove(pHelper->files.nLastF.fname); remove(pHelper->files.nLastF.fname);
} else { } else {
rename(pHelper->files.nLastF.fname, pHelper->files.lastF.fname); rename(pHelper->files.nLastF.fname, pHelper->files.lastF.fname);
pHelper->files.lastF.info = pHelper->files.nLastF.info; pHelper->files.lastF.info = pHelper->files.nLastF.info;
}
} }
} }
return 0; return 0;

View File

@ -578,6 +578,5 @@ static int tdRestoreKVStore(SKVStore *pStore) {
_err: _err:
taosHashDestroyIter(pIter); taosHashDestroyIter(pIter);
tfree(buf); tfree(buf);
taosHashDestroyIter(pIter);
return -1; return -1;
} }