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,