diff --git a/oamapps/mcsadmin/mcsadmin.cpp b/oamapps/mcsadmin/mcsadmin.cpp index befcb68fa..29d53b35f 100644 --- a/oamapps/mcsadmin/mcsadmin.cpp +++ b/oamapps/mcsadmin/mcsadmin.cpp @@ -7036,7 +7036,7 @@ int processCommand(string* arguments) if (systemstatus.SystemOpState == oam::ACTIVE ) { try { - cout << endl << " Restarting System "; + cout << endl << " Restarting System " << endl; gracefulTemp = oam::FORCEFUL; int returnStatus = oam.restartSystem(gracefulTemp, ackTemp); switch (returnStatus) diff --git a/procmgr/processmanager.cpp b/procmgr/processmanager.cpp index 42d1c167b..8ce936c97 100755 --- a/procmgr/processmanager.cpp +++ b/procmgr/processmanager.cpp @@ -1637,7 +1637,7 @@ void processMSG(messageqcpp::IOSocket* cfIos) { log.writeLog(__LINE__, "Setup MySQL Replication for restartSystem FORCE", LOG_TYPE_DEBUG); oam::DeviceNetworkList devicenetworklist; - processManager.setMySQLReplication(devicenetworklist); + processManager.setMySQLReplication(devicenetworklist, oam::UnassignedName, true); } log.writeLog(__LINE__, "RESTARTSYSTEM: Start System Request Completed", LOG_TYPE_INFO); @@ -2769,12 +2769,16 @@ void processMSG(messageqcpp::IOSocket* cfIos) processManager.reinitProcessType("cpimport"); //request reinit after Process is active - for ( int i = 0; i < 600 ; i++ ) { + for ( int i = 0; i < 10 ; i++ ) { try { ProcessStatus procstat; oam.getProcessStatus(processName, moduleName, procstat); - if (procstat.ProcessOpState == oam::ACTIVE) { + if (procstat.ProcessOpState == oam::COLD_STANDBY) + break; + + if ( (procstat.ProcessOpState == oam::ACTIVE) || + (procstat.ProcessOpState == oam::STANDBY) ) { // if a PrimProc was restarted, reinit ACTIVE ExeMgr(s) and DDL/DMLProc if( processName == "PrimProc") { diff --git a/procmon/main.cpp b/procmon/main.cpp index 4be046511..63f0140b2 100644 --- a/procmon/main.cpp +++ b/procmon/main.cpp @@ -1388,7 +1388,7 @@ static void chldHandleThread(MonitorConfig config) catch(...) {} - // check if process failover is needed due to process outage + // check if Mdoule failover is needed due to process outage aMonitor.checkModuleFailover((*listPtr).ProcessName); //check the db health @@ -1463,15 +1463,19 @@ static void chldHandleThread(MonitorConfig config) restartStatus = " restart failed with hard failure, don't retry!!"; (*listPtr).processID = 0; - // check if process failover is needed due to process outage + // check if Module failover is needed due to process outage aMonitor.checkModuleFailover((*listPtr).ProcessName); break; } else { if ( (*listPtr).processID != oam::API_MINOR_FAILURE ) + { //restarted successful + //Inform Process Manager that Process restart + aMonitor.processRestarted( (*listPtr).ProcessName, false); break; + } } // restart failed with minor error, sleep and try sleep(5); diff --git a/procmon/processmonitor.cpp b/procmon/processmonitor.cpp index bf471e62c..2109d8ed1 100644 --- a/procmon/processmonitor.cpp +++ b/procmon/processmonitor.cpp @@ -621,9 +621,6 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO else log.writeLog(__LINE__, "START: process already active " + processName); - //Inform Process Manager that Process restart - //processRestarted(processName); - ackMsg << (ByteStream::byte) ACK; ackMsg << (ByteStream::byte) START; ackMsg << (ByteStream::byte) requestStatus; @@ -720,9 +717,6 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO requestStatus = API_FAILURE; } - //Inform Process Manager that Process restart - //processRestarted(processName); - ackMsg << (ByteStream::byte) ACK; ackMsg << (ByteStream::byte) RESTART; ackMsg << (ByteStream::byte) requestStatus; @@ -4650,7 +4644,6 @@ void ProcessMonitor::checkModuleFailover( std::string processName) systemprocessstatus.processstatus[i].ProcessOpState == oam::FAILED ) { // found a AVAILABLE mate, start it log.writeLog(__LINE__, "Change UM Master to module " + systemprocessstatus.processstatus[i].Module, LOG_TYPE_DEBUG); - log.writeLog(__LINE__, "Disable local UM module " + config.moduleName(), LOG_TYPE_DEBUG); log.writeLog(__LINE__, "Stop local UM module " + config.moduleName(), LOG_TYPE_DEBUG); log.writeLog(__LINE__, "Disable Local will Enable UM module " + systemprocessstatus.processstatus[i].Module, LOG_TYPE_DEBUG);