diff --git a/exemgr/main.cpp b/exemgr/main.cpp index 9f67d24ab..0b63388d3 100644 --- a/exemgr/main.cpp +++ b/exemgr/main.cpp @@ -1345,25 +1345,44 @@ int main(int argc, char* argv[]) #endif setupSignalHandlers(); int err = setupResources(); + string errMsg; switch (err) { case -1: case -3: - cerr << "Error getting file limits, please see non-root install documentation" << endl; - return -1; + errMsg = "Error getting file limits, please see non-root install documentation"; break; case -2: - cerr << "Error setting file limits, please see non-root install documentation" << endl; - return -1; + errMsg = "Error setting file limits, please see non-root install documentation"; break; case -4: - cerr << "Could not install file limits to required value, please see non-root install documentation" << endl; - return -1; + errMsg = "Could not install file limits to required value, please see non-root install documentation"; break; default: break; } + if (err < 0) + { + Oam oam; + logging::Message::Args args; + logging::Message message; + args.add( errMsg ); + message.format(args); + logging::LoggingID lid(16); + logging::MessageLog ml(lid); + ml.logCriticalMessage( message ); + cerr << errMsg << endl; + try + { + oam.processInitFailure(); + } + catch (...) + { + } + return 2; + } + setupCwd(rm); diff --git a/primitives/primproc/primproc.cpp b/primitives/primproc/primproc.cpp index a43177351..33a987a0c 100644 --- a/primitives/primproc/primproc.cpp +++ b/primitives/primproc/primproc.cpp @@ -297,24 +297,36 @@ int main(int argc, char* argv[]) mlp = new primitiveprocessor::Logger(); int err = setupResources(); + string errMsg; switch (err) { case -1: case -3: - cerr << "Error getting file limits, please see non-root install documentation" << endl; - return -1; + errMsg = "Error getting file limits, please see non-root install documentation"; break; case -2: - cerr << "Error setting file limits, please see non-root install documentation" << endl; - return -1; + errMsg = "Error setting file limits, please see non-root install documentation"; break; case -4: - cerr << "Could not install file limits to required value, please see non-root install documentation" << endl; - return -1; + errMsg = "Could not install file limits to required value, please see non-root install documentation"; break; default: break; } + if (err < 0) + { + Oam oam; + mlp->logMessage(errMsg); + cerr << errMsg << endl; + try + { + oam.processInitFailure(); + } + catch (...) + { + } + return 2; + } int serverThreads = 1; int serverQueueSize = 10; diff --git a/writeengine/server/we_server.cpp b/writeengine/server/we_server.cpp index a6dacb3c1..5b698fce9 100644 --- a/writeengine/server/we_server.cpp +++ b/writeengine/server/we_server.cpp @@ -130,27 +130,7 @@ int main(int argc, char** argv) idbdatafile::IDBPolicy::configIDBPolicy(); #endif Config weConfig; - int err = setupResources(); - switch (err) - { - case -1: - case -3: - cerr << "Error getting file limits, please see non-root install documentation" << endl; - return -1; - break; - case -2: - cerr << "Error setting file limits, please see non-root install documentation" << endl; - return -1; - break; - case -4: - cerr << "Could not install file limits to required value, please see non-root install documentation" << endl; - return -1; - break; - default: - break; - } - ostringstream serverParms; serverParms << "pm" << weConfig.getLocalModuleID() << "_WriteEngineServer"; @@ -205,6 +185,45 @@ int main(int argc, char** argv) } } + int err = setupResources(); + string errMsg; + switch (err) + { + case -1: + case -3: + errMsg = "Error getting file limits, please see non-root install documentation"; + break; + case -2: + errMsg = "Error setting file limits, please see non-root install documentation"; + break; + case -4: + errMsg = "Could not install file limits to required value, please see non-root install documentation"; + break; + default: + break; + } + if (err < 0) + { + Oam oam; + logging::Message::Args args; + logging::Message message; + args.add( errMsg ); + message.format(args); + logging::LoggingID lid(SUBSYSTEM_ID_WE_SRV); + logging::MessageLog ml(lid); + ml.logCriticalMessage( message ); + cerr << errMsg << endl; + try + { + oam.processInitFailure(); + } + catch (...) + { + } + return 2; + } + + IOSocket ios; size_t mt = 20; size_t qs = mt * 100;