wl1292 - workaround for mgmsrv node id problems

parent 90a0345a
ndbtools_PROGRAMS = ndb_cpcd ndbbin_PROGRAMS = ndb_cpcd
ndb_cpcd_SOURCES = main.cpp CPCD.cpp Process.cpp APIService.cpp Monitor.cpp common.cpp ndb_cpcd_SOURCES = main.cpp CPCD.cpp Process.cpp APIService.cpp Monitor.cpp common.cpp
......
...@@ -209,49 +209,45 @@ int ...@@ -209,49 +209,45 @@ int
set_ulimit(const BaseString & pair){ set_ulimit(const BaseString & pair){
#ifdef HAVE_GETRLIMIT #ifdef HAVE_GETRLIMIT
errno = 0; errno = 0;
do { Vector<BaseString> list;
Vector<BaseString> list; pair.split(list, ":");
pair.split(list, ":"); if(list.size() != 2){
if(list.size() != 2){ logger.error("Unable to process ulimit: split >%s< list.size()=%d",
break; pair.c_str(), list.size());
} return -1;
}
int res;
rlim_t value = RLIM_INFINITY; int res;
if(!(list[1].trim() == "unlimited")){ rlim_t value = RLIM_INFINITY;
value = atoi(list[1].c_str()); if(!(list[1].trim() == "unlimited")){
} value = atoi(list[1].c_str());
}
struct rlimit rlp;
struct rlimit rlp;
#define _RLIMIT_FIX(x) { res = getrlimit(x,&rlp); if(!res){ rlp.rlim_cur = value; res = setrlimit(x, &rlp); }} #define _RLIMIT_FIX(x) { res = getrlimit(x,&rlp); if(!res){ rlp.rlim_cur = value; res = setrlimit(x, &rlp); }}
if(list[0].trim() == "c"){ if(list[0].trim() == "c"){
_RLIMIT_FIX(RLIMIT_CORE); _RLIMIT_FIX(RLIMIT_CORE);
} else if(list[0] == "d"){ } else if(list[0] == "d"){
_RLIMIT_FIX(RLIMIT_DATA); _RLIMIT_FIX(RLIMIT_DATA);
} else if(list[0] == "f"){ } else if(list[0] == "f"){
_RLIMIT_FIX(RLIMIT_FSIZE); _RLIMIT_FIX(RLIMIT_FSIZE);
} else if(list[0] == "n"){ } else if(list[0] == "n"){
_RLIMIT_FIX(RLIMIT_NOFILE); _RLIMIT_FIX(RLIMIT_NOFILE);
} else if(list[0] == "s"){ } else if(list[0] == "s"){
_RLIMIT_FIX(RLIMIT_STACK); _RLIMIT_FIX(RLIMIT_STACK);
} else if(list[0] == "t"){ } else if(list[0] == "t"){
_RLIMIT_FIX(RLIMIT_CPU); _RLIMIT_FIX(RLIMIT_CPU);
} else { } else {
errno = EINVAL; errno = EINVAL;
break; }
} if(res){
if(!res) logger.error("Unable to process ulimit: %s res=%d error=%d(%s)",
break; pair.c_str(), res, errno, strerror(errno));
return -1;
return 0; }
} while(false);
logger.error("Unable to process ulimit: %s(%s)",
pair.c_str(), strerror(errno));
return -1;
#else
return 0; // Maybe it's ok anyway...
#endif #endif
return 0;
} }
void void
......
...@@ -106,13 +106,6 @@ main(int argc, const char ** argv){ ...@@ -106,13 +106,6 @@ main(int argc, const char ** argv){
if(!setup_hosts(g_config)) if(!setup_hosts(g_config))
goto end; goto end;
if(!start_processes(g_config, atrt_process::NDB_MGM))
goto end;
if(!connect_ndb_mgm(g_config)){
goto end;
}
/** /**
* Main loop * Main loop
*/ */
...@@ -122,25 +115,32 @@ main(int argc, const char ** argv){ ...@@ -122,25 +115,32 @@ main(int argc, const char ** argv){
*/ */
if(restart){ if(restart){
g_logger.info("(Re)starting ndb processes"); g_logger.info("(Re)starting ndb processes");
if(!stop_processes(g_config, atrt_process::NDB_MGM))
goto end;
if(!stop_processes(g_config, atrt_process::NDB_DB)) if(!stop_processes(g_config, atrt_process::NDB_DB))
goto end; goto end;
if(!wait_ndb(g_config, NDB_MGM_NODE_STATUS_NO_CONTACT)) if(!start_processes(g_config, atrt_process::NDB_MGM))
goto end;
if(!connect_ndb_mgm(g_config)){
goto end; goto end;
}
if(!start_processes(g_config, atrt_process::NDB_DB)) if(!start_processes(g_config, atrt_process::NDB_DB))
goto end; goto end;
if(!wait_ndb(g_config, NDB_MGM_NODE_STATUS_NOT_STARTED)) if(!wait_ndb(g_config, NDB_MGM_NODE_STATUS_NOT_STARTED))
goto end; goto end;
for(Uint32 i = 0; i<3; i++) for(Uint32 i = 0; i<3; i++)
if(wait_ndb(g_config, NDB_MGM_NODE_STATUS_STARTED)) if(wait_ndb(g_config, NDB_MGM_NODE_STATUS_STARTED))
goto started; goto started;
goto end; goto end;
started: started:
g_logger.info("Ndb start completed"); g_logger.info("Ndb start completed");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment