diff --git a/oam/etc/Columnstore.xml b/oam/etc/Columnstore.xml index 37ad93f3b..0b01f9326 100644 --- a/oam/etc/Columnstore.xml +++ b/oam/etc/Columnstore.xml @@ -270,6 +270,7 @@ /rdwrscratch /columnstore_tmp_files /tmp/columnstore_tmp_files + $INSTALLDIR/lib/libcloudio.so dm diff --git a/oam/etc/Columnstore.xml.singleserver b/oam/etc/Columnstore.xml.singleserver index 8bb74ab85..c7d2a16a3 100644 --- a/oam/etc/Columnstore.xml.singleserver +++ b/oam/etc/Columnstore.xml.singleserver @@ -254,6 +254,7 @@ 8G --> /tmp/rdwrscratch + $INSTALLDIR/lib/libcloudio.so dm diff --git a/oam/etc/ProcessConfig.xml b/oam/etc/ProcessConfig.xml index 0bedf10de..78f82bfe7 100644 --- a/oam/etc/ProcessConfig.xml +++ b/oam/etc/ProcessConfig.xml @@ -21,7 +21,22 @@ ACTIVE_STANDBY off + + + StorageManager + ChildExtOAMModule + $INSTALLDIR/bin/StorageManager + 2 + 3 + + @ + LOADSHARE + off + + + + DBRMControllerNode ParentOAMModule $INSTALLDIR/bin/controllernode @@ -33,8 +48,8 @@ @ SIMPLEX off - - + + ServerMonitor ChildOAMModule $INSTALLDIR/bin/ServerMonitor @@ -44,8 +59,8 @@ LOADSHARE off - - + + DBRMWorkerNode ChildExtOAMModule $INSTALLDIR/bin/workernode @@ -57,7 +72,7 @@ LOADSHARE off - + PrimProc pm diff --git a/procmgr/processmanager.cpp b/procmgr/processmanager.cpp index f05a7dcbf..0f5b1d2c3 100644 --- a/procmgr/processmanager.cpp +++ b/procmgr/processmanager.cpp @@ -11055,6 +11055,8 @@ void ProcessManager::stopProcessTypes(bool manualFlag) //dbrm processManager.stopProcessType("DBRMControllerNode", manualFlag); processManager.stopProcessType("DBRMWorkerNode", manualFlag); + + processManager.stopProcessType("StorageManager", manualFlag); log.writeLog(__LINE__, "stopProcessTypes Completed"); } diff --git a/procmon/main.cpp b/procmon/main.cpp index 41cbebefd..adf03b5b4 100644 --- a/procmon/main.cpp +++ b/procmon/main.cpp @@ -1014,7 +1014,13 @@ int main(int argc, char** argv) (*listPtr).DepModuleName, (*listPtr).LogFile, initType); - + if (listPtr->ProcessName == "StorageManager") + { + log.writeLog(__LINE__, "StorageManager WTF? 1", LOG_TYPE_DEBUG); + oam.setProcessStatus("StorageManager", boost::get<0>(oam.getModuleInfo()), + oam::ACTIVE, listPtr->processID); + } + string restartStatus; if ( (*listPtr).processID == oam::API_MINOR_FAILURE || @@ -1065,7 +1071,13 @@ int main(int argc, char** argv) (*listPtr).DepModuleName, (*listPtr).LogFile, initType); - + if (listPtr->ProcessName == "StorageManager") + { + log.writeLog(__LINE__, "StorageManager WTF? 2", LOG_TYPE_DEBUG); + oam.setProcessStatus("StorageManager", boost::get<0>(oam.getModuleInfo()), + oam::ACTIVE, listPtr->processID); + } + string restartStatus; if ( (*listPtr).processID == oam::API_MINOR_FAILURE || @@ -1652,7 +1664,13 @@ static void chldHandleThread(MonitorConfig config) (*listPtr).DepModuleName, (*listPtr).LogFile, initStatus); - + if (listPtr->ProcessName == "StorageManager") + { + log.writeLog(__LINE__, "StorageManager WTF? 3", LOG_TYPE_DEBUG); + oam.setProcessStatus("StorageManager", boost::get<0>(oam.getModuleInfo()), + oam::ACTIVE, listPtr->processID); + } + if ( (*listPtr).processID == oam::API_FAILURE ) { // restart hard failure diff --git a/procmon/processmonitor.cpp b/procmon/processmonitor.cpp index f22be1b87..54a255b91 100644 --- a/procmon/processmonitor.cpp +++ b/procmon/processmonitor.cpp @@ -291,6 +291,8 @@ void MonitorConfig::buildList(string ProcessModuleType, string processName, str if ( processName == "mysqld" ) return; + + // Might need to add a similar do-nothing clause for StorageManager? pthread_mutex_lock(&LIST_LOCK); @@ -505,7 +507,6 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO break; } - processList::iterator listPtr; processList* aPtr = config.monitoredListPtr(); listPtr = aPtr->begin(); @@ -574,6 +575,11 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO break; } + if (processName == "StorageManager") // storagemanager doesn't send its own response + { + ackMsg << (uint8_t) ACK << (uint8_t) START << (uint8_t) API_SUCCESS; + mq.write(ackMsg); + } ProcessConfig processconfig; ProcessStatus processstatus; @@ -657,7 +663,9 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO processconfig.LogFile, initType, actIndicator); - + if (processName == "StorageManager") + log.writeLog(__LINE__, "START: supposedly StorageManager was started, got processID " + processID, LOG_TYPE_DEBUG); + if ( processID > oam::API_MAX ) processID = oam::API_SUCCESS; @@ -702,6 +710,11 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO break; } + if (processName == "StorageManager") // storagemanager doesn't send its own response + { + ackMsg << (uint8_t) ACK << (uint8_t) RESTART << (uint8_t) API_SUCCESS; + mq.write(ackMsg); + } processList::iterator listPtr; processList* aPtr = config.monitoredListPtr(); @@ -752,7 +765,10 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO (*listPtr).DepModuleName, (*listPtr).LogFile, initType); - + if (processName == "StorageManager") + log.writeLog(__LINE__, "RESTART: supposedly StorageManager was started, got processID " + processID, LOG_TYPE_DEBUG); + + if ( processID > oam::API_MAX ) processID = oam::API_SUCCESS; @@ -1097,6 +1113,11 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO break; } + if (processName == "StorageManager") // storagemanager doesn't send its own status + { + ackMsg << (uint8_t) ACK << (uint8_t) STARTALL << (uint8_t) API_SUCCESS; + mq.write(ackMsg); + } if ( config.moduleType() == "pm" ) { @@ -1191,7 +1212,10 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO (*listPtr).DepModuleName, (*listPtr).LogFile, initType); - + if (processName == "StorageManager") + log.writeLog(__LINE__, "STARTALL: supposedly StorageManager was started, got processID " + processID, LOG_TYPE_DEBUG); + + if ( processID > oam::API_MAX ) { processID = oam::API_SUCCESS; @@ -1257,7 +1281,10 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO (*listPtr).DepModuleName, (*listPtr).LogFile, initType); - + if (processName == "StorageManager") + log.writeLog(__LINE__, "STARTALL: supposedly StorageManager was started, got processID " + processID, LOG_TYPE_DEBUG); + + if ( processID > oam::API_MAX ) processID = oam::API_SUCCESS; @@ -2229,8 +2256,8 @@ pid_t ProcessMonitor::startProcess(string processModuleType, string processName, SystemProcessStatus systemprocessstatus; ProcessStatus processstatus; - log.writeLog(__LINE__, "STARTING Process: " + processName, LOG_TYPE_DEBUG); - log.writeLog(__LINE__, "Process location: " + processLocation, LOG_TYPE_DEBUG); + log.writeLog(__LINE__, "STARTING Process: " + processName, LOG_TYPE_CRITICAL); //, LOG_TYPE_DEBUG); + log.writeLog(__LINE__, "Process location: " + processLocation, LOG_TYPE_CRITICAL); //, LOG_TYPE_DEBUG); //check process location if (access(processLocation.c_str(), X_OK) != 0) @@ -2815,6 +2842,12 @@ pid_t ProcessMonitor::startProcess(string processModuleType, string processName, sleep(1); execv(processLocation.c_str(), argList); + if (processName == "StorageManager") + { + char buf[80]; + int l_errno = errno; + log.writeLog(__LINE__, "exec'ing StorageManager failed, got " + string(strerror_r(l_errno, buf, 80)), LOG_TYPE_DEBUG); + } //record the process information into processList config.buildList(processModuleType, processName, processLocation, arg_list, launchID, newProcessID, FAILED, BootLaunch, RunType,