mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
wl1292 - workaround for mgmsrv node id problems
ndb/src/cw/cpcd/Makefile.am: Put cpcd in libexec ndb/src/cw/cpcd/Process.cpp: Fixed reverse check with ulimit ndb/test/run-test/main.cpp: Restart mgm server aswell on test failure. Removes problems with nodeid
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
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
|
|||||||
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){
|
|||||||
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){
|
|||||||
*/
|
*/
|
||||||
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;
|
goto end;
|
||||||
|
|
||||||
|
if(!connect_ndb_mgm(g_config)){
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user