TD-1263
This commit is contained in:
parent
e69fbd54a2
commit
37922f299f
|
@ -94,10 +94,6 @@ void taos_init_imp(void) {
|
|||
printf("failed to create log dir:%s\n", tsLogDir);
|
||||
}
|
||||
|
||||
if (mkdir(tsLogbakDir, 0755) != 0 && errno != EEXIST) {
|
||||
printf("failed to create logbak dir:%s\n", tsLogbakDir);
|
||||
}
|
||||
|
||||
sprintf(temp, "%s/taoslog", tsLogDir);
|
||||
if (taosInitLog(temp, tsNumOfLogLines, 10) < 0) {
|
||||
printf("failed to open log file in directory:%s\n", tsLogDir);
|
||||
|
|
|
@ -126,7 +126,6 @@ extern char tsDnodeDir[];
|
|||
extern char tsMnodeDir[];
|
||||
extern char tsDataDir[];
|
||||
extern char tsLogDir[];
|
||||
extern char tsLogbakDir[];
|
||||
extern char tsScriptDir[];
|
||||
extern int64_t tsMsPerDay[3];
|
||||
extern char tsVnodeBakDir[];
|
||||
|
|
|
@ -370,16 +370,6 @@ static void doInitGlobalConfig(void) {
|
|||
cfg.unitType = TAOS_CFG_UTYPE_NONE;
|
||||
taosInitConfigOption(cfg);
|
||||
|
||||
cfg.option = "logBakDir";
|
||||
cfg.ptr = tsLogbakDir;
|
||||
cfg.valType = TAOS_CFG_VTYPE_DIRECTORY;
|
||||
cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_LOG;
|
||||
cfg.minValue = 0;
|
||||
cfg.maxValue = 0;
|
||||
cfg.ptrLength = TSDB_FILENAME_LEN;
|
||||
cfg.unitType = TAOS_CFG_UTYPE_NONE;
|
||||
taosInitConfigOption(cfg);
|
||||
|
||||
cfg.option = "scriptDir";
|
||||
cfg.ptr = tsScriptDir;
|
||||
cfg.valType = TAOS_CFG_VTYPE_DIRECTORY;
|
||||
|
|
|
@ -106,11 +106,6 @@ int32_t dnodeInitSystem() {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (dnodeCreateDir(tsLogbakDir) < 0) {
|
||||
printf("failed to create dir: %s, reason: %s\n", tsLogbakDir, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
char temp[TSDB_FILENAME_LEN];
|
||||
sprintf(temp, "%s/taosdlog", tsLogDir);
|
||||
if (taosInitLog(temp, tsNumOfLogLines, 1) < 0) {
|
||||
|
|
|
@ -24,6 +24,7 @@ extern "C" {
|
|||
void taosRemoveDir(char *rootDir);
|
||||
int taosMkDir(const char *pathname, mode_t mode);
|
||||
void taosRename(char* oldName, char *newName);
|
||||
void taosRemoveOldLogFiles(char *rootDir, int32_t keepDays);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ void osInit() {
|
|||
strcpy(tsMnodeDir, "");
|
||||
strcpy(tsDataDir, "/var/lib/taos");
|
||||
strcpy(tsLogDir, "/var/log/taos");
|
||||
strcpy(tsLogbakDir, "/var/log/taos/bak");
|
||||
strcpy(tsScriptDir, "/etc/taos");
|
||||
strcpy(tsOsName, "Linux");
|
||||
}
|
|
@ -27,7 +27,6 @@ void osInit() {
|
|||
strcpy(tsMnodeDir, "");
|
||||
strcpy(tsDataDir, "~/TDengine/data");
|
||||
strcpy(tsLogDir, "~/TDengine/log");
|
||||
strcpy(tsLogbakDir, "~/TDengine/log/bak");
|
||||
strcpy(tsScriptDir, "~/TDengine/cfg");
|
||||
strcpy(tsOsName, "Darwin");
|
||||
}
|
||||
|
|
|
@ -51,11 +51,6 @@ int taosMkDir(const char *path, mode_t mode) {
|
|||
}
|
||||
|
||||
void taosRename(char* oldName, char *newName) {
|
||||
if (0 == tsEnableVnodeBak) {
|
||||
uInfo("vnode backup not enabled");
|
||||
return;
|
||||
}
|
||||
|
||||
// if newName in not empty, rename return fail.
|
||||
// the newName must be empty or does not exist
|
||||
if (rename(oldName, newName)) {
|
||||
|
@ -65,4 +60,48 @@ void taosRename(char* oldName, char *newName) {
|
|||
}
|
||||
}
|
||||
|
||||
void taosRemoveOldLogFiles(char *rootDir, int32_t keepDays) {
|
||||
DIR *dir = opendir(rootDir);
|
||||
if (dir == NULL) return;
|
||||
|
||||
int64_t ms = taosGetTimestampMs();
|
||||
struct dirent *de = NULL;
|
||||
|
||||
while ((de = readdir(dir)) != NULL) {
|
||||
if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) continue;
|
||||
|
||||
char filename[1024];
|
||||
snprintf(filename, 1023, "%s/%s", rootDir, de->d_name);
|
||||
if (de->d_type & DT_DIR) {
|
||||
continue;
|
||||
} else {
|
||||
// struct stat fState;
|
||||
// if (stat(fname, &fState) < 0) {
|
||||
// continue;
|
||||
// }
|
||||
int32_t len = strlen(filename);
|
||||
int64_t fileMs = 0;
|
||||
for (int i = len - 1; i >= 0; ++i) {
|
||||
if (filename[i] == '.') {
|
||||
fileMs = atoll(filename + i + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (fileMs <= 0) continue;
|
||||
int32_t days = (fileMs - ms) / 86400 + 1;
|
||||
if (days > keepDays) {
|
||||
(void)remove(filename);
|
||||
uInfo("file:%s is removed, days:%d keepDays:%d", filename, days, keepDays);
|
||||
|
||||
} else {
|
||||
uTrace("file:%s won't be removed, days:%d keepDays:%d", filename, days, keepDays);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
rmdir(rootDir);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -25,7 +25,6 @@ void osInit() {
|
|||
}
|
||||
strcpy(tsDataDir, "/var/lib/power");
|
||||
strcpy(tsLogDir, "/var/log/power");
|
||||
strcpy(tsLogbakDir, "/var/log/power/bak");
|
||||
strcpy(tsScriptDir, "/etc/power");
|
||||
#else
|
||||
if (configDir[0] == 0) {
|
||||
|
@ -33,7 +32,6 @@ void osInit() {
|
|||
}
|
||||
strcpy(tsDataDir, "/var/lib/taos");
|
||||
strcpy(tsLogDir, "/var/log/taos");
|
||||
strcpy(tsLogbakDir, "/var/log/taos/bak");
|
||||
strcpy(tsScriptDir, "/etc/taos");
|
||||
#endif
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ void osInit() {
|
|||
strcpy(tsVnodeDir, "C:/PowerDB/data");
|
||||
strcpy(tsDataDir, "C:/PowerDB/data");
|
||||
strcpy(tsLogDir, "C:/PowerDB/log");
|
||||
strcpy(tsLogbakDir, "C:/PowerDB/log/bak");
|
||||
strcpy(tsScriptDir, "C:/PowerDB/script");
|
||||
|
||||
#else
|
||||
|
@ -41,7 +40,6 @@ void osInit() {
|
|||
strcpy(tsVnodeDir, "C:/TDengine/data");
|
||||
strcpy(tsDataDir, "C:/TDengine/data");
|
||||
strcpy(tsLogDir, "C:/TDengine/log");
|
||||
strcpy(tsLogbakDir, "C:/TDengine/log/bak");
|
||||
strcpy(tsScriptDir, "C:/TDengine/script");
|
||||
#endif
|
||||
|
||||
|
|
|
@ -69,10 +69,8 @@ float tsAvailLogDirGB = 0;
|
|||
float tsMinimalLogDirGB = 0.1f;
|
||||
#ifdef _TD_POWER_
|
||||
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power";
|
||||
char tsLogbakDir[TSDB_FILENAME_LEN] = "/var/log/power/bak";
|
||||
#else
|
||||
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/taos";
|
||||
char tsLogbakDir[TSDB_FILENAME_LEN] = "/var/log/taos/bak";
|
||||
#endif
|
||||
|
||||
static SLogObj tsLogObj = { .fileNum = 1 };
|
||||
|
@ -139,11 +137,25 @@ static void taosUnLockFile(int32_t fd) {
|
|||
}
|
||||
}
|
||||
|
||||
static void taosKeepOldLog(char *oldName) {
|
||||
if (tsLogKeepDays <= 0) return;
|
||||
|
||||
int64_t ms = taosGetTimestampMs();
|
||||
char fileName[LOG_FILE_NAME_LEN + 20];
|
||||
snprintf(fileName, LOG_FILE_NAME_LEN + 20, "%s.%" PRId64, tsLogObj.logName, ms);
|
||||
|
||||
uInfo("rename log file %s to %s", oldName, fileName);
|
||||
taosRename(oldName, fileName);
|
||||
taosRemoveOldLogFiles(tsLogDir, tsLogKeepDays);
|
||||
}
|
||||
|
||||
static void *taosThreadToOpenNewFile(void *param) {
|
||||
char name[LOG_FILE_NAME_LEN + 20];
|
||||
char keepName[LOG_FILE_NAME_LEN + 20];
|
||||
sprintf(keepName, "%s.%d", tsLogObj.logName, tsLogObj.flag);
|
||||
|
||||
tsLogObj.flag ^= 1;
|
||||
tsLogObj.lines = 0;
|
||||
char name[LOG_FILE_NAME_LEN + 20];
|
||||
sprintf(name, "%s.%d", tsLogObj.logName, tsLogObj.flag);
|
||||
|
||||
umask(0);
|
||||
|
@ -153,6 +165,7 @@ static void *taosThreadToOpenNewFile(void *param) {
|
|||
uError("open new log file fail! fd:%d reason:%s", fd, strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
taosLockFile(fd);
|
||||
(void)lseek(fd, 0, SEEK_SET);
|
||||
|
||||
|
@ -160,9 +173,11 @@ static void *taosThreadToOpenNewFile(void *param) {
|
|||
tsLogObj.logHandle->fd = fd;
|
||||
tsLogObj.lines = 0;
|
||||
tsLogObj.openInProgress = 0;
|
||||
taosCloseLogByFd(oldFd);
|
||||
uInfo("new log file is opened!!!");
|
||||
|
||||
taosCloseLogByFd(oldFd);
|
||||
taosKeepOldLog(keepName);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -382,7 +382,13 @@ void vnodeRelease(void *pVnodeRaw) {
|
|||
char newDir[TSDB_FILENAME_LEN] = {0};
|
||||
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
|
||||
sprintf(newDir, "%s/vnode%d", tsVnodeBakDir, vgId);
|
||||
|
||||
if (0 == tsEnableVnodeBak) {
|
||||
vInfo("vgId:%d, vnode backup not enabled", pVnode->vgId);
|
||||
} else {
|
||||
taosRename(rootDir, newDir);
|
||||
}
|
||||
|
||||
taosRemoveDir(rootDir);
|
||||
dnodeSendStatusMsgToMnode();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue