You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-25 20:23:16 +03:00
um failover changes
This commit is contained in:
@@ -835,16 +835,18 @@ void processMSG(messageqcpp::IOSocket* cfIos)
|
|||||||
status = processManager.disableModule(moduleName, true);
|
status = processManager.disableModule(moduleName, true);
|
||||||
log.writeLog(__LINE__, "Disable Module Completed on " + moduleName, LOG_TYPE_INFO);
|
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
|
//call dbrm control
|
||||||
oam.dbrmctl("reload");
|
// oam.dbrmctl("reload");
|
||||||
log.writeLog(__LINE__, "'dbrmctl reload' done", LOG_TYPE_DEBUG);
|
// log.writeLog(__LINE__, "'dbrmctl reload' done", LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
// resume the dbrm
|
// resume the dbrm
|
||||||
oam.dbrmctl("resume");
|
oam.dbrmctl("resume");
|
||||||
log.writeLog(__LINE__, "'dbrmctl resume' done", LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "'dbrmctl resume' done", LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
//check for SIMPLEX Processes on mate might need to be started
|
|
||||||
processManager.checkSimplexModule(moduleName);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3299,6 +3301,8 @@ int ProcessManager::disableModule(string target, bool manualFlag)
|
|||||||
// update state to MAN_DISABLED
|
// update state to MAN_DISABLED
|
||||||
|
|
||||||
if (opState == oam::AUTO_DISABLED && newState == oam::MAN_DISABLED) {
|
if (opState == oam::AUTO_DISABLED && newState == oam::MAN_DISABLED) {
|
||||||
|
//removemodule to get proess in MAN_OFFLINE
|
||||||
|
stopModule(target, REMOVE, true);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -3351,7 +3355,7 @@ int ProcessManager::disableModule(string target, bool manualFlag)
|
|||||||
|
|
||||||
setModuleState(target, newState);
|
setModuleState(target, newState);
|
||||||
|
|
||||||
//set Columnstore.xml enbale state
|
//set Columnstore.xml enable state
|
||||||
setEnableState( target, SnewState);
|
setEnableState( target, SnewState);
|
||||||
|
|
||||||
log.writeLog(__LINE__, "disableModule - setEnableState", LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "disableModule - setEnableState", LOG_TYPE_DEBUG);
|
||||||
@@ -3435,18 +3439,18 @@ void ProcessManager::recycleProcess(string module, bool enableModule)
|
|||||||
restartProcessType("PrimProc");
|
restartProcessType("PrimProc");
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
restartProcessType("ExeMgr");
|
|
||||||
sleep(1);
|
|
||||||
|
|
||||||
restartProcessType("mysqld");
|
restartProcessType("mysqld");
|
||||||
|
|
||||||
restartProcessType("WriteEngineServer");
|
restartProcessType("WriteEngineServer");
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
restartProcessType("DDLProc",module);
|
startProcessType("ExeMgr");
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
restartProcessType("DMLProc",module);
|
startProcessType("DDLProc");
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
|
startProcessType("DMLProc");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -4156,7 +4160,8 @@ int ProcessManager::stopProcessType( std::string processName, bool manualFlag )
|
|||||||
{
|
{
|
||||||
if ( systemprocessstatus.processstatus[i].ProcessName == processName) {
|
if ( systemprocessstatus.processstatus[i].ProcessName == processName) {
|
||||||
//skip if in a COLD_STANDBY state
|
//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;
|
continue;
|
||||||
|
|
||||||
// found one, request restart of it
|
// found one, request restart of it
|
||||||
@@ -4286,10 +4291,15 @@ int ProcessManager::restartProcessType( std::string processName, std::string ski
|
|||||||
{
|
{
|
||||||
if ( systemprocessstatus.processstatus[i].ProcessName == processName ) {
|
if ( systemprocessstatus.processstatus[i].ProcessName == processName ) {
|
||||||
//skip if in a BUSY_INIT state
|
//skip if in a BUSY_INIT state
|
||||||
if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::BUSY_INIT ||
|
// if ( systemprocessstatus.processstatus[i].ProcessOpState == oam::BUSY_INIT ||
|
||||||
systemprocessstatus.processstatus[i].ProcessOpState == oam::AUTO_INIT ||
|
// systemprocessstatus.processstatus[i].ProcessOpState == oam::MAN_OFFLINE ||
|
||||||
systemprocessstatus.processstatus[i].ProcessOpState == oam::MAN_INIT ||
|
// systemprocessstatus.processstatus[i].ProcessOpState == oam::AUTO_OFFLINE ||
|
||||||
( systemprocessstatus.processstatus[i].ProcessOpState == oam::COLD_STANDBY && !manualFlag ) )
|
// 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;
|
continue;
|
||||||
|
|
||||||
if ( (processName.find("DDLProc") == 0 || processName.find("DMLProc") == 0) )
|
if ( (processName.find("DDLProc") == 0 || processName.find("DMLProc") == 0) )
|
||||||
@@ -7539,18 +7549,18 @@ void ProcessManager::checkSimplexModule(std::string moduleName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( state == oam::COLD_STANDBY ) {
|
if ( state == oam::COLD_STANDBY ) {
|
||||||
//set Primary UM Module
|
//process DDL/DMLProc
|
||||||
if ( systemprocessconfig.processconfig[j].ProcessName == "DDLProc" ) {
|
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);
|
oam.setSystemConfig("PrimaryUMModuleName", (*pt).DeviceName);
|
||||||
|
|
||||||
//distribute config file
|
//distribute config file
|
||||||
distributeConfigFile("system");
|
distributeConfigFile("system");
|
||||||
sleep(2);
|
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,
|
int status = processManager.startProcess((*pt).DeviceName,
|
||||||
@@ -7559,12 +7569,24 @@ void ProcessManager::checkSimplexModule(std::string moduleName)
|
|||||||
if ( status == API_SUCCESS ) {
|
if ( status == API_SUCCESS ) {
|
||||||
log.writeLog(__LINE__, "checkSimplexModule: mate process started: " + (*pt).DeviceName + "/" + systemprocessconfig.processconfig[j].ProcessName, LOG_TYPE_DEBUG);
|
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
|
status = processManager.startProcess((*pt).DeviceName,
|
||||||
if ( systemprocessconfig.processconfig[j].ProcessName == "DDLProc" )
|
"DMLProc",
|
||||||
setPMProcIPs((*pt).DeviceName);
|
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
|
else
|
||||||
log.writeLog(__LINE__, "checkSimplexModule: mate process failed to start: " + (*pt).DeviceName + "/" + systemprocessconfig.processconfig[j].ProcessName, LOG_TYPE_DEBUG);
|
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
|
else
|
||||||
{ // if found ACTIVE, skip to next process
|
{ // if found ACTIVE, skip to next process
|
||||||
|
|||||||
Reference in New Issue
Block a user