diff --git a/procmgr/processmanager.cpp b/procmgr/processmanager.cpp index 0b8f4af59..0a054f9c3 100755 --- a/procmgr/processmanager.cpp +++ b/procmgr/processmanager.cpp @@ -373,7 +373,7 @@ void processMSG(messageqcpp::IOSocket* cfIos) msg >> target; msg >> graceful; msg >> ackIndicator; - msg >> manualFlag; + msg >> manualFlag; switch (actionType) { case STOPMODULE: @@ -835,16 +835,18 @@ void processMSG(messageqcpp::IOSocket* cfIos) status = processManager.disableModule(moduleName, true); log.writeLog(__LINE__, "Disable Module Completed on " + moduleName, LOG_TYPE_INFO); + processManager.recycleProcess(moduleName); + + //check for SIMPLEX Processes on mate might need to be started + processManager.checkSimplexModule(moduleName); + //call dbrm control - oam.dbrmctl("reload"); - log.writeLog(__LINE__, "'dbrmctl reload' done", LOG_TYPE_DEBUG); +// oam.dbrmctl("reload"); +// log.writeLog(__LINE__, "'dbrmctl reload' done", LOG_TYPE_DEBUG); // resume the dbrm oam.dbrmctl("resume"); log.writeLog(__LINE__, "'dbrmctl resume' done", LOG_TYPE_DEBUG); - - //check for SIMPLEX Processes on mate might need to be started - processManager.checkSimplexModule(moduleName); } else { @@ -3299,7 +3301,9 @@ int ProcessManager::disableModule(string target, bool manualFlag) // update state to MAN_DISABLED if (opState == oam::AUTO_DISABLED && newState == oam::MAN_DISABLED) { - + //removemodule to get proess in MAN_OFFLINE + stopModule(target, REMOVE, true); + try { oam.getSystemConfig(target, moduleconfig); @@ -3351,7 +3355,7 @@ int ProcessManager::disableModule(string target, bool manualFlag) setModuleState(target, newState); - //set Columnstore.xml enbale state + //set Columnstore.xml enable state setEnableState( target, SnewState); log.writeLog(__LINE__, "disableModule - setEnableState", LOG_TYPE_DEBUG); @@ -3435,18 +3439,18 @@ void ProcessManager::recycleProcess(string module, bool enableModule) restartProcessType("PrimProc"); sleep(1); - restartProcessType("ExeMgr"); - sleep(1); - restartProcessType("mysqld"); restartProcessType("WriteEngineServer"); sleep(1); - restartProcessType("DDLProc",module); + startProcessType("ExeMgr"); sleep(1); - restartProcessType("DMLProc",module); + startProcessType("DDLProc"); + sleep(1); + + startProcessType("DMLProc"); return; } @@ -4156,7 +4160,8 @@ int ProcessManager::stopProcessType( std::string processName, bool manualFlag ) { if ( systemprocessstatus.processstatus[i].ProcessName == processName) { //skip if in a COLD_STANDBY state - if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::COLD_STANDBY ) +// if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::COLD_STANDBY ) + if ( systemprocessstatus.processstatus[i].ProcessOpState != oam::ACTIVE ) continue; // found one, request restart of it @@ -4286,12 +4291,17 @@ int ProcessManager::restartProcessType( std::string processName, std::string ski { if ( systemprocessstatus.processstatus[i].ProcessName == processName ) { //skip if in a BUSY_INIT state - if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::BUSY_INIT || - systemprocessstatus.processstatus[i].ProcessOpState == oam::AUTO_INIT || - systemprocessstatus.processstatus[i].ProcessOpState == oam::MAN_INIT || - ( systemprocessstatus.processstatus[i].ProcessOpState == oam::COLD_STANDBY && !manualFlag ) ) - continue; +// if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::BUSY_INIT || +// systemprocessstatus.processstatus[i].ProcessOpState == oam::MAN_OFFLINE || +// systemprocessstatus.processstatus[i].ProcessOpState == oam::AUTO_OFFLINE || +// systemprocessstatus.processstatus[i].ProcessOpState == oam::AUTO_INIT || +// systemprocessstatus.processstatus[i].ProcessOpState == oam::MAN_INIT || +// ( systemprocessstatus.processstatus[i].ProcessOpState == oam::COLD_STANDBY && !manualFlag ) ) +// continue; + if ( systemprocessstatus.processstatus[i].ProcessOpState != oam::ACTIVE ) + continue; + if ( (processName.find("DDLProc") == 0 || processName.find("DMLProc") == 0) ) { string procModuleType = systemprocessstatus.processstatus[i].Module.substr(0,MAX_MODULE_TYPE_SIZE); @@ -7539,18 +7549,18 @@ void ProcessManager::checkSimplexModule(std::string moduleName) } if ( state == oam::COLD_STANDBY ) { - //set Primary UM Module - if ( systemprocessconfig.processconfig[j].ProcessName == "DDLProc" ) { + //process DDL/DMLProc + if ( systemprocessconfig.processconfig[j].ProcessName == "DDLProc") + { + setPMProcIPs((*pt).DeviceName); + + log.writeLog(__LINE__, "Set Primary UM Module = " + (*pt).DeviceName, LOG_TYPE_DEBUG); + oam.setSystemConfig("PrimaryUMModuleName", (*pt).DeviceName); //distribute config file distributeConfigFile("system"); sleep(2); - - //add MySQL Replication setup, if needed - log.writeLog(__LINE__, "Setup MySQL Replication for COLD_STANDBY DMLProc going ACTIVE", LOG_TYPE_DEBUG); - oam::DeviceNetworkList devicenetworklist; - processManager.setMySQLReplication(devicenetworklist, (*pt).DeviceName); } int status = processManager.startProcess((*pt).DeviceName, @@ -7559,12 +7569,24 @@ void ProcessManager::checkSimplexModule(std::string moduleName) if ( status == API_SUCCESS ) { log.writeLog(__LINE__, "checkSimplexModule: mate process started: " + (*pt).DeviceName + "/" + systemprocessconfig.processconfig[j].ProcessName, LOG_TYPE_DEBUG); - //check to see if DDL/DML IPs need to be updated - if ( systemprocessconfig.processconfig[j].ProcessName == "DDLProc" ) - setPMProcIPs((*pt).DeviceName); + status = processManager.startProcess((*pt).DeviceName, + "DMLProc", + FORCEFUL); + if ( status == API_SUCCESS ) { + log.writeLog(__LINE__, "checkSimplexModule: mate process started: " + (*pt).DeviceName + "/DMLProc", LOG_TYPE_DEBUG); + } + else + log.writeLog(__LINE__, "checkSimplexModule: mate process failed to start: " + (*pt).DeviceName + "/DMLProc", LOG_TYPE_DEBUG); } else log.writeLog(__LINE__, "checkSimplexModule: mate process failed to start: " + (*pt).DeviceName + "/" + systemprocessconfig.processconfig[j].ProcessName, LOG_TYPE_DEBUG); + + //setup new MariaDB Replication Master + if ( systemprocessconfig.processconfig[j].ProcessName == "DMLProc" ) { + log.writeLog(__LINE__, "Setup MySQL Replication for COLD_STANDBY DMLProc going ACTIVE", LOG_TYPE_DEBUG); + oam::DeviceNetworkList devicenetworklist; + processManager.setMySQLReplication(devicenetworklist, (*pt).DeviceName); + } } else { // if found ACTIVE, skip to next process