提交 32dcbfe5 编写于 作者: H Hongze Cheng

TD-353

上级 44d5644c
...@@ -30,20 +30,22 @@ ...@@ -30,20 +30,22 @@
#include "ttime.h" #include "ttime.h"
const char *tsdbFileSuffix[] = { const char *tsdbFileSuffix[] = {
".head", // TSDB_FILE_TYPE_HEAD ".head",
".data", // TSDB_FILE_TYPE_DATA ".data",
".last" // TSDB_FILE_TYPE_LAST ".last",
".h",
".l"
}; };
// ---------------- INTERNAL FUNCTIONS ---------------- // ---------------- INTERNAL FUNCTIONS ----------------
STsdbFileH* tsdbNewFileH(STsdbCfg* pCfg) { STsdbFileH *tsdbNewFileH(STsdbCfg *pCfg) {
STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(*pFileH)); STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(*pFileH));
if (pFileH == NULL) { if (pFileH == NULL) {
terrno = TSDB_CODE_TDB_OUT_OF_MEMORY; terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
goto _err; goto _err;
} }
pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 3; pFileH->maxFGroups = TSDB_MAX_FILE(pCfg->keep, pCfg->daysPerFile);
pFileH->pFGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup)); pFileH->pFGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup));
if (pFileH->pFGroup == NULL) { if (pFileH->pFGroup == NULL) {
...@@ -53,51 +55,55 @@ STsdbFileH* tsdbNewFileH(STsdbCfg* pCfg) { ...@@ -53,51 +55,55 @@ STsdbFileH* tsdbNewFileH(STsdbCfg* pCfg) {
return pFileH; return pFileH;
_err: _err:
tsdbFreeFileH(pFileH); tsdbFreeFileH(pFileH);
return NULL; return NULL;
} }
void tsdbFreeFileH(STsdbFileH* pFileH) { void tsdbFreeFileH(STsdbFileH *pFileH) {
if (pFileH) { if (pFileH) {
tfree(pFileH->pFGroup); tfree(pFileH->pFGroup);
free(pFileH); free(pFileH);
} }
} }
STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) { int *tsdbOpenFileH(STsdbRepo *pRepo) {
STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH)); ASSERT(pRepo != NULL && pRepo->tsdbFileH != NULL);
if (pFileH == NULL) { // TODO: deal with ERROR here
return NULL;
}
pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 3; char *tDataDir = NULL;
DIR * dir = NULL;
int fid = 0;
pFileH->fGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup)); tsdbGetDataDirName(pRepo->rootDir);
if (pFileH->fGroup == NULL) { if (tDataDir == NULL) {
free(pFileH); terrno = TSDB_CODE_TDB_OUT_OF_MEMORY;
return NULL; goto _err;
} }
DIR *dir = opendir(dataDir); DIR *dir = opendir(tDataDir);
if (dir == NULL) { if (dir == NULL) {
free(pFileH); tsdbError("vgId:%d failed to open directory %s since %s", REPO_ID(pRepo), tDataDir, strerror(errno));
return NULL; terrno = TAOS_SYSTEM_ERROR(errno);
goto _err;
} }
struct dirent *dp = NULL; struct dirent *dp = NULL;
while ((dp = readdir(dir)) != NULL) { while ((dp = readdir(dir)) != NULL) {
if (strncmp(dp->d_name, ".", 1) == 0 || strncmp(dp->d_name, "..", 1) == 0) continue; if (strncmp(dp->d_name, ".", 1) == 0 || strncmp(dp->d_name, "..", 2) == 0) continue;
int fid = 0;
sscanf(dp->d_name, "f%d", &fid); sscanf(dp->d_name, "f%d", &fid);
if (tsdbOpenFGroup(pFileH, dataDir, fid) < 0) { // if (tsdbOpenFGroup(pFileH, dataDir, fid) < 0) {
break; // break;
// TODO // }
}
} }
tfree(tDataDir);
closedir(dir); closedir(dir);
return 0;
return pFileH; _err:
tfree(tDataDir);
if (dir != NULL) closedir(tDataDir);
return -1;
} }
void tsdbCloseFileH(STsdbFileH *pFileH) { void tsdbCloseFileH(STsdbFileH *pFileH) {
......
...@@ -595,7 +595,7 @@ static STsdbRepo *tsdbNewRepo(char *rootDir, STsdbAppH *pAppH, STsdbCfg *pCfg) { ...@@ -595,7 +595,7 @@ static STsdbRepo *tsdbNewRepo(char *rootDir, STsdbAppH *pAppH, STsdbCfg *pCfg) {
goto _err; goto _err;
} }
pRepo->tsdbFileH = tsdbNewFileH(pRepo); pRepo->tsdbFileH = tsdbNewFileH(pCfg);
if (pRepo->tsdbFileH == NULL) { if (pRepo->tsdbFileH == NULL) {
tsdbError("vgId:%d failed to create file handle since %s", REPO_ID(pRepo), tstrerror(terrno)); tsdbError("vgId:%d failed to create file handle since %s", REPO_ID(pRepo), tstrerror(terrno));
goto _err; goto _err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册