1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

A preparatory patch for MCOL-4170 Refactor services/systemd units to finish their bootstrap ...

Moving the main service code in BRM/slavenode.cpp into a separate function.
This commit is contained in:
Alexander Barkov
2020-11-06 15:44:58 +04:00
parent f171867c57
commit e4d072f573

View File

@ -97,34 +97,13 @@ static void setupSignalHandlers()
} }
int main(int argc, char** argv) static int child(const string& nodeName)
{ {
// Set locale language setupSignalHandlers();
setlocale(LC_ALL, "");
setlocale(LC_NUMERIC, "C");
BRM::logInit ( BRM::SubSystemLogId_workerNode );
string nodeName;
SlaveDBRMNode slave; SlaveDBRMNode slave;
string arg;
int err = 0;
ShmKeys keys; ShmKeys keys;
if (argc < 2)
{
ostringstream os;
os << "Usage: " << argv[0] << " DBRM_WorkerN";
cerr << os.str() << endl;
log(os.str());
fail();
exit(1);
}
idbdatafile::IDBPolicy::configIDBPolicy();
nodeName = argv[1];
try try
{ {
comm = new SlaveComm(nodeName, &slave); comm = new SlaveComm(nodeName, &slave);
@ -139,51 +118,76 @@ int main(int argc, char** argv)
exit(1); exit(1);
} }
setupSignalHandlers(); /* Start 4 threads to monitor write lock state */
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getEMFLLockStatus(), keys.KEYRANGE_EMFREELIST_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getEMLockStatus(), keys.KEYRANGE_EXTENTMAP_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getVBBMLockStatus(), keys.KEYRANGE_VBBM_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getVSSLockStatus(), keys.KEYRANGE_VSS_BASE));
try
{
oam::Oam oam;
oam.processInitComplete("DBRMWorkerNode");
}
catch (exception& e)
{
ostringstream os;
os << "failed to notify OAM: " << e.what();
os << " continuing anyway";
cerr << os.str() << endl;
log(os.str(), logging::LOG_TYPE_WARNING);
}
try
{
comm->run();
}
catch (exception& e)
{
ostringstream os;
os << "An error occurred: " << e.what();
cerr << os.str() << endl;
log(os.str());
return 1;
}
return 0;
}
int main(int argc, char** argv)
{
// Set locale language
setlocale(LC_ALL, "");
setlocale(LC_NUMERIC, "C");
BRM::logInit ( BRM::SubSystemLogId_workerNode );
string arg;
int err = 0;
if (argc < 2)
{
ostringstream os;
os << "Usage: " << argv[0] << " DBRM_WorkerN";
cerr << os.str() << endl;
log(os.str());
fail();
exit(1);
}
idbdatafile::IDBPolicy::configIDBPolicy();
if (!(argc >= 3 && (arg = argv[2]) == "fg")) if (!(argc >= 3 && (arg = argv[2]) == "fg"))
err = fork(); err = fork();
if (err == 0) if (err == 0)
{ {
return child(argv[1]);
/* Start 4 threads to monitor write lock state */
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getEMFLLockStatus(), keys.KEYRANGE_EMFREELIST_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getEMLockStatus(), keys.KEYRANGE_EXTENTMAP_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getVBBMLockStatus(), keys.KEYRANGE_VBBM_BASE));
monitorThreads.create_thread(RWLockMonitor
(&die, slave.getVSSLockStatus(), keys.KEYRANGE_VSS_BASE));
try
{
oam::Oam oam;
oam.processInitComplete("DBRMWorkerNode");
}
catch (exception& e)
{
ostringstream os;
os << "failed to notify OAM: " << e.what();
os << " continuing anyway";
cerr << os.str() << endl;
log(os.str(), logging::LOG_TYPE_WARNING);
}
try
{
comm->run();
}
catch (exception& e)
{
ostringstream os;
os << "An error occurred: " << e.what();
cerr << os.str() << endl;
log(os.str());
exit(1);
}
} }
else if (err < 0) else if (err < 0)
{ {