提交 37922f29 编写于 作者: S Shengliang Guan

TD-1263

上级 e69fbd54
...@@ -94,10 +94,6 @@ void taos_init_imp(void) { ...@@ -94,10 +94,6 @@ void taos_init_imp(void) {
printf("failed to create log dir:%s\n", tsLogDir); 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); sprintf(temp, "%s/taoslog", tsLogDir);
if (taosInitLog(temp, tsNumOfLogLines, 10) < 0) { if (taosInitLog(temp, tsNumOfLogLines, 10) < 0) {
printf("failed to open log file in directory:%s\n", tsLogDir); printf("failed to open log file in directory:%s\n", tsLogDir);
......
...@@ -126,7 +126,6 @@ extern char tsDnodeDir[]; ...@@ -126,7 +126,6 @@ extern char tsDnodeDir[];
extern char tsMnodeDir[]; extern char tsMnodeDir[];
extern char tsDataDir[]; extern char tsDataDir[];
extern char tsLogDir[]; extern char tsLogDir[];
extern char tsLogbakDir[];
extern char tsScriptDir[]; extern char tsScriptDir[];
extern int64_t tsMsPerDay[3]; extern int64_t tsMsPerDay[3];
extern char tsVnodeBakDir[]; extern char tsVnodeBakDir[];
......
...@@ -370,16 +370,6 @@ static void doInitGlobalConfig(void) { ...@@ -370,16 +370,6 @@ static void doInitGlobalConfig(void) {
cfg.unitType = TAOS_CFG_UTYPE_NONE; cfg.unitType = TAOS_CFG_UTYPE_NONE;
taosInitConfigOption(cfg); 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.option = "scriptDir";
cfg.ptr = tsScriptDir; cfg.ptr = tsScriptDir;
cfg.valType = TAOS_CFG_VTYPE_DIRECTORY; cfg.valType = TAOS_CFG_VTYPE_DIRECTORY;
......
...@@ -106,11 +106,6 @@ int32_t dnodeInitSystem() { ...@@ -106,11 +106,6 @@ int32_t dnodeInitSystem() {
return -1; 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]; char temp[TSDB_FILENAME_LEN];
sprintf(temp, "%s/taosdlog", tsLogDir); sprintf(temp, "%s/taosdlog", tsLogDir);
if (taosInitLog(temp, tsNumOfLogLines, 1) < 0) { if (taosInitLog(temp, tsNumOfLogLines, 1) < 0) {
......
...@@ -24,6 +24,7 @@ extern "C" { ...@@ -24,6 +24,7 @@ extern "C" {
void taosRemoveDir(char *rootDir); void taosRemoveDir(char *rootDir);
int taosMkDir(const char *pathname, mode_t mode); int taosMkDir(const char *pathname, mode_t mode);
void taosRename(char* oldName, char *newName); void taosRename(char* oldName, char *newName);
void taosRemoveOldLogFiles(char *rootDir, int32_t keepDays);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -27,7 +27,6 @@ void osInit() { ...@@ -27,7 +27,6 @@ void osInit() {
strcpy(tsMnodeDir, ""); strcpy(tsMnodeDir, "");
strcpy(tsDataDir, "/var/lib/taos"); strcpy(tsDataDir, "/var/lib/taos");
strcpy(tsLogDir, "/var/log/taos"); strcpy(tsLogDir, "/var/log/taos");
strcpy(tsLogbakDir, "/var/log/taos/bak");
strcpy(tsScriptDir, "/etc/taos"); strcpy(tsScriptDir, "/etc/taos");
strcpy(tsOsName, "Linux"); strcpy(tsOsName, "Linux");
} }
\ No newline at end of file
...@@ -27,7 +27,6 @@ void osInit() { ...@@ -27,7 +27,6 @@ void osInit() {
strcpy(tsMnodeDir, ""); strcpy(tsMnodeDir, "");
strcpy(tsDataDir, "~/TDengine/data"); strcpy(tsDataDir, "~/TDengine/data");
strcpy(tsLogDir, "~/TDengine/log"); strcpy(tsLogDir, "~/TDengine/log");
strcpy(tsLogbakDir, "~/TDengine/log/bak");
strcpy(tsScriptDir, "~/TDengine/cfg"); strcpy(tsScriptDir, "~/TDengine/cfg");
strcpy(tsOsName, "Darwin"); strcpy(tsOsName, "Darwin");
} }
...@@ -51,11 +51,6 @@ int taosMkDir(const char *path, mode_t mode) { ...@@ -51,11 +51,6 @@ int taosMkDir(const char *path, mode_t mode) {
} }
void taosRename(char* oldName, char *newName) { void taosRename(char* oldName, char *newName) {
if (0 == tsEnableVnodeBak) {
uInfo("vnode backup not enabled");
return;
}
// if newName in not empty, rename return fail. // if newName in not empty, rename return fail.
// the newName must be empty or does not exist // the newName must be empty or does not exist
if (rename(oldName, newName)) { if (rename(oldName, newName)) {
...@@ -65,4 +60,48 @@ void taosRename(char* oldName, char *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 #endif
...@@ -25,7 +25,6 @@ void osInit() { ...@@ -25,7 +25,6 @@ void osInit() {
} }
strcpy(tsDataDir, "/var/lib/power"); strcpy(tsDataDir, "/var/lib/power");
strcpy(tsLogDir, "/var/log/power"); strcpy(tsLogDir, "/var/log/power");
strcpy(tsLogbakDir, "/var/log/power/bak");
strcpy(tsScriptDir, "/etc/power"); strcpy(tsScriptDir, "/etc/power");
#else #else
if (configDir[0] == 0) { if (configDir[0] == 0) {
...@@ -33,7 +32,6 @@ void osInit() { ...@@ -33,7 +32,6 @@ void osInit() {
} }
strcpy(tsDataDir, "/var/lib/taos"); strcpy(tsDataDir, "/var/lib/taos");
strcpy(tsLogDir, "/var/log/taos"); strcpy(tsLogDir, "/var/log/taos");
strcpy(tsLogbakDir, "/var/log/taos/bak");
strcpy(tsScriptDir, "/etc/taos"); strcpy(tsScriptDir, "/etc/taos");
#endif #endif
......
...@@ -30,7 +30,6 @@ void osInit() { ...@@ -30,7 +30,6 @@ void osInit() {
strcpy(tsVnodeDir, "C:/PowerDB/data"); strcpy(tsVnodeDir, "C:/PowerDB/data");
strcpy(tsDataDir, "C:/PowerDB/data"); strcpy(tsDataDir, "C:/PowerDB/data");
strcpy(tsLogDir, "C:/PowerDB/log"); strcpy(tsLogDir, "C:/PowerDB/log");
strcpy(tsLogbakDir, "C:/PowerDB/log/bak");
strcpy(tsScriptDir, "C:/PowerDB/script"); strcpy(tsScriptDir, "C:/PowerDB/script");
#else #else
...@@ -41,7 +40,6 @@ void osInit() { ...@@ -41,7 +40,6 @@ void osInit() {
strcpy(tsVnodeDir, "C:/TDengine/data"); strcpy(tsVnodeDir, "C:/TDengine/data");
strcpy(tsDataDir, "C:/TDengine/data"); strcpy(tsDataDir, "C:/TDengine/data");
strcpy(tsLogDir, "C:/TDengine/log"); strcpy(tsLogDir, "C:/TDengine/log");
strcpy(tsLogbakDir, "C:/TDengine/log/bak");
strcpy(tsScriptDir, "C:/TDengine/script"); strcpy(tsScriptDir, "C:/TDengine/script");
#endif #endif
......
...@@ -69,10 +69,8 @@ float tsAvailLogDirGB = 0; ...@@ -69,10 +69,8 @@ float tsAvailLogDirGB = 0;
float tsMinimalLogDirGB = 0.1f; float tsMinimalLogDirGB = 0.1f;
#ifdef _TD_POWER_ #ifdef _TD_POWER_
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power"; char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power";
char tsLogbakDir[TSDB_FILENAME_LEN] = "/var/log/power/bak";
#else #else
char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/taos"; char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/taos";
char tsLogbakDir[TSDB_FILENAME_LEN] = "/var/log/taos/bak";
#endif #endif
static SLogObj tsLogObj = { .fileNum = 1 }; static SLogObj tsLogObj = { .fileNum = 1 };
...@@ -139,11 +137,25 @@ static void taosUnLockFile(int32_t fd) { ...@@ -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) { 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.flag ^= 1;
tsLogObj.lines = 0; tsLogObj.lines = 0;
char name[LOG_FILE_NAME_LEN + 20];
sprintf(name, "%s.%d", tsLogObj.logName, tsLogObj.flag); sprintf(name, "%s.%d", tsLogObj.logName, tsLogObj.flag);
umask(0); umask(0);
...@@ -153,6 +165,7 @@ static void *taosThreadToOpenNewFile(void *param) { ...@@ -153,6 +165,7 @@ static void *taosThreadToOpenNewFile(void *param) {
uError("open new log file fail! fd:%d reason:%s", fd, strerror(errno)); uError("open new log file fail! fd:%d reason:%s", fd, strerror(errno));
return NULL; return NULL;
} }
taosLockFile(fd); taosLockFile(fd);
(void)lseek(fd, 0, SEEK_SET); (void)lseek(fd, 0, SEEK_SET);
...@@ -160,9 +173,11 @@ static void *taosThreadToOpenNewFile(void *param) { ...@@ -160,9 +173,11 @@ static void *taosThreadToOpenNewFile(void *param) {
tsLogObj.logHandle->fd = fd; tsLogObj.logHandle->fd = fd;
tsLogObj.lines = 0; tsLogObj.lines = 0;
tsLogObj.openInProgress = 0; tsLogObj.openInProgress = 0;
taosCloseLogByFd(oldFd);
uInfo("new log file is opened!!!"); uInfo("new log file is opened!!!");
taosCloseLogByFd(oldFd); taosKeepOldLog(keepName);
return NULL; return NULL;
} }
......
...@@ -382,7 +382,13 @@ void vnodeRelease(void *pVnodeRaw) { ...@@ -382,7 +382,13 @@ void vnodeRelease(void *pVnodeRaw) {
char newDir[TSDB_FILENAME_LEN] = {0}; char newDir[TSDB_FILENAME_LEN] = {0};
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId); sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
sprintf(newDir, "%s/vnode%d", tsVnodeBakDir, vgId); sprintf(newDir, "%s/vnode%d", tsVnodeBakDir, vgId);
taosRename(rootDir, newDir);
if (0 == tsEnableVnodeBak) {
vInfo("vgId:%d, vnode backup not enabled", pVnode->vgId);
} else {
taosRename(rootDir, newDir);
}
taosRemoveDir(rootDir); taosRemoveDir(rootDir);
dnodeSendStatusMsgToMnode(); dnodeSendStatusMsgToMnode();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册