commit
81ee7a245e
|
@ -117,6 +117,7 @@ extern char tsDataDir[];
|
||||||
extern char tsLogDir[];
|
extern char tsLogDir[];
|
||||||
extern char tsScriptDir[];
|
extern char tsScriptDir[];
|
||||||
extern int64_t tsMsPerDay[3];
|
extern int64_t tsMsPerDay[3];
|
||||||
|
extern char tsVnodeBakDir[];
|
||||||
|
|
||||||
// system info
|
// system info
|
||||||
extern char tsOsName[];
|
extern char tsOsName[];
|
||||||
|
|
|
@ -153,6 +153,7 @@ char tsDnodeDir[TSDB_FILENAME_LEN] = {0};
|
||||||
char tsMnodeDir[TSDB_FILENAME_LEN] = {0};
|
char tsMnodeDir[TSDB_FILENAME_LEN] = {0};
|
||||||
char tsDataDir[TSDB_FILENAME_LEN] = "/var/lib/taos";
|
char tsDataDir[TSDB_FILENAME_LEN] = "/var/lib/taos";
|
||||||
char tsScriptDir[TSDB_FILENAME_LEN] = "/etc/taos";
|
char tsScriptDir[TSDB_FILENAME_LEN] = "/etc/taos";
|
||||||
|
char tsVnodeBakDir[TSDB_FILENAME_LEN] = {0};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* minimum scale for whole system, millisecond by default
|
* minimum scale for whole system, millisecond by default
|
||||||
|
|
|
@ -171,6 +171,7 @@ static int32_t dnodeInitStorage() {
|
||||||
sprintf(tsMnodeDir, "%s/mnode", tsDataDir);
|
sprintf(tsMnodeDir, "%s/mnode", tsDataDir);
|
||||||
sprintf(tsVnodeDir, "%s/vnode", tsDataDir);
|
sprintf(tsVnodeDir, "%s/vnode", tsDataDir);
|
||||||
sprintf(tsDnodeDir, "%s/dnode", tsDataDir);
|
sprintf(tsDnodeDir, "%s/dnode", tsDataDir);
|
||||||
|
sprintf(tsVnodeBakDir, "%s/vnode_bak", tsDataDir);
|
||||||
|
|
||||||
//TODO(dengyihao): no need to init here
|
//TODO(dengyihao): no need to init here
|
||||||
if (dnodeCreateDir(tsMnodeDir) < 0) {
|
if (dnodeCreateDir(tsMnodeDir) < 0) {
|
||||||
|
@ -186,6 +187,10 @@ static int32_t dnodeInitStorage() {
|
||||||
dError("failed to create dir: %s, reason: %s", tsDnodeDir, strerror(errno));
|
dError("failed to create dir: %s, reason: %s", tsDnodeDir, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (dnodeCreateDir(tsVnodeBakDir) < 0) {
|
||||||
|
dError("failed to create dir: %s, reason: %s", tsVnodeBakDir, strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
dnodeCheckDataDirOpenned(tsDnodeDir);
|
dnodeCheckDataDirOpenned(tsDnodeDir);
|
||||||
|
|
||||||
|
|
|
@ -236,6 +236,9 @@ void taosSetCoreDump();
|
||||||
|
|
||||||
void taosBlockSIGPIPE();
|
void taosBlockSIGPIPE();
|
||||||
|
|
||||||
|
int tSystem(const char * cmd) ;
|
||||||
|
|
||||||
|
|
||||||
#ifdef _ALPINE
|
#ifdef _ALPINE
|
||||||
typedef int(*__compar_fn_t)(const void *, const void *);
|
typedef int(*__compar_fn_t)(const void *, const void *);
|
||||||
void error (int, int, const char *);
|
void error (int, int, const char *);
|
||||||
|
|
|
@ -241,3 +241,32 @@ void taosBlockSIGPIPE() {
|
||||||
uError("failed to block SIGPIPE");
|
uError("failed to block SIGPIPE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tSystem(const char * cmd)
|
||||||
|
{
|
||||||
|
FILE * fp;
|
||||||
|
int res;
|
||||||
|
char buf[1024];
|
||||||
|
if (cmd == NULL) {
|
||||||
|
uError("tSystem cmd is NULL!\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((fp = popen(cmd, "r") ) == NULL) {
|
||||||
|
uError("popen cmd:%s error: %s/n", cmd, strerror(errno));
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
while(fgets(buf, sizeof(buf), fp)) {
|
||||||
|
uDebug("popen result:%s", buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = pclose(fp)) == -1) {
|
||||||
|
uError("close popen file pointer fp error!\n");
|
||||||
|
} else {
|
||||||
|
uDebug("popen res is :%d\n", res);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -184,6 +184,7 @@ uint32_t ip2uint(const char *const ip_addr);
|
||||||
|
|
||||||
void taosRemoveDir(char *rootDir);
|
void taosRemoveDir(char *rootDir);
|
||||||
int tmkdir(const char *pathname, mode_t mode);
|
int tmkdir(const char *pathname, mode_t mode);
|
||||||
|
void taosMvDir(char* destDir, char *srcDir);
|
||||||
|
|
||||||
#define TAOS_ALLOC_MODE_DEFAULT 0
|
#define TAOS_ALLOC_MODE_DEFAULT 0
|
||||||
#define TAOS_ALLOC_MODE_RANDOM_FAIL 1
|
#define TAOS_ALLOC_MODE_RANDOM_FAIL 1
|
||||||
|
|
|
@ -799,3 +799,13 @@ int tmkdir(const char *path, mode_t mode) {
|
||||||
if (code < 0 && errno == EEXIST) code = 0;
|
if (code < 0 && errno == EEXIST) code = 0;
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void taosMvDir(char* destDir, char *srcDir) {
|
||||||
|
char shellCmd[1024+1] = {0};
|
||||||
|
|
||||||
|
//(void)snprintf(shellCmd, 1024, "cp -rf %s %s", srcDir, destDir);
|
||||||
|
(void)snprintf(shellCmd, 1024, "mv %s %s", srcDir, destDir);
|
||||||
|
tSystem(shellCmd);
|
||||||
|
uInfo("shell cmd:%s is executed", shellCmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -347,6 +347,7 @@ void vnodeRelease(void *pVnodeRaw) {
|
||||||
if (pVnode->status == TAOS_VN_STATUS_DELETING) {
|
if (pVnode->status == TAOS_VN_STATUS_DELETING) {
|
||||||
char rootDir[TSDB_FILENAME_LEN] = {0};
|
char rootDir[TSDB_FILENAME_LEN] = {0};
|
||||||
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
|
sprintf(rootDir, "%s/vnode%d", tsVnodeDir, vgId);
|
||||||
|
taosMvDir(tsVnodeBakDir, rootDir);
|
||||||
taosRemoveDir(rootDir);
|
taosRemoveDir(rootDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue