Merge remote-tracking branch 'haoyifan/fix_init' into develop
This commit is contained in:
commit
6321b0dffb
|
@ -22,7 +22,7 @@ extern "C" {
|
||||||
|
|
||||||
int32_t dnodeInitModules();
|
int32_t dnodeInitModules();
|
||||||
void dnodeStartModules();
|
void dnodeStartModules();
|
||||||
void dnodeCleanUpModules();
|
void dnodeCleanupModules();
|
||||||
void dnodeProcessModuleStatus(uint32_t moduleStatus);
|
void dnodeProcessModuleStatus(uint32_t moduleStatus);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -36,6 +36,46 @@ static void dnodeCleanupStorage();
|
||||||
static void dnodeSetRunStatus(SDnodeRunStatus status);
|
static void dnodeSetRunStatus(SDnodeRunStatus status);
|
||||||
static void dnodeCheckDataDirOpenned(char *dir);
|
static void dnodeCheckDataDirOpenned(char *dir);
|
||||||
static SDnodeRunStatus tsDnodeRunStatus = TSDB_DNODE_RUN_STATUS_STOPPED;
|
static SDnodeRunStatus tsDnodeRunStatus = TSDB_DNODE_RUN_STATUS_STOPPED;
|
||||||
|
static int32_t dnodeInitComponents();
|
||||||
|
static void dnodeCleanupComponents(int32_t stepId);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
const char *const name;
|
||||||
|
int (*init)();
|
||||||
|
void (*cleanup)();
|
||||||
|
} SDnodeComponent;
|
||||||
|
|
||||||
|
static const SDnodeComponent SDnodeComponents[] = {
|
||||||
|
{"storage", dnodeInitStorage, dnodeCleanupStorage},
|
||||||
|
{"vread", dnodeInitVnodeRead, dnodeCleanupVnodeRead},
|
||||||
|
{"vwrite", dnodeInitVnodeWrite, dnodeCleanupVnodeWrite},
|
||||||
|
{"mread", dnodeInitMnodeRead, dnodeCleanupMnodeRead},
|
||||||
|
{"mwrite", dnodeInitMnodeWrite, dnodeCleanupMnodeWrite},
|
||||||
|
{"mpeer", dnodeInitMnodePeer, dnodeCleanupMnodePeer},
|
||||||
|
{"client", dnodeInitClient, dnodeCleanupClient},
|
||||||
|
{"server", dnodeInitServer, dnodeCleanupServer},
|
||||||
|
{"mgmt", dnodeInitMgmt, dnodeCleanupMgmt},
|
||||||
|
{"modules", dnodeInitModules, dnodeCleanupModules},
|
||||||
|
{"shell", dnodeInitShell, dnodeCleanupShell}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void dnodeCleanupComponents(int32_t stepId) {
|
||||||
|
for (int32_t i = stepId; i >= 0; i--) {
|
||||||
|
SDnodeComponents[i].cleanup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t dnodeInitComponents() {
|
||||||
|
int32_t code = 0;
|
||||||
|
for (int32_t i = 0; i < sizeof(SDnodeComponents) / sizeof(SDnodeComponents[0]); i++) {
|
||||||
|
if (SDnodeComponents[i].init() != 0) {
|
||||||
|
dnodeCleanupComponents(i);
|
||||||
|
code = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t dnodeInitSystem() {
|
int32_t dnodeInitSystem() {
|
||||||
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_INITIALIZE);
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_INITIALIZE);
|
||||||
|
@ -67,17 +107,9 @@ int32_t dnodeInitSystem() {
|
||||||
|
|
||||||
dPrint("start to initialize TDengine on %s", tsLocalEp);
|
dPrint("start to initialize TDengine on %s", tsLocalEp);
|
||||||
|
|
||||||
if (dnodeInitStorage() != 0) return -1;
|
if (dnodeInitComponents() != 0) {
|
||||||
if (dnodeInitVnodeRead() != 0) return -1;
|
return -1;
|
||||||
if (dnodeInitVnodeWrite() != 0) return -1;
|
}
|
||||||
if (dnodeInitMnodeRead() != 0) return -1;
|
|
||||||
if (dnodeInitMnodeWrite() != 0) return -1;
|
|
||||||
if (dnodeInitMnodePeer() != 0) return -1;
|
|
||||||
if (dnodeInitClient() != 0) return -1;
|
|
||||||
if (dnodeInitServer() != 0) return -1;
|
|
||||||
if (dnodeInitMgmt() != 0) return -1;
|
|
||||||
if (dnodeInitModules() != 0) return -1;
|
|
||||||
if (dnodeInitShell() != 0) return -1;
|
|
||||||
|
|
||||||
dnodeStartModules();
|
dnodeStartModules();
|
||||||
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_RUNING);
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_RUNING);
|
||||||
|
@ -90,17 +122,7 @@ int32_t dnodeInitSystem() {
|
||||||
void dnodeCleanUpSystem() {
|
void dnodeCleanUpSystem() {
|
||||||
if (dnodeGetRunStatus() != TSDB_DNODE_RUN_STATUS_STOPPED) {
|
if (dnodeGetRunStatus() != TSDB_DNODE_RUN_STATUS_STOPPED) {
|
||||||
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_STOPPED);
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_STOPPED);
|
||||||
dnodeCleanupShell();
|
dnodeCleanupComponents(sizeof(SDnodeComponents) / sizeof(SDnodeComponents[0]) - 1);
|
||||||
dnodeCleanUpModules();
|
|
||||||
dnodeCleanupMgmt();
|
|
||||||
dnodeCleanupServer();
|
|
||||||
dnodeCleanupClient();
|
|
||||||
dnodeCleanupMnodePeer();
|
|
||||||
dnodeCleanupMnodeWrite();
|
|
||||||
dnodeCleanupMnodeRead();
|
|
||||||
dnodeCleanupVnodeWrite();
|
|
||||||
dnodeCleanupVnodeRead();
|
|
||||||
dnodeCleanupStorage();
|
|
||||||
taos_cleanup();
|
taos_cleanup();
|
||||||
taosCloseLog();
|
taosCloseLog();
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ static void dnodeAllocModules() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dnodeCleanUpModules() {
|
void dnodeCleanupModules() {
|
||||||
for (int32_t module = 1; module < TSDB_MOD_MAX; ++module) {
|
for (int32_t module = 1; module < TSDB_MOD_MAX; ++module) {
|
||||||
if (tsModule[module].enable && tsModule[module].stopFp) {
|
if (tsModule[module].enable && tsModule[module].stopFp) {
|
||||||
(*tsModule[module].stopFp)();
|
(*tsModule[module].stopFp)();
|
||||||
|
|
|
@ -93,8 +93,6 @@ int32_t main(int32_t argc, char *argv[]) {
|
||||||
if (dnodeInitSystem() < 0) {
|
if (dnodeInitSystem() < 0) {
|
||||||
syslog(LOG_ERR, "Error initialize TDengine system");
|
syslog(LOG_ERR, "Error initialize TDengine system");
|
||||||
closelog();
|
closelog();
|
||||||
|
|
||||||
dnodeCleanUpSystem();
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,8 +85,8 @@ void dnodeCleanupVnodeRead() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taosCloseQset(readQset);
|
|
||||||
free(readPool.readWorker);
|
free(readPool.readWorker);
|
||||||
|
taosCloseQset(readQset);
|
||||||
|
|
||||||
dPrint("dnode read is closed");
|
dPrint("dnode read is closed");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue