You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-770
This commit is contained in:
@ -104,21 +104,6 @@ if [ $module = "pm" ]; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Setup rc.local on Module"
|
|
||||||
if [ $EUID -eq 0 -a -f $COLUMNSTORE_INSTALL_DIR/local/rc.local.columnstore ]; then
|
|
||||||
if [ $user = "root" ]; then
|
|
||||||
touch /etc/rc.local
|
|
||||||
rm -f /etc/rc.local.columnstoreSave
|
|
||||||
cp /etc/rc.local /etc/rc.local.columnstoreSave
|
|
||||||
cat $COLUMNSTORE_INSTALL_DIR/local/rc.local.columnstore >> /etc/rc.local
|
|
||||||
else
|
|
||||||
sudo touch /etc/rc.local
|
|
||||||
sudo rm -f /etc/rc.local.columnstoreSave
|
|
||||||
sudo cp /etc/rc.local /etc/rc.local.columnstoreSave
|
|
||||||
sudo cat $COLUMNSTORE_INSTALL_DIR/local/rc.local.columnstore >> /etc/rc.local
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
plugin=`$COLUMNSTORE_INSTALL_DIR/bin/getConfig SystemConfig DataFilePlugin`
|
plugin=`$COLUMNSTORE_INSTALL_DIR/bin/getConfig SystemConfig DataFilePlugin`
|
||||||
if [ -n "$plugin" ]; then
|
if [ -n "$plugin" ]; then
|
||||||
echo "Setup .bashrc on Module for local-query"
|
echo "Setup .bashrc on Module for local-query"
|
||||||
|
@ -50,14 +50,6 @@ else
|
|||||||
$SUDO rm -f /etc/exports > /dev/null 2>&1
|
$SUDO rm -f /etc/exports > /dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -f /etc/rc.d/rc.local.columnstoreSave ; then
|
|
||||||
$SUDO mv -f /etc/rc.d/rc.local.columnstoreSave /etc/rc.d/rc.local > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -f /etc/rc.local.columnstoreSave ; then
|
|
||||||
$SUDO mv -f /etc/rc.local.columnstoreSave /etc/rc.local > /dev/null 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
export COLUMNSTORE_INSTALL_DIR=$installdir
|
export COLUMNSTORE_INSTALL_DIR=$installdir
|
||||||
|
|
||||||
cloud=`$COLUMNSTORE_INSTALL_DIR/bin/getConfig Installation Cloud`
|
cloud=`$COLUMNSTORE_INSTALL_DIR/bin/getConfig Installation Cloud`
|
||||||
|
@ -2771,6 +2771,8 @@ namespace oam
|
|||||||
// Get Server Type Install ID
|
// Get Server Type Install ID
|
||||||
|
|
||||||
serverTypeInstall = atoi(sysConfig->getConfig("Installation", "ServerTypeInstall").c_str());
|
serverTypeInstall = atoi(sysConfig->getConfig("Installation", "ServerTypeInstall").c_str());
|
||||||
|
|
||||||
|
sysConfig;
|
||||||
}
|
}
|
||||||
catch (...) {}
|
catch (...) {}
|
||||||
|
|
||||||
|
@ -519,7 +519,7 @@ namespace oam
|
|||||||
DISABLEMYSQLREP,
|
DISABLEMYSQLREP,
|
||||||
GLUSTERASSIGN,
|
GLUSTERASSIGN,
|
||||||
GLUSTERUNASSIGN,
|
GLUSTERUNASSIGN,
|
||||||
PROCESSALARM
|
PROCESSALARM
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @brief Process Management - Mgr to Mon request options
|
/** @brief Process Management - Mgr to Mon request options
|
||||||
@ -557,6 +557,7 @@ namespace oam
|
|||||||
HEARTBEAT_SEND,
|
HEARTBEAT_SEND,
|
||||||
PROCBUILDSYSTEMTABLES,
|
PROCBUILDSYSTEMTABLES,
|
||||||
LOCALHEARTBEAT,
|
LOCALHEARTBEAT,
|
||||||
|
CONFIGURE,
|
||||||
RECONFIGURE,
|
RECONFIGURE,
|
||||||
PROCESSRESTART,
|
PROCESSRESTART,
|
||||||
GETSOFTWAREINFO,
|
GETSOFTWAREINFO,
|
||||||
|
@ -3169,6 +3169,18 @@ int main(int argc, char *argv[])
|
|||||||
cout << " DONE" << endl;
|
cout << " DONE" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( ( IserverTypeInstall == oam::INSTALL_COMBINE_DM_UM_PM ) ||
|
||||||
|
( (IserverTypeInstall != oam::INSTALL_COMBINE_DM_UM_PM) && pmwithum ) )
|
||||||
|
{
|
||||||
|
cout << endl << "===== Running the MariaDB ColumnStore MariaDB ColumnStore setup scripts =====" << endl << endl;
|
||||||
|
|
||||||
|
// call the mysql setup scripts
|
||||||
|
mysqlSetup();
|
||||||
|
sleep(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3460,7 +3472,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
//set mysql replication, if wasn't setup before on system
|
//set mysql replication, if wasn't setup before on system
|
||||||
if ( ( mysqlRep && pmwithum ) ||
|
/* if ( ( mysqlRep && pmwithum ) ||
|
||||||
( mysqlRep && (umNumber > 1) ) ||
|
( mysqlRep && (umNumber > 1) ) ||
|
||||||
( mysqlRep && (pmNumber > 1) && (IserverTypeInstall == oam::INSTALL_COMBINE_DM_UM_PM) ) )
|
( mysqlRep && (pmNumber > 1) && (IserverTypeInstall == oam::INSTALL_COMBINE_DM_UM_PM) ) )
|
||||||
{
|
{
|
||||||
@ -3477,7 +3489,7 @@ int main(int argc, char *argv[])
|
|||||||
else
|
else
|
||||||
cout << " DONE" << endl;
|
cout << " DONE" << endl;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
cout << endl << "MariaDB ColumnStore Install Successfully Completed, System is Active" << endl << endl;
|
cout << endl << "MariaDB ColumnStore Install Successfully Completed, System is Active" << endl << endl;
|
||||||
|
|
||||||
cout << "Enter the following command to define MariaDB ColumnStore Alias Commands" << endl << endl;
|
cout << "Enter the following command to define MariaDB ColumnStore Alias Commands" << endl << endl;
|
||||||
|
@ -552,6 +552,72 @@ static void startMgrProcessThread()
|
|||||||
log.writeLog(__LINE__, "EXCEPTION ERROR on getSystemConfig: Caught unknown exception!", LOG_TYPE_ERROR);
|
log.writeLog(__LINE__, "EXCEPTION ERROR on getSystemConfig: Caught unknown exception!", LOG_TYPE_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get Distributed Install
|
||||||
|
string DistributedInstall = "y";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "addModule - ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
//send out moduleName to remote nodes on non-distrubuted install
|
||||||
|
if ( DistributedInstall == "n" )
|
||||||
|
{
|
||||||
|
int status = API_SUCCESS;
|
||||||
|
int k = 0;
|
||||||
|
for( ; k < 1200 ; k++ )
|
||||||
|
{
|
||||||
|
if ( startsystemthreadStop ) {
|
||||||
|
processManager.setSystemState(oam::MAN_OFFLINE);
|
||||||
|
|
||||||
|
// exit thread
|
||||||
|
log.writeLog(__LINE__, "startMgrProcessThread Exit with a stop system flag", LOG_TYPE_DEBUG);
|
||||||
|
pthread_exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
status = API_SUCCESS;
|
||||||
|
for( unsigned int i = 0 ; i < systemmoduletypeconfig.moduletypeconfig.size(); i++)
|
||||||
|
{
|
||||||
|
int moduleCount = systemmoduletypeconfig.moduletypeconfig[i].ModuleCount;
|
||||||
|
if( moduleCount == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
DeviceNetworkList::iterator pt = systemmoduletypeconfig.moduletypeconfig[i].ModuleNetworkList.begin();
|
||||||
|
for ( ; pt != systemmoduletypeconfig.moduletypeconfig[i].ModuleNetworkList.end(); pt++)
|
||||||
|
{
|
||||||
|
string moduleName = (*pt).DeviceName;
|
||||||
|
if ( (*pt).DisableState == oam::MANDISABLEDSTATE ||
|
||||||
|
(*pt).DisableState == oam::AUTODISABLEDSTATE )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int ret = processManager.configureModule(moduleName);
|
||||||
|
if ( ret != API_SUCCESS )
|
||||||
|
status = ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//get out of loop if all modules updated
|
||||||
|
if( status == API_SUCCESS )
|
||||||
|
break;
|
||||||
|
|
||||||
|
//retry after sleeping for a bit
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( k == 1200 || status == API_FAILURE) {
|
||||||
|
// system didn't successfull restart
|
||||||
|
processManager.setSystemState(oam::FAILED);
|
||||||
|
// exit thread
|
||||||
|
log.writeLog(__LINE__, "startMgrProcessThread Exit with a failure, not all ProcMons running", LOG_TYPE_CRITICAL);
|
||||||
|
log.writeLog(__LINE__, "startMgrProcessThread Exit - failure", LOG_TYPE_DEBUG);
|
||||||
|
pthread_exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//wait until all modules are up after a system reboot
|
//wait until all modules are up after a system reboot
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for( ; i < 100 ; i++ )
|
for( ; i < 100 ; i++ )
|
||||||
|
@ -4983,6 +4983,9 @@ int ProcessManager::addModule(oam::DeviceNetworkList devicenetworklist, std::str
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//distribute config file
|
||||||
|
distributeConfigFile("system");
|
||||||
|
|
||||||
if ( DistributedInstall == "y" ) {
|
if ( DistributedInstall == "y" ) {
|
||||||
|
|
||||||
//PMwithUM config
|
//PMwithUM config
|
||||||
@ -5350,9 +5353,16 @@ int ProcessManager::addModule(oam::DeviceNetworkList devicenetworklist, std::str
|
|||||||
sleep(30);
|
sleep(30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
listPT = devicenetworklist.begin();
|
||||||
|
for( ; listPT != devicenetworklist.end() ; listPT++)
|
||||||
|
{
|
||||||
|
string moduleName = (*listPT).DeviceName;
|
||||||
|
|
||||||
//distribute config file
|
processManager.configureModule(moduleName);
|
||||||
distributeConfigFile("system");
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.writeLog(__LINE__, "Setup MySQL Replication for new Modules being Added", LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "Setup MySQL Replication for new Modules being Added", LOG_TYPE_DEBUG);
|
||||||
processManager.setMySQLReplication(devicenetworklist, oam::UnassignedName, false, true, password );
|
processManager.setMySQLReplication(devicenetworklist, oam::UnassignedName, false, true, password );
|
||||||
@ -6056,6 +6066,40 @@ int ProcessManager::reconfigureModule(oam::DeviceNetworkList devicenetworklist)
|
|||||||
return API_SUCCESS;
|
return API_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************************
|
||||||
|
* @brief configureModule
|
||||||
|
*
|
||||||
|
* purpose: Configure Module sends message to procmon to setup modulename
|
||||||
|
*
|
||||||
|
******************************************************************************************/
|
||||||
|
int ProcessManager::configureModule(std::string moduleName)
|
||||||
|
{
|
||||||
|
//distribute config file
|
||||||
|
distributeConfigFile(moduleName);
|
||||||
|
|
||||||
|
//
|
||||||
|
//Send Configure msg to Module's Process-Monitor being reconfigured
|
||||||
|
//
|
||||||
|
ByteStream msg;
|
||||||
|
ByteStream::byte requestID = CONFIGURE;
|
||||||
|
|
||||||
|
msg << requestID;
|
||||||
|
msg << moduleName;
|
||||||
|
|
||||||
|
int returnStatus = sendMsgProcMon( moduleName, msg, requestID );
|
||||||
|
|
||||||
|
if ( returnStatus == API_SUCCESS)
|
||||||
|
//log the event
|
||||||
|
log.writeLog(__LINE__, "configureModule - procmon configure successful", LOG_TYPE_DEBUG);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "configureModule - procmon configure failed", LOG_TYPE_ERROR);
|
||||||
|
return API_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return API_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
* @brief sendMsgProcMon
|
* @brief sendMsgProcMon
|
||||||
|
@ -415,6 +415,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
int addModule(oam::DeviceNetworkList devicenetworklist, std::string password, bool manualFlag = true);
|
int addModule(oam::DeviceNetworkList devicenetworklist, std::string password, bool manualFlag = true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@brief Configure Module
|
||||||
|
*/
|
||||||
|
int configureModule(std::string moduleName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*@brief Reconfigure Module
|
*@brief Reconfigure Module
|
||||||
*/
|
*/
|
||||||
|
118
procmon/main.cpp
118
procmon/main.cpp
@ -57,6 +57,7 @@ bool processInitComplete = false;
|
|||||||
bool rootUser = true;
|
bool rootUser = true;
|
||||||
string USER = "root";
|
string USER = "root";
|
||||||
string PMwithUM = "n";
|
string PMwithUM = "n";
|
||||||
|
bool startProcMon = false;
|
||||||
|
|
||||||
//extern std::string gOAMParentModuleName;
|
//extern std::string gOAMParentModuleName;
|
||||||
extern bool gOAMParentModuleFlag;
|
extern bool gOAMParentModuleFlag;
|
||||||
@ -96,6 +97,7 @@ int main(int argc, char **argv)
|
|||||||
MonitorLog log;
|
MonitorLog log;
|
||||||
MonitorConfig config;
|
MonitorConfig config;
|
||||||
ProcessMonitor aMonitor(config, log);
|
ProcessMonitor aMonitor(config, log);
|
||||||
|
Config* sysConfig = Config::makeConfig();
|
||||||
|
|
||||||
log.writeLog(__LINE__, " ");
|
log.writeLog(__LINE__, " ");
|
||||||
log.writeLog(__LINE__, "**********Process Monitor Started**********");
|
log.writeLog(__LINE__, "**********Process Monitor Started**********");
|
||||||
@ -130,8 +132,82 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
setlocale(LC_ALL, systemLang.c_str());
|
setlocale(LC_ALL, systemLang.c_str());
|
||||||
|
|
||||||
|
// create message thread
|
||||||
|
pthread_t MessageThread;
|
||||||
|
int ret = pthread_create (&MessageThread, NULL, (void*(*)(void*)) &messageThread, &config);
|
||||||
|
if ( ret != 0 ) {
|
||||||
|
log.writeLog(__LINE__, "pthread_create failed, exiting..., return code = " + oam.itoa(ret), LOG_TYPE_CRITICAL);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if this is a fresh install, meaning the Columnstore.xml file is not setup
|
||||||
|
//if so, wait for messages from Procmgr to start us up
|
||||||
|
string exemgrIpadd = sysConfig->getConfig("ExeMgr1", "IPAddr");
|
||||||
|
if ( exemgrIpadd == "0.0.0.0" )
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if ( startProcMon )
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
if (count > 10 ) {
|
||||||
|
count = 0;
|
||||||
|
log.writeLog(__LINE__, "Waiting for ProcMgr to start us up", LOG_TYPE_DEBUG);
|
||||||
|
}
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//re-read local system info with updated Columnstore.xml
|
||||||
|
sleep(1);
|
||||||
|
MonitorConfig config;
|
||||||
|
|
||||||
|
//get Distributed Install
|
||||||
|
string DistributedInstall = "y";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "addModule - ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
//check for a non-distrubuted install setup
|
||||||
|
if ( DistributedInstall == "n" )
|
||||||
|
{
|
||||||
|
//PMwithUM config
|
||||||
|
try {
|
||||||
|
oam.getSystemConfig( "PMwithUM", PMwithUM);
|
||||||
|
}
|
||||||
|
catch(...) {
|
||||||
|
PMwithUM = "n";
|
||||||
|
}
|
||||||
|
|
||||||
|
string modType = config.moduleType();
|
||||||
|
if ( ( config.ServerInstallType() == oam::INSTALL_COMBINE_DM_UM_PM ) ||
|
||||||
|
( PMwithUM == "y") )
|
||||||
|
modType = "um";
|
||||||
|
|
||||||
|
//run the module install script
|
||||||
|
string cmd = startup::StartUp::installDir() + "/bin/module_installer.sh " + " --installdir=" + startup::StartUp::installDir() + " --module=" + modType + " > /dev/null 2>&1";
|
||||||
|
log.writeLog(__LINE__, "run module_installer.sh", LOG_TYPE_DEBUG);
|
||||||
|
log.writeLog(__LINE__, cmd, LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
|
system(cmd.c_str());
|
||||||
|
|
||||||
|
//exit to allow ProcMon to restart in a setup state
|
||||||
|
log.writeLog(__LINE__, "restarting for a non-distrubuted install", LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//define entry if missing
|
//define entry if missing
|
||||||
Config* sysConfig = Config::makeConfig();
|
|
||||||
if ( gOAMParentModuleFlag )
|
if ( gOAMParentModuleFlag )
|
||||||
{
|
{
|
||||||
string PrimaryUMModuleName;
|
string PrimaryUMModuleName;
|
||||||
@ -152,12 +228,6 @@ int main(int argc, char **argv)
|
|||||||
log.writeLog(__LINE__, "ProcMon: Starting as NON-ACTIVE Parent", LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "ProcMon: Starting as NON-ACTIVE Parent", LOG_TYPE_DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create message thread
|
|
||||||
pthread_t MessageThread;
|
|
||||||
int ret = pthread_create (&MessageThread, NULL, (void*(*)(void*)) &messageThread, &config);
|
|
||||||
if ( ret != 0 )
|
|
||||||
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
|
|
||||||
|
|
||||||
//create and mount data directories
|
//create and mount data directories
|
||||||
aMonitor.createDataDirs(cloud);
|
aMonitor.createDataDirs(cloud);
|
||||||
|
|
||||||
@ -290,16 +360,9 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool fresh = false;
|
|
||||||
|
|
||||||
// not active Parent, get updated Columnstore.xml, retry in case ProcMgr isn't up yet
|
// not active Parent, get updated Columnstore.xml, retry in case ProcMgr isn't up yet
|
||||||
if (!HDFS)
|
if (!HDFS)
|
||||||
{
|
{
|
||||||
//check if this is a fresh install, meaning the Columnstore.xml file is not setup
|
|
||||||
string exemgrIpadd = sysConfig->getConfig("ExeMgr1", "IPAddr");
|
|
||||||
if ( exemgrIpadd == "0.0.0.0" )
|
|
||||||
fresh = true;
|
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
@ -326,33 +389,6 @@ int main(int argc, char **argv)
|
|||||||
MonitorConfig config;
|
MonitorConfig config;
|
||||||
}
|
}
|
||||||
|
|
||||||
//get Distributed Install
|
|
||||||
string DistributedInstall = "y";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
oam.getSystemConfig("DistributedInstall", DistributedInstall);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "addModule - ERROR: get DistributedInstall", LOG_TYPE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//check for a fresh install on a non-distrubuted install setup
|
|
||||||
if ( DistributedInstall == "n" && fresh )
|
|
||||||
{
|
|
||||||
string modType = config.moduleType();
|
|
||||||
if ( config.ServerInstallType() == oam::INSTALL_COMBINE_DM_UM_PM )
|
|
||||||
modType = "um";
|
|
||||||
|
|
||||||
//run the module install script
|
|
||||||
string cmd = startup::StartUp::installDir() + "/bin/module_installer.sh " + " --installdir=" + startup::StartUp::installDir() + " --module=" + modType + " > /dev/null 2>&1";
|
|
||||||
log.writeLog(__LINE__, "run module_installer.sh", LOG_TYPE_DEBUG);
|
|
||||||
log.writeLog(__LINE__, cmd, LOG_TYPE_DEBUG);
|
|
||||||
|
|
||||||
system(cmd.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// not OAM parent module, delay starting until a successful get status is performed
|
// not OAM parent module, delay starting until a successful get status is performed
|
||||||
// makes sure the Parent OAM ProcMon is fully ready
|
// makes sure the Parent OAM ProcMon is fully ready
|
||||||
while(true)
|
while(true)
|
||||||
|
@ -51,6 +51,7 @@ extern bool rootUser;
|
|||||||
extern string USER;
|
extern string USER;
|
||||||
extern bool HDFS;
|
extern bool HDFS;
|
||||||
extern string PMwithUM;
|
extern string PMwithUM;
|
||||||
|
extern bool startProcMon;
|
||||||
|
|
||||||
//std::string gOAMParentModuleName;
|
//std::string gOAMParentModuleName;
|
||||||
bool gOAMParentModuleFlag;
|
bool gOAMParentModuleFlag;
|
||||||
@ -1360,6 +1361,29 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case CONFIGURE:
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "MSG RECEIVED: Configure Module");
|
||||||
|
string configureModuleName;
|
||||||
|
msg >> configureModuleName;
|
||||||
|
|
||||||
|
uint16_t rtnCode;
|
||||||
|
int requestStatus = API_SUCCESS;
|
||||||
|
|
||||||
|
configureModule(configureModuleName);
|
||||||
|
|
||||||
|
ackMsg << (ByteStream::byte) ACK;
|
||||||
|
ackMsg << (ByteStream::byte) CONFIGURE;
|
||||||
|
ackMsg << (ByteStream::byte) requestStatus;
|
||||||
|
mq.write(ackMsg);
|
||||||
|
|
||||||
|
log.writeLog(__LINE__, "CONFIGURE: ACK back to ProcMgr, return status = " + oam.itoa((int) requestStatus));
|
||||||
|
|
||||||
|
//set startmodule flag
|
||||||
|
startProcMon = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case RECONFIGURE:
|
case RECONFIGURE:
|
||||||
{
|
{
|
||||||
log.writeLog(__LINE__, "MSG RECEIVED: Reconfigure Module");
|
log.writeLog(__LINE__, "MSG RECEIVED: Reconfigure Module");
|
||||||
@ -3537,21 +3561,6 @@ int ProcessMonitor::reconfigureModule(std::string reconfigureModuleName)
|
|||||||
system(cmd.c_str());
|
system(cmd.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
//copy and apply new rc.local.calpont from pm1
|
|
||||||
cmd = "rm -f " + installDir + "/local/rc.local.calpont";
|
|
||||||
system(cmd.c_str());
|
|
||||||
cmd = "cp " + installDir + "/local/etc/" + reconfigureModuleName + "/rc.local.calpont " + installDir + "/local/.";
|
|
||||||
system(cmd.c_str());
|
|
||||||
cmd = "rm -f /etc/rc.d/rc.local";
|
|
||||||
system(cmd.c_str());
|
|
||||||
cmd = "cp /etc/rc.d/rc.local.columnstoreSave /etc/rc.d/rc.local >/dev/null 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
if (geteuid() == 0)
|
|
||||||
cmd = "cat " + installDir + "/local/rc.local.calpont >> /etc/rc.d/rc.local >/dev/null 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
cmd = "/etc/rc.d/rc.local >/dev/null 2>&1";
|
|
||||||
system(cmd.c_str());
|
|
||||||
|
|
||||||
//update module file
|
//update module file
|
||||||
string fileName = installDir + "/local/module";
|
string fileName = installDir + "/local/module";
|
||||||
|
|
||||||
@ -3566,6 +3575,32 @@ int ProcessMonitor::reconfigureModule(std::string reconfigureModuleName)
|
|||||||
return API_SUCCESS;
|
return API_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************************
|
||||||
|
* @brief configureModule
|
||||||
|
*
|
||||||
|
* purpose: configure Module functionality
|
||||||
|
* Edit the moduleFile file with new Module Name
|
||||||
|
*
|
||||||
|
******************************************************************************************/
|
||||||
|
int ProcessMonitor::configureModule(std::string configureModuleName)
|
||||||
|
{
|
||||||
|
Oam oam;
|
||||||
|
string installDir = startup::StartUp::installDir();
|
||||||
|
|
||||||
|
//update module file
|
||||||
|
string fileName = installDir + "/local/module";
|
||||||
|
|
||||||
|
unlink (fileName.c_str());
|
||||||
|
ofstream newFile (fileName.c_str());
|
||||||
|
|
||||||
|
string cmd = "echo " + configureModuleName + " > " + fileName;
|
||||||
|
system(cmd.c_str());
|
||||||
|
|
||||||
|
newFile.close();
|
||||||
|
|
||||||
|
return API_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
* @brief checkSpecialProcessState
|
* @brief checkSpecialProcessState
|
||||||
|
@ -398,6 +398,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
int buildSystemTables();
|
int buildSystemTables();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@brief configure Module fucntionality
|
||||||
|
*/
|
||||||
|
int configureModule(std::string configureModuleName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*@brief reconfigure Module fucntionality
|
*@brief reconfigure Module fucntionality
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user