Below is the list of changes that have just been committed into a local
5.1 repository of root. When root does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-11-26 13:23:13-06:00, jmiller@stripped +2 -0
main.cpp, setup.cpp:
Fixed code formatting and added additional info, debug and error messages
storage/ndb/test/run-test/main.cpp@stripped, 2007-11-26 13:22:54-06:00, jmiller@stripped +189 -214
Fixed code formatting and added additional info, debug and error messages
storage/ndb/test/run-test/setup.cpp@stripped, 2007-11-26 13:23:03-06:00, jmiller@stripped +290 -415
Fixed code formatting and added additional info, debug and error messages
diff -Nrup a/storage/ndb/test/run-test/main.cpp b/storage/ndb/test/run-test/main.cpp
--- a/storage/ndb/test/run-test/main.cpp 2007-08-01 02:23:55 -05:00
+++ b/storage/ndb/test/run-test/main.cpp 2007-11-26 13:22:54 -06:00
@@ -140,8 +140,7 @@ const int p_servers = atrt_process::AP_M
const int p_clients = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
int
-main(int argc, char ** argv)
-{
+main(int argc, char ** argv){
ndb_init();
bool restart = true;
@@ -159,9 +158,11 @@ main(int argc, char ** argv)
g_logger.info("Starting...");
g_config.m_generated = false;
g_config.m_replication = g_replicate;
+ g_logger.info("Running Setup Configuration");
if (!setup_config(g_config))
goto end;
+ g_logger.info("Running configure");
if (!configure(g_config, g_do_setup))
goto end;
@@ -169,37 +170,35 @@ main(int argc, char ** argv)
if (!setup_directories(g_config, g_do_setup))
goto end;
- if (g_do_setup)
- {
+ if (g_do_setup){
g_logger.info("Setting up files");
if (!setup_files(g_config, g_do_setup, g_do_sshx))
goto end;
}
- if (g_do_deploy)
- {
+ if (g_do_deploy){
+ g_logger.info("Running deploy");
if (!deploy(g_config))
goto end;
}
- if (g_do_quit)
- {
+ if (g_do_quit){
return_code = 0;
goto end;
}
- if(!setup_hosts(g_config))
+ if(!setup_hosts(g_config)){
+ g_logger.info("Setting up hosts");
goto end;
+ }
- if (g_do_sshx)
- {
+ if (g_do_sshx){
g_logger.info("Starting xterm-ssh");
if (!sshx(g_config, g_do_sshx))
goto end;
g_logger.info("Done...sleeping");
- while(true)
- {
+ while(true){
NdbSleep_SecSleep(1);
}
return_code = 0;
@@ -210,15 +209,13 @@ main(int argc, char ** argv)
if(!connect_hosts(g_config))
goto end;
- if (g_do_start && !g_test_case_filename)
- {
+ if (g_do_start && !g_test_case_filename){
g_logger.info("Starting server processes: %x", g_do_start);
if (!start(g_config, g_do_start))
goto end;
g_logger.info("Done...sleeping");
- while(true)
- {
+ while(true){
NdbSleep_SecSleep(1);
}
return_code = 0;
@@ -237,35 +234,42 @@ main(int argc, char ** argv)
if(restart){
g_logger.info("(Re)starting server processes processes");
if(!stop_processes(g_config, ~0))
- goto end;
+ goto end;
+ g_logger.info("Setting up Directories");
if (!setup_directories(g_config, 2))
- goto end;
-
+ goto end;
+
+ g_logger.info("Setting up Files");
if (!setup_files(g_config, 2, 1))
- goto end;
+ goto end;
+ g_logger.info("Setting up Hosts");
if(!setup_hosts(g_config))
goto end;
-
+
+ g_logger.info("Starting Servers");
if (!start(g_config, p_ndb | p_servers))
- goto end;
+ goto end;
g_logger.info("All servers start completed");
}
// const int start_line = lineno;
atrt_testcase test_case;
+ g_logger.info("Reading Test Case");
if(!read_test_case(g_test_case_file, test_case, lineno))
goto end;
- g_logger.info("#%d - %s %s",
- test_no,
- test_case.m_command.c_str(), test_case.m_args.c_str());
+ g_logger.info("#%d - %s %s",test_no,
+ test_case.m_command.c_str(),
+ test_case.m_args.c_str());
// Assign processes to programs
+ g_logger.info("Setting up Test Case");
if(!setup_test_case(g_config, test_case))
goto end;
+ g_logger.info("Starting client process(es)");
if(!start_processes(g_config, p_clients))
goto end;
@@ -274,29 +278,32 @@ main(int argc, char ** argv)
const time_t start = time(0);
time_t now = start;
do {
- if(!update_status(g_config, atrt_process::AP_ALL))
- goto end;
-
+ if(!update_status(g_config, atrt_process::AP_ALL)){
+ g_logger.error("Update status failed");
+ goto end;
+ }
int count = 0;
-
if((count = is_running(g_config, p_ndb)) != 2){
- result = ERR_NDB_FAILED;
- break;
+ result = ERR_NDB_FAILED;
+ g_logger.debug("setting result = ERR_NDB_FAILED");
+ break;
}
if((count = is_running(g_config, p_servers)) != 2){
- result = ERR_SERVERS_FAILED;
- break;
+ result = ERR_SERVERS_FAILED;
+ g_logger.debug("setting result = ERR_SERVERS_FAILED");
+ break;
}
if((count = is_running(g_config, p_clients)) == 0){
- break;
+ break;
}
now = time(0);
if(now > (start + test_case.m_max_time)){
- result = ERR_MAX_TIME_ELAPSED;
- break;
+ result = ERR_MAX_TIME_ELAPSED;
+ g_logger.debug("setting result = ERR_MAX_TIME_ELAPSED");
+ break;
}
NdbSleep_SecSleep(1);
} while(true);
@@ -322,7 +329,7 @@ main(int argc, char ** argv)
if(g_mode == 0 && result){
g_logger.info
- ("Encountered failed test in interactive mode - terminating");
+ ("Encountered failed test in interactive mode - terminating");
break;
}
@@ -330,23 +337,21 @@ main(int argc, char ** argv)
resdir.assfmt("result.%d", test_no);
remove_dir(resdir.c_str(), true);
- if(test_case.m_report || g_mode == 2 || (g_mode && result))
- {
- if(rename("result", resdir.c_str()) != 0)
- {
- g_logger.critical("Failed to rename %s as %s",
- "result", resdir.c_str());
- goto end;
+ if(test_case.m_report || g_mode == 2 || (g_mode && result)){
+ if(rename("result", resdir.c_str()) != 0){
+ g_logger.critical("Failed to rename %s as %s",
+ "result", resdir.c_str());
+ goto end;
}
}
- else
- {
+ else{
remove_dir("result", true);
}
if(result != 0){
restart = true;
- } else {
+ }
+ else {
restart = false;
}
test_no++;
@@ -369,24 +374,20 @@ main(int argc, char ** argv)
static
my_bool
-get_one_option(int arg, const struct my_option * opt, char * value)
-{
- if (arg == 1024)
- {
+get_one_option(int arg, const struct my_option * opt, char * value){
+ if (arg == 1024){
if (g_replicate.length())
g_replicate.append(";");
- g_replicate.append(value);
- return 1;
+ g_replicate.append(value);
+ return 1;
}
return 0;
}
bool
-parse_args(int argc, char** argv)
-{
+parse_args(int argc, char** argv){
char buf[2048];
- if (getcwd(buf, sizeof(buf)) == 0)
- {
+ if (getcwd(buf, sizeof(buf)) == 0){
g_logger.error("Unable to get current working directory");
return false;
}
@@ -394,19 +395,16 @@ parse_args(int argc, char** argv)
struct stat sbuf;
BaseString mycnf;
- if (argc > 1 && lstat(argv[argc-1], &sbuf) == 0)
- {
+ if (argc > 1 && lstat(argv[argc-1], &sbuf) == 0){
mycnf.append(g_cwd);
mycnf.append(PATH_SEPARATOR);
mycnf.append(argv[argc-1]);
}
- else
- {
+ else{
mycnf.append(g_cwd);
mycnf.append(PATH_SEPARATOR);
mycnf.append("my.cnf");
- if (lstat(mycnf.c_str(), &sbuf) != 0)
- {
+ if (lstat(mycnf.c_str(), &sbuf) != 0){
g_logger.error("Unable to stat %s", mycnf.c_str());
return false;
}
@@ -421,62 +419,56 @@ parse_args(int argc, char** argv)
save_extra_file = my_defaults_extra_file;
save_group_suffix = my_defaults_group_suffix;
- if (save_extra_file)
- {
- g_logger.error("--defaults-extra-file(%s) is not supported...",
- save_extra_file);
+ if (save_extra_file){
+ g_logger.error("--defaults-extra-file(%s) is not supported...",save_extra_file);
return false;
}
- if (ret || handle_options(&argc, &argv, g_options, get_one_option))
- {
+ if (ret || handle_options(&argc, &argv, g_options, get_one_option)){
g_logger.error("Failed to load defaults/handle_options");
return false;
}
- if (argc >= 2)
- {
+ if (argc >= 2){
const char * arg = argv[argc-2];
- while(* arg)
- {
+ while(* arg){
switch(* arg){
- case 'c':
- g_do_setup = (g_do_setup == 0) ? 1 : g_do_setup;
- break;
- case 'C':
- g_do_setup = 2;
- break;
- case 'd':
- g_do_deploy = 1;
- break;
- case 'x':
- g_do_sshx = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
- break;
- case 'X':
- g_do_sshx = atrt_process::AP_ALL;
- break;
- case 's':
- g_do_start = p_ndb;
- break;
- case 'S':
- g_do_start = p_ndb | p_servers;
- break;
- case 'f':
- g_fqpn = 1;
- break;
- case 'q':
- g_do_quit = 1;
- break;
- default:
- g_logger.error("Unknown switch '%c'", *arg);
- return false;
+ case 'c':
+ g_do_setup = (g_do_setup == 0) ? 1 : g_do_setup;
+ break;
+ case 'C':
+ g_do_setup = 2;
+ break;
+ case 'd':
+ g_do_deploy = 1;
+ break;
+ case 'x':
+ g_do_sshx = atrt_process::AP_CLIENT | atrt_process::AP_NDB_API;
+ break;
+ case 'X':
+ g_do_sshx = atrt_process::AP_ALL;
+ break;
+ case 's':
+ g_do_start = p_ndb;
+ break;
+ case 'S':
+ g_do_start = p_ndb | p_servers;
+ break;
+ case 'f':
+ g_fqpn = 1;
+ break;
+ case 'q':
+ g_do_quit = 1;
+ break;
+ default:
+ g_logger.error("Unknown switch '%c'", *arg);
+ return false;
}
arg++;
}
}
- if(g_log_filename != 0)
- {
+ if(g_log_filename != 0){
g_logger.removeConsoleHandler();
g_logger.addHandler(new FileLogHandler(g_log_filename));
}
@@ -489,14 +481,12 @@ parse_args(int argc, char** argv)
g_logger.enable((Logger::LoggerLevel)tmp, Logger::LL_ALERT);
}
- if(!g_basedir)
- {
+ if(!g_basedir){
g_basedir = g_cwd;
g_logger.info("basedir not specified, using %s", g_basedir);
}
- if (!g_prefix)
- {
+ if (!g_prefix){
g_prefix = DEFAULT_PREFIX;
}
@@ -506,31 +496,25 @@ parse_args(int argc, char** argv)
{
BaseString tmp;
const char* env = getenv("PATH");
- if (env && strlen(env))
- {
- tmp.assfmt("PATH=%s:%s/mysql-test/ndb",
- env, g_prefix);
+ if (env && strlen(env)){
+ tmp.assfmt("PATH=%s:%s/mysql-test/ndb",env, g_prefix);
}
- else
- {
+ else{
tmp.assfmt("PATH=%s/mysql-test/ndb", g_prefix);
}
g_env_path = strdup(tmp.c_str());
putenv(g_env_path);
}
- if (g_help)
- {
+ if (g_help){
my_print_help(g_options);
my_print_variables(g_options);
return 0;
}
- if(g_test_case_filename)
- {
+ if(g_test_case_filename){
g_test_case_file = fopen(g_test_case_filename, "r");
- if(g_test_case_file == 0)
- {
+ if(g_test_case_file == 0){
g_logger.critical("Unable to open file: %s", g_test_case_filename);
return false;
}
@@ -543,27 +527,23 @@ parse_args(int argc, char** argv)
if (g_mode == 0)
g_mode = 1;
- if (g_do_sshx)
- {
+ if (g_do_sshx){
g_logger.critical("ssx specified...not possible with testfile");
return false;
}
}
- if (g_do_setup == 0)
- {
+ if (g_do_setup == 0){
BaseString tmp;
tmp.append(g_basedir);
tmp.append(PATH_SEPARATOR);
tmp.append("my.cnf");
- if (lstat(tmp.c_str(), &sbuf) != 0)
- {
+ if (lstat(tmp.c_str(), &sbuf) != 0){
g_logger.error("Unable to stat %s", tmp.c_str());
return false;
}
- if (!S_ISREG(sbuf.st_mode))
- {
+ if (!S_ISREG(sbuf.st_mode)){
g_logger.error("%s is not a regular file", tmp.c_str());
return false;
}
@@ -571,31 +551,26 @@ parse_args(int argc, char** argv)
g_my_cnf = strdup(tmp.c_str());
g_logger.info("Using %s", tmp.c_str());
}
- else
- {
+ else{
g_my_cnf = strdup(mycnf.c_str());
}
g_logger.info("Using --prefix=\"%s\"", g_prefix);
- if(g_report_filename)
- {
+ if(g_report_filename){
g_report_file = fopen(g_report_filename, "w");
- if(g_report_file == 0)
- {
+ if(g_report_file == 0){
g_logger.critical("Unable to create report file: %s", g_report_filename);
return false;
}
}
- if (g_clusters == 0)
- {
+ if (g_clusters == 0){
g_logger.critical("No clusters specified");
return false;
}
g_user = strdup(getenv("LOGNAME"));
-
return true;
}
@@ -612,7 +587,6 @@ connect_hosts(atrt_config& config){
config.m_hosts[i]->m_cpcd->getHost(),
config.m_hosts[i]->m_cpcd->getPort());
}
-
return true;
}
@@ -627,19 +601,14 @@ connect_ndb_mgm(atrt_process & proc){
const char * val;
proc.m_options.m_loaded.get("--PortNumber=", &val);
tmp.appfmt(":%s", val);
-
- if (ndb_mgm_set_connectstring(handle,tmp.c_str()))
- {
+ if (ndb_mgm_set_connectstring(handle,tmp.c_str())){
g_logger.critical("Unable to create parse connectstring");
return false;
}
-
- if(ndb_mgm_connect(handle, 30, 1, 0) != -1)
- {
+ if(ndb_mgm_connect(handle, 30, 1, 0) != -1){
proc.m_ndb_mgm_handle = handle;
return true;
}
-
g_logger.critical("Unable to connect to ndb mgm %s", tmp.c_str());
return false;
}
@@ -650,11 +619,11 @@ connect_ndb_mgm(atrt_config& config){
atrt_process & proc = *config.m_processes[i];
if((proc.m_type & atrt_process::AP_NDB_MGMD) != 0){
if(!connect_ndb_mgm(proc)){
- return false;
+ g_logger.error("connect_ndb_mgm failed");
+ return false;
}
}
}
-
return true;
}
@@ -670,6 +639,7 @@ wait_ndb(atrt_config& config, int goal){
goal = remap(goal);
size_t cnt = 0;
+ g_logger.debug("Inside of wait_ndb()");
for (size_t i = 0; i<config.m_clusters.size(); i++)
{
atrt_cluster* cluster = config.m_clusters[i];
@@ -680,8 +650,8 @@ wait_ndb(atrt_config& config, int goal){
for(size_t j = 0; j<cluster->m_processes.size(); j++){
atrt_process & proc = *cluster->m_processes[j];
if((proc.m_type & atrt_process::AP_NDB_MGMD) != 0){
- handle = proc.m_ndb_mgm_handle;
- break;
+ handle = proc.m_ndb_mgm_handle;
+ break;
}
}
@@ -697,8 +667,7 @@ wait_ndb(atrt_config& config, int goal){
* 3) wait STARTED
*/
if(!wait_ndb(config, NDB_MGM_NODE_STATUS_NOT_STARTED))
- return false;
-
+ return false;
ndb_mgm_start(handle, 0, 0);
}
@@ -715,50 +684,47 @@ wait_ndb(atrt_config& config, int goal){
*/
state = 0;
do {
- state = ndb_mgm_get_status(handle);
- if(state == 0){
- const int err = ndb_mgm_get_latest_error(handle);
- g_logger.error("Unable to poll db state: %d %s %s",
- ndb_mgm_get_latest_error(handle),
- ndb_mgm_get_latest_error_msg(handle),
- ndb_mgm_get_latest_error_desc(handle));
- if(err == NDB_MGM_SERVER_NOT_CONNECTED && connect_ndb_mgm(config)){
- g_logger.error("Reconnected...");
- continue;
- }
- return false;
- }
+ state = ndb_mgm_get_status(handle);
+ if(state == 0){
+ const int err = ndb_mgm_get_latest_error(handle);
+ g_logger.error("Unable to poll db state: %d %s %s",
+ ndb_mgm_get_latest_error(handle),
+ ndb_mgm_get_latest_error_msg(handle),
+ ndb_mgm_get_latest_error_desc(handle));
+ if(err == NDB_MGM_SERVER_NOT_CONNECTED && connect_ndb_mgm(config)){
+ g_logger.error("Reconnected...");
+ continue;
+ }
+ return false;
+ }
} while(state == 0);
NdbAutoPtr<void> tmp(state);
min2 = goal;
for(int j = 0; j<state->no_of_nodes; j++){
- if(state->node_states[j].node_type == NDB_MGM_NODE_TYPE_NDB){
- const int s = remap(state->node_states[j].node_status);
- min2 = (min2 < s ? min2 : s );
-
- if(s < remap(NDB_MGM_NODE_STATUS_NO_CONTACT) ||
- s > NDB_MGM_NODE_STATUS_STARTED){
- g_logger.critical("Strange DB status during start: %d %d",
- j, min2);
- return false;
- }
-
- if(min2 < min){
- g_logger.critical("wait ndb failed node: %d %d %d %d",
- state->node_states[j].node_id, min, min2, goal);
- }
- }
+ if(state->node_states[j].node_type == NDB_MGM_NODE_TYPE_NDB){
+ const int s = remap(state->node_states[j].node_status);
+ min2 = (min2 < s ? min2 : s );
+ if(s < remap(NDB_MGM_NODE_STATUS_NO_CONTACT) ||
+ s > NDB_MGM_NODE_STATUS_STARTED){
+ g_logger.critical("Strange DB status during start: %d %d",j, min2);
+ return false;
+ }
+ if(min2 < min){
+ g_logger.critical("wait ndb failed node: %d %d %d %d",
+ state->node_states[j].node_id, min, min2, goal);
+ }
+ }
}
if(min2 < min){
- g_logger.critical("wait ndb failed %d %d %d", min, min2, goal);
- return false;
+ g_logger.critical("wait ndb failed %d %d %d", min, min2, goal);
+ return false;
}
if(min2 == goal){
- cnt++;
- goto next;
+ cnt++;
+ goto next;
}
min = min2;
@@ -778,7 +744,7 @@ next:
bool
start_process(atrt_process & proc){
if(proc.m_proc.m_id != -1){
- g_logger.critical("starting already started process: %d", proc.m_index);
+ g_logger.critical("Process already started: %d", proc.m_index);
return false;
}
@@ -822,7 +788,8 @@ start_processes(atrt_config& config, int
atrt_process & proc = *config.m_processes[i];
if((types & proc.m_type) != 0 && proc.m_proc.m_path != ""){
if(!start_process(proc)){
- return false;
+ g_logger.error("Start Process Failed");
+ return false;
}
}
}
@@ -831,9 +798,8 @@ start_processes(atrt_config& config, int
bool
stop_process(atrt_process & proc){
- if(proc.m_proc.m_id == -1){
+ if(proc.m_proc.m_id == -1)
return true;
- }
{
Properties reply;
@@ -841,10 +807,10 @@ stop_process(atrt_process & proc){
Uint32 status;
reply.get("status", &status);
if(status != 4){
- BaseString msg;
- reply.get("errormessage", msg);
- g_logger.error("Unable to stop process: %s(%d)", msg.c_str(), status);
- return false;
+ BaseString msg;
+ reply.get("errormessage", msg);
+ g_logger.error("Unable to stop process: %s(%d)", msg.c_str(), status);
+ return false;
}
}
}
@@ -867,7 +833,8 @@ stop_processes(atrt_config& config, int
atrt_process & proc = *config.m_processes[i];
if((types & proc.m_type) != 0){
if(!stop_process(proc)){
- return false;
+ g_logger.error("Stop Process Failed");
+ return false;
}
}
}
@@ -892,23 +859,23 @@ update_status(atrt_config& config, int){
Vector<SimpleCpcClient::Process> &h_procs= m_procs[proc.m_host->m_index];
bool found = false;
for(size_t j = 0; j<h_procs.size(); j++){
- if(proc.m_proc.m_id == h_procs[j].m_id){
- found = true;
- proc.m_proc.m_status = h_procs[j].m_status;
- break;
- }
+ if(proc.m_proc.m_id == h_procs[j].m_id){
+ found = true;
+ proc.m_proc.m_status = h_procs[j].m_status;
+ break;
+ }
}
if(!found){
- g_logger.error("update_status: not found");
- g_logger.error("id: %d host: %s cmd: %s",
- proc.m_proc.m_id,
- proc.m_host->m_hostname.c_str(),
- proc.m_proc.m_path.c_str());
- for(size_t j = 0; j<h_procs.size(); j++){
- g_logger.error("found: %d %s", h_procs[j].m_id,
- h_procs[j].m_path.c_str());
- }
- return false;
+ g_logger.error("update_status: not found");
+ g_logger.error("id: %d host: %s cmd: %s",
+ proc.m_proc.m_id,
+ proc.m_host->m_hostname.c_str(),
+ proc.m_proc.m_path.c_str());
+ for(size_t j = 0; j<h_procs.size(); j++){
+ g_logger.error("found: %d %s", h_procs[j].m_id,
+ h_procs[j].m_path.c_str());
+ }
+ return false;
}
}
}
@@ -944,8 +911,10 @@ insert(const char * pair, Properties & p
Vector<BaseString> split;
tmp.split(split, ":=", 2);
- if(split.size() != 2)
+ if(split.size() != 2){
+ g_logger.error("insert split.size != 2");
return -1;
+ }
p.put(split[0].trim().c_str(), split[1].trim().c_str());
@@ -958,6 +927,7 @@ read_test_case(FILE * file, atrt_testcas
Properties p;
int elements = 0;
char buf[1024];
+ g_logger.debug("Reading Test Case file %s",g_test_case_filename);
while(!feof(file)){
if(!fgets(buf, 1024, file))
break;
@@ -988,6 +958,7 @@ read_test_case(FILE * file, atrt_testcas
tc.m_max_time = 60000;
return true;
}
+ g_logger.critical("File != stdin and elements = %d", elements);
return false;
}
@@ -1000,11 +971,15 @@ read_test_case(FILE * file, atrt_testcas
tc.m_args = "";
const char * mt = 0;
- if(!p.get("max-time", &mt))
+ if(!p.get("max-time", &mt)){
tc.m_max_time = 60000;
- else
+ g_logger.debug("tc.m_max_time set to default = %d",tc.m_max_time);
+ }
+ else{
tc.m_max_time = atoi(mt);
-
+ g_logger.debug("tc.m_max_time set to = %d",tc.m_max_time);
+ }
+
if(p.get("type", &mt) && strcmp(mt, "bench") == 0)
tc.m_report= true;
else
diff -Nrup a/storage/ndb/test/run-test/setup.cpp b/storage/ndb/test/run-test/setup.cpp
--- a/storage/ndb/test/run-test/setup.cpp 2007-02-12 19:38:48 -06:00
+++ b/storage/ndb/test/run-test/setup.cpp 2007-11-26 13:23:03 -06:00
@@ -18,8 +18,7 @@ enum {
,PO_REP = (atrt_options::AO_REPLICATION | PO_REP_SLAVE | PO_REP_MASTER)
};
-struct proc_option
-{
+struct proc_option{
const char * name;
int type;
int options;
@@ -46,8 +45,7 @@ struct proc_option f_options[] = {
const char * ndbcs = "--ndb-connectstring=";
bool
-setup_config(atrt_config& config)
-{
+setup_config(atrt_config& config){
BaseString tmp(g_clusters);
Vector<BaseString> clusters;
tmp.split(clusters, ",");
@@ -55,18 +53,15 @@ setup_config(atrt_config& config)
bool fqpn = clusters.size() > 1 || g_fqpn;
size_t j,k;
- for (size_t i = 0; i<clusters.size(); i++)
- {
+ for (size_t i = 0; i<clusters.size(); i++){
struct atrt_cluster *cluster = new atrt_cluster;
config.m_clusters.push_back(cluster);
cluster->m_name = clusters[i];
- if (fqpn)
- {
+ if (fqpn){
cluster->m_dir.assfmt("cluster%s/", cluster->m_name.c_str());
}
- else
- {
+ else{
cluster->m_dir = "";
}
@@ -79,15 +74,13 @@ setup_config(atrt_config& config)
char ** tmp = (char**)argv;
const char *groups[] = { "cluster_config", 0 };
int ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
- if (ret)
- {
+ if (ret){
g_logger.error("Unable to load defaults for cluster: %s",
clusters[i].c_str());
return false;
}
- struct
- {
+ struct{
atrt_process::Type type;
const char * name;
const char * value;
@@ -103,32 +96,27 @@ setup_config(atrt_config& config)
/**
* Find all processes...
*/
- for (j = 0; j<(size_t)argc; j++)
- {
- for (k = 0; proc_args[k].name; k++)
- {
- if (!strncmp(tmp[j], proc_args[k].name, strlen(proc_args[k].name)))
- {
- proc_args[k].value = tmp[j] + strlen(proc_args[k].name);
- break;
- }
+ for (j = 0; j<(size_t)argc; j++){
+ for (k = 0; proc_args[k].name; k++){
+ if (!strncmp(tmp[j], proc_args[k].name, strlen(proc_args[k].name))){
+ proc_args[k].value = tmp[j] + strlen(proc_args[k].name);
+ break;
+ }
}
}
/**
* Load each process
*/
- for (j = 0; proc_args[j].name; j++)
- {
- if (proc_args[j].value)
- {
- BaseString tmp(proc_args[j].value);
- Vector<BaseString> list;
- tmp.split(list, ",");
- for (k = 0; k<list.size(); k++)
- if (!load_process(config, *cluster, proc_args[j].type,
- k + 1, list[k].c_str()))
- return false;
+ for (j = 0; proc_args[j].name; j++){
+ if (proc_args[j].value){
+ BaseString tmp(proc_args[j].value);
+ Vector<BaseString> list;
+ tmp.split(list, ",");
+ for (k = 0; k<list.size(); k++)
+ if (!load_process(config, *cluster, proc_args[j].type,
+ k + 1, list[k].c_str()))
+ return false;
}
}
@@ -142,11 +130,10 @@ setup_config(atrt_config& config)
const char *groups[] = { "mysql_cluster", 0 };
ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
- if (ret)
- {
- g_logger.error("Unable to load defaults for cluster: %s",
- clusters[i].c_str());
- return false;
+ if (ret){
+ g_logger.error("Unable to load defaults for cluster: %s",
+ clusters[i].c_str());
+ return false;
}
load_options(argc, tmp, atrt_process::AP_CLUSTER, cluster->m_options);
@@ -216,42 +203,41 @@ load_process(atrt_config& config, atrt_c
char ** tmp = (char**)argv;
const char *groups[] = { 0, 0, 0, 0 };
switch(type){
- case atrt_process::AP_NDB_MGMD:
- groups[0] = "cluster_config";
- buf[1].assfmt("cluster_config.ndb_mgmd.%d", idx);
- groups[1] = buf[1].c_str();
- buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
- argv[argc++] = buf[0].c_str();
- break;
- case atrt_process::AP_NDBD:
- groups[0] = "cluster_config";
- buf[1].assfmt("cluster_config.ndbd.%d", idx);
- groups[1] = buf[1].c_str();
- buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
- argv[argc++] = buf[0].c_str();
- break;
- case atrt_process::AP_MYSQLD:
- groups[0] = "mysqld";
- groups[1] = "mysql_cluster";
- buf[0].assfmt("--defaults-group-suffix=.%d%s",idx,cluster.m_name.c_str());
- argv[argc++] = buf[0].c_str();
- break;
- case atrt_process::AP_CLIENT:
- buf[0].assfmt("client.%d%s", idx, cluster.m_name.c_str());
- groups[0] = buf[0].c_str();
- break;
- case atrt_process::AP_NDB_API:
- break;
- default:
- g_logger.critical("Unhandled process type: %d", type);
- return false;
+ case atrt_process::AP_NDB_MGMD:
+ groups[0] = "cluster_config";
+ buf[1].assfmt("cluster_config.ndb_mgmd.%d", idx);
+ groups[1] = buf[1].c_str();
+ buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
+ argv[argc++] = buf[0].c_str();
+ break;
+ case atrt_process::AP_NDBD:
+ groups[0] = "cluster_config";
+ buf[1].assfmt("cluster_config.ndbd.%d", idx);
+ groups[1] = buf[1].c_str();
+ buf[0].assfmt("--defaults-group-suffix=%s", cluster.m_name.c_str());
+ argv[argc++] = buf[0].c_str();
+ break;
+ case atrt_process::AP_MYSQLD:
+ groups[0] = "mysqld";
+ groups[1] = "mysql_cluster";
+ buf[0].assfmt("--defaults-group-suffix=.%d%s",idx,cluster.m_name.c_str());
+ argv[argc++] = buf[0].c_str();
+ break;
+ case atrt_process::AP_CLIENT:
+ buf[0].assfmt("client.%d%s", idx, cluster.m_name.c_str());
+ groups[0] = buf[0].c_str();
+ break;
+ case atrt_process::AP_NDB_API:
+ break;
+ default:
+ g_logger.critical("Unhandled process type: %d", type);
+ return false;
}
int ret = load_defaults(g_my_cnf, groups, &argc, &tmp);
- if (ret)
- {
+ if (ret){
g_logger.error("Unable to load defaults for cluster: %s",
- cluster.m_name.c_str());
+ cluster.m_name.c_str());
return false;
}
@@ -263,129 +249,108 @@ load_process(atrt_config& config, atrt_c
cluster.m_dir.c_str());
switch(type){
- case atrt_process::AP_NDB_MGMD:
- {
- proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_mgmd");
- proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndb_mgmd");
- proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
- proc.m_host->m_basedir.c_str());
- proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
- cluster.m_name.c_str());
- proc.m_proc.m_args.append(" --nodaemon --mycnf");
- proc.m_proc.m_cwd.assfmt("%sndb_mgmd.%d", dir.c_str(), proc.m_index);
- proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
- cluster.m_name.c_str());
- break;
- }
- case atrt_process::AP_NDBD:
- {
- proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndbd");
- proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndbd");
- proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
- proc.m_host->m_basedir.c_str());
- proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
- cluster.m_name.c_str());
- proc.m_proc.m_args.append(" --nodaemon -n");
- proc.m_proc.m_cwd.assfmt("%sndbd.%d", dir.c_str(), proc.m_index);
- proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
- cluster.m_name.c_str());
- break;
- }
- case atrt_process::AP_MYSQLD:
- {
- proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysqld");
- proc.m_proc.m_path.assign(g_prefix).append("/libexec/mysqld");
- proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
- proc.m_host->m_basedir.c_str());
- proc.m_proc.m_args.appfmt(" --defaults-group-suffix=.%d%s",
- proc.m_index,
- cluster.m_name.c_str());
- proc.m_proc.m_args.append(" --core-file");
- proc.m_proc.m_cwd.appfmt("%smysqld.%d", dir.c_str(), proc.m_index);
- proc.m_proc.m_shutdown_options = "SIGKILL"; // not nice
- proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
- proc.m_index,
- cluster.m_name.c_str());
- break;
- }
- case atrt_process::AP_NDB_API:
- {
- proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_api");
- proc.m_proc.m_path = "";
- proc.m_proc.m_args = "";
- proc.m_proc.m_cwd.appfmt("%sndb_api.%d", dir.c_str(), proc.m_index);
- proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
- cluster.m_name.c_str());
- break;
- }
- case atrt_process::AP_CLIENT:
- {
- proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysql");
- proc.m_proc.m_path = "";
- proc.m_proc.m_args = "";
- proc.m_proc.m_cwd.appfmt("%s/client.%d", dir.c_str(), proc.m_index);
- proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
- proc.m_index,
- cluster.m_name.c_str());
- break;
- }
- case atrt_process::AP_ALL:
- case atrt_process::AP_CLUSTER:
- g_logger.critical("Unhandled process type: %d", proc.m_type);
- return false;
+ case atrt_process::AP_NDB_MGMD:{
+ proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_mgmd");
+ proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndb_mgmd");
+ proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
+ proc.m_host->m_basedir.c_str());
+ proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
+ cluster.m_name.c_str());
+ proc.m_proc.m_args.append(" --nodaemon --mycnf");
+ proc.m_proc.m_cwd.assfmt("%sndb_mgmd.%d", dir.c_str(), proc.m_index);
+ proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
+ cluster.m_name.c_str());
+ break;
+ }
+ case atrt_process::AP_NDBD:{
+ proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndbd");
+ proc.m_proc.m_path.assign(g_prefix).append("/libexec/ndbd");
+ proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
+ proc.m_host->m_basedir.c_str());
+ proc.m_proc.m_args.appfmt(" --defaults-group-suffix=%s",
+ cluster.m_name.c_str());
+ proc.m_proc.m_args.append(" --nodaemon -n");
+ proc.m_proc.m_cwd.assfmt("%sndbd.%d", dir.c_str(), proc.m_index);
+ proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",
+ cluster.m_name.c_str());
+ break;
+ }
+ case atrt_process::AP_MYSQLD:{
+ proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysqld");
+ proc.m_proc.m_path.assign(g_prefix).append("/libexec/mysqld");
+ proc.m_proc.m_args.assfmt("--defaults-file=%s/my.cnf",
+ proc.m_host->m_basedir.c_str());
+ proc.m_proc.m_args.appfmt(" --defaults-group-suffix=.%d%s",
+ proc.m_index,cluster.m_name.c_str());
+ proc.m_proc.m_args.append(" --core-file");
+ proc.m_proc.m_cwd.appfmt("%smysqld.%d", dir.c_str(), proc.m_index);
+ proc.m_proc.m_shutdown_options = "SIGKILL"; // not nice
+ proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s",
+ proc.m_index, cluster.m_name.c_str());
+ break;
+ }
+ case atrt_process::AP_NDB_API:{
+ proc.m_proc.m_name.assfmt("%d-%s", proc_no, "ndb_api");
+ proc.m_proc.m_path = "";
+ proc.m_proc.m_args = "";
+ proc.m_proc.m_cwd.appfmt("%sndb_api.%d", dir.c_str(), proc.m_index);
+ proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=%s",cluster.m_name.c_str());
+ break;
+ }
+ case atrt_process::AP_CLIENT:{
+ proc.m_proc.m_name.assfmt("%d-%s", proc_no, "mysql");
+ proc.m_proc.m_path = "";
+ proc.m_proc.m_args = "";
+ proc.m_proc.m_cwd.appfmt("%s/client.%d", dir.c_str(), proc.m_index);
+ proc.m_proc.m_env.appfmt(" MYSQL_GROUP_SUFFIX=.%d%s", proc.m_index,
+ cluster.m_name.c_str());
+ break;
+ }
+ case atrt_process::AP_ALL:
+ case atrt_process::AP_CLUSTER:
+ g_logger.critical("Unhandled process type: %d", proc.m_type);
+ return false;
}
- if (proc.m_proc.m_path.length())
- {
+ if (proc.m_proc.m_path.length()){
proc.m_proc.m_env.appfmt(" CMD=\"%s", proc.m_proc.m_path.c_str());
if (proc.m_proc.m_args.length())
proc.m_proc.m_env.append(" ");
- proc.m_proc.m_env.append(proc.m_proc.m_args);
- proc.m_proc.m_env.append("\" ");
+ proc.m_proc.m_env.append(proc.m_proc.m_args);
+ proc.m_proc.m_env.append("\" ");
}
- if (type == atrt_process::AP_MYSQLD)
- {
+ if (type == atrt_process::AP_MYSQLD){
/**
* Add a client for each mysqld
*/
if (!load_process(config, cluster, atrt_process::AP_CLIENT, idx, hostname))
- {
return false;
- }
}
if (type == atrt_process::AP_CLIENT)
- {
proc.m_mysqld = cluster.m_processes[cluster.m_processes.size()-2];
- }
-
+
return true;
}
static
bool
-load_options(int argc, char** argv, int type, atrt_options& opts)
-{
- for (size_t i = 0; i<(size_t)argc; i++)
- {
- for (size_t j = 0; f_options[j].name; j++)
- {
+load_options(int argc, char** argv, int type, atrt_options& opts){
+ for (size_t i = 0; i<(size_t)argc; i++){
+ for (size_t j = 0; f_options[j].name; j++){
const char * name = f_options[j].name;
const size_t len = strlen(name);
-
- if ((f_options[j].type & type) && strncmp(argv[i], name, len) == 0)
- {
- opts.m_loaded.put(name, argv[i]+len, true);
- break;
+ if ((f_options[j].type & type) && strncmp(argv[i], name, len) == 0){
+ opts.m_loaded.put(name, argv[i]+len, true);
+ break;
}
}
}
return true;
}
-struct proc_rule_ctx
-{
+struct proc_rule_ctx{
int m_setup;
atrt_config* m_config;
atrt_host * m_host;
@@ -393,8 +358,7 @@ struct proc_rule_ctx
atrt_process* m_process;
};
-struct proc_rule
-{
+struct proc_rule{
int type;
bool (* func)(Properties& prop, proc_rule_ctx&, int extra);
int extra;
@@ -424,107 +388,92 @@ proc_rule f_rules[] =
};
bool
-configure(atrt_config& config, int setup)
-{
+configure(atrt_config& config, int setup){
Properties props;
-
- for (size_t i = 0; f_rules[i].func; i++)
- {
- bool ok = true;
+ bool ok = true;
+ for (size_t i = 0; f_rules[i].func; i++){
+ ok = true;
proc_rule_ctx ctx;
bzero(&ctx, sizeof(ctx));
ctx.m_setup = setup;
ctx.m_config = &config;
-
- for (size_t j = 0; j < config.m_clusters.size(); j++)
- {
+ for (size_t j = 0; j < config.m_clusters.size(); j++){
ctx.m_cluster = config.m_clusters[j];
-
- if (f_rules[i].type & atrt_process::AP_CLUSTER)
- {
- g_logger.debug("applying rule %d to cluster %s", i,
- ctx.m_cluster->m_name.c_str());
- if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra))
- ok = false;
- }
- else
- {
- atrt_cluster& cluster = *config.m_clusters[j];
- for (size_t k = 0; k<cluster.m_processes.size(); k++)
- {
- atrt_process& proc = *cluster.m_processes[k];
- ctx.m_process = cluster.m_processes[k];
- if (proc.m_type & f_rules[i].type)
- {
- g_logger.debug("applying rule %d to %s", i,
- proc.m_proc.m_cwd.c_str());
- if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra))
+ if (f_rules[i].type & atrt_process::AP_CLUSTER){
+ g_logger.debug("applying rule %d to cluster %s", i,
+ ctx.m_cluster->m_name.c_str());
+ if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra)){
ok = false;
- }
- }
+ g_logger.error("Failed applying rule %d to cluster %s", i,
+ ctx.m_cluster->m_name.c_str());
+ }
+ }
+ else{
+ atrt_cluster& cluster = *config.m_clusters[j];
+ for (size_t k = 0; k<cluster.m_processes.size(); k++){
+ atrt_process& proc = *cluster.m_processes[k];
+ ctx.m_process = cluster.m_processes[k];
+ if (proc.m_type & f_rules[i].type){
+ g_logger.debug("applying rule %d to %s", i,
+ proc.m_proc.m_cwd.c_str());
+ if (! (* f_rules[i].func)(props, ctx, f_rules[i].extra)){
+ ok = false;
+ g_logger.error("Failed applying rule %d to %s", i,
+ proc.m_proc.m_cwd.c_str());
+ }
+ }
+ }
}
}
-
- if (!ok)
- {
- return false;
- }
}
+
+ if (!ok)
+ return false;
return true;
}
static
atrt_process*
-find(atrt_config& config, int type, const char * name)
-{
+find(atrt_config& config, int type, const char * name){
BaseString tmp(name);
Vector<BaseString> src;
Vector<BaseString> dst;
tmp.split(src, ".");
if (src.size() != 2)
- {
return 0;
- }
atrt_cluster* cluster = 0;
BaseString cl;
cl.appfmt(".%s", src[1].c_str());
- for (size_t i = 0; i<config.m_clusters.size(); i++)
- {
- if (config.m_clusters[i]->m_name == cl)
- {
+ for (size_t i = 0; i<config.m_clusters.size(); i++){
+ if (config.m_clusters[i]->m_name == cl){
cluster = config.m_clusters[i];
break;
}
}
if (cluster == 0)
- {
return 0;
- }
int idx = atoi(src[0].c_str()) - 1;
- for (size_t i = 0; i<cluster->m_processes.size(); i++)
- {
- if (cluster->m_processes[i]->m_type & type)
- {
- if (idx == 0)
- return cluster->m_processes[i];
- else
- idx --;
+ for (size_t i = 0; i<cluster->m_processes.size(); i++){
+ if (cluster->m_processes[i]->m_type & type){
+ if (idx == 0){
+ return cluster->m_processes[i];
+ }
+ else{
+ idx --;
+ }
}
}
-
return 0;
}
static
bool
-pr_check_replication(Properties& props, proc_rule_ctx& ctx, int)
-{
- if (! (ctx.m_config->m_replication == ""))
- {
+pr_check_replication(Properties& props, proc_rule_ctx& ctx, int){
+ if (! (ctx.m_config->m_replication == "")){
Vector<BaseString> list;
ctx.m_config->m_replication.split(list, ";");
atrt_config& config = *ctx.m_config;
@@ -532,40 +481,32 @@ pr_check_replication(Properties& props,
ctx.m_config->m_replication = "";
const char * msg = "Invalid replication specification";
- for (size_t i = 0; i<list.size(); i++)
- {
+ for (size_t i = 0; i<list.size(); i++){
Vector<BaseString> rep;
list[i].split(rep, ":");
- if (rep.size() != 2)
- {
- g_logger.error("%s: %s (split: %d)", msg, list[i].c_str(), rep.size());
- return false;
+ if (rep.size() != 2){
+ g_logger.error("%s: %s (split: %d)", msg, list[i].c_str(), rep.size());
+ return false;
}
atrt_process* src = find(config, atrt_process::AP_MYSQLD,rep[0].c_str());
atrt_process* dst = find(config, atrt_process::AP_MYSQLD,rep[1].c_str());
- if (src == 0 || dst == 0)
- {
- g_logger.error("%s: %s (%d %d)",
- msg, list[i].c_str(), src != 0, dst != 0);
- return false;
+ if (src == 0 || dst == 0){
+ g_logger.error("%s: %s (%d %d)",
+ msg, list[i].c_str(), src != 0, dst != 0);
+ return false;
}
-
- if (dst->m_rep_src != 0)
- {
- g_logger.error("%s: %s : %s already has replication src (%s)",
- msg,
- list[i].c_str(),
- dst->m_proc.m_cwd.c_str(),
- dst->m_rep_src->m_proc.m_cwd.c_str());
- return false;
+ if (dst->m_rep_src != 0){
+ g_logger.error("%s: %s : %s already has replication src (%s)",
+ msg,list[i].c_str(),dst->m_proc.m_cwd.c_str(),
+ dst->m_rep_src->m_proc.m_cwd.c_str());
+ return false;
}
dst->m_rep_src = src;
src->m_rep_dst.push_back(dst);
-
src->m_options.m_features |= PO_REP_MASTER;
dst->m_options.m_features |= PO_REP_SLAVE;
}
@@ -575,26 +516,21 @@ pr_check_replication(Properties& props,
static
bool
-pr_check_features(Properties& props, proc_rule_ctx& ctx, int)
-{
+pr_check_features(Properties& props, proc_rule_ctx& ctx, int){
int features = 0;
atrt_cluster& cluster = *ctx.m_cluster;
- for (size_t i = 0; i<cluster.m_processes.size(); i++)
- {
+ for (size_t i = 0; i<cluster.m_processes.size(); i++){
if (cluster.m_processes[i]->m_type == atrt_process::AP_NDB_MGMD ||
- cluster.m_processes[i]->m_type == atrt_process::AP_NDB_API ||
- cluster.m_processes[i]->m_type == atrt_process::AP_NDBD)
- {
+ cluster.m_processes[i]->m_type == atrt_process::AP_NDB_API ||
+ cluster.m_processes[i]->m_type == atrt_process::AP_NDBD){
features |= atrt_options::AO_NDBCLUSTER;
break;
}
}
- if (features)
- {
+ if (features){
cluster.m_options.m_features |= features;
- for (size_t i = 0; i<cluster.m_processes.size(); i++)
- {
+ for (size_t i = 0; i<cluster.m_processes.size(); i++){
cluster.m_processes[i]->m_options.m_features |= features;
}
}
@@ -603,45 +539,37 @@ pr_check_features(Properties& props, pro
static
bool
-pr_fix_client(Properties& props, proc_rule_ctx& ctx, int)
-{
- for (size_t i = 0; f_options[i].name; i++)
- {
+pr_fix_client(Properties& props, proc_rule_ctx& ctx, int){
+ for (size_t i = 0; f_options[i].name; i++){
proc_option& opt = f_options[i];
const char * name = opt.name;
- if (opt.type & atrt_process::AP_CLIENT)
- {
+ if (opt.type & atrt_process::AP_CLIENT){
const char * val;
atrt_process& proc = *ctx.m_process;
- if (!proc.m_options.m_loaded.get(name, &val))
- {
- require(proc.m_mysqld->m_options.m_loaded.get(name, &val));
- proc.m_options.m_loaded.put(name, val);
- proc.m_options.m_generated.put(name, val);
+ if (!proc.m_options.m_loaded.get(name, &val)){
+ require(proc.m_mysqld->m_options.m_loaded.get(name, &val));
+ proc.m_options.m_loaded.put(name, val);
+ proc.m_options.m_generated.put(name, val);
}
}
}
-
return true;
}
static
Uint32
-try_default_port(atrt_process& proc, const char * name)
-{
+try_default_port(atrt_process& proc, const char * name){
Uint32 port =
strcmp(name, "--port=") == 0 ? 3306 :
strcmp(name, "--PortNumber=") == 0 ? 1186 :
0;
atrt_host * host = proc.m_host;
- for (size_t i = 0; i<host->m_processes.size(); i++)
- {
+ for (size_t i = 0; i<host->m_processes.size(); i++){
const char * val;
- if (host->m_processes[i]->m_options.m_loaded.get(name, &val))
- {
+ if (host->m_processes[i]->m_options.m_loaded.get(name, &val)){
if ((Uint32)atoi(val) == port)
- return 0;
+ return 0;
}
}
return port;
@@ -649,34 +577,28 @@ try_default_port(atrt_process& proc, con
static
bool
-generate(atrt_process& proc, const char * name, Properties& props)
-{
+generate(atrt_process& proc, const char * name, Properties& props){
atrt_options& opts = proc.m_options;
if (strcmp(name, "--port=") == 0 ||
- strcmp(name, "--PortNumber=") == 0)
- {
+ strcmp(name, "--PortNumber=") == 0){
Uint32 val;
- if (g_default_ports == 0 || (val = try_default_port(proc, name)) == 0)
- {
+ if (g_default_ports == 0 || (val = try_default_port(proc, name)) == 0){
val = g_baseport;
props.get("--PortNumber=", &val);
props.put("--PortNumber=", (val + 1), true);
}
-
char buf[255];
snprintf(buf, sizeof(buf), "%u", val);
opts.m_loaded.put(name, buf);
opts.m_generated.put(name, buf);
return true;
}
- else if (strcmp(name, "--datadir=") == 0)
- {
+ else if (strcmp(name, "--datadir=") == 0){
opts.m_loaded.put(name, proc.m_proc.m_cwd.c_str());
opts.m_generated.put(name, proc.m_proc.m_cwd.c_str());
return true;
}
- else if (strcmp(name, "--FileSystemPath=") == 0)
- {
+ else if (strcmp(name, "--FileSystemPath=") == 0){
BaseString dir;
dir.append(proc.m_host->m_basedir);
dir.append("/");
@@ -685,40 +607,31 @@ generate(atrt_process& proc, const char
opts.m_generated.put(name, dir.c_str());
return true;
}
- else if (strcmp(name, "--socket=") == 0)
- {
+ else if (strcmp(name, "--socket=") == 0){
const char * sock = 0;
- if (g_default_ports)
- {
+ if (g_default_ports){
sock = "/tmp/mysql.sock";
atrt_host * host = proc.m_host;
- for (size_t i = 0; i<host->m_processes.size(); i++)
- {
- const char * val;
- if (host->m_processes[i]->m_options.m_loaded.get(name, &val))
- {
- if (strcmp(sock, val) == 0)
- {
- sock = 0;
- break;
- }
- }
+ for (size_t i = 0; i<host->m_processes.size(); i++){
+ const char * val;
+ if (host->m_processes[i]->m_options.m_loaded.get(name, &val)){
+ if (strcmp(sock, val) == 0){
+ sock = 0;
+ break;
+ }
+ }
}
}
-
BaseString tmp;
- if (sock == 0)
- {
+ if (sock == 0){
tmp.assfmt("%s/mysql.sock", proc.m_proc.m_cwd.c_str());
sock = tmp.c_str();
}
-
opts.m_loaded.put(name, sock);
opts.m_generated.put(name, sock);
return true;
}
- else if (strcmp(name, "--server-id=") == 0)
- {
+ else if (strcmp(name, "--server-id=") == 0){
Uint32 val = 1;
props.get(name, &val);
char buf[255];
@@ -728,64 +641,52 @@ generate(atrt_process& proc, const char
props.put(name, (val + 1), true);
return true;
}
- else if (strcmp(name, "--log-bin") == 0)
- {
+ else if (strcmp(name, "--log-bin") == 0){
opts.m_loaded.put(name, "");
opts.m_generated.put(name, "");
return true;
}
- else if (strcmp(name, "--master-host=") == 0)
- {
+ else if (strcmp(name, "--master-host=") == 0){
require(proc.m_rep_src != 0);
opts.m_loaded.put(name, proc.m_rep_src->m_host->m_hostname.c_str());
opts.m_generated.put(name, proc.m_rep_src->m_host->m_hostname.c_str());
return true;
}
- else if (strcmp(name, "--master-port=") == 0)
- {
+ else if (strcmp(name, "--master-port=") == 0){
const char* val;
require(proc.m_rep_src->m_options.m_loaded.get("--port=", &val));
opts.m_loaded.put(name, val);
opts.m_generated.put(name, val);
return true;
}
- else if (strcmp(name, "--master-user=") == 0)
- {
+ else if (strcmp(name, "--master-user=") == 0){
opts.m_loaded.put(name, "root");
opts.m_generated.put(name, "root");
return true;
}
- else if (strcmp(name, "--master-password=") == 0)
- {
+ else if (strcmp(name, "--master-password=") == 0){
opts.m_loaded.put(name, "\"\"");
opts.m_generated.put(name, "\"\"");
return true;
}
-
g_logger.warning("Unknown parameter: %s", name);
return true;
}
static
bool
-pr_proc_options(Properties& props, proc_rule_ctx& ctx, int extra)
-{
- for (size_t i = 0; f_options[i].name; i++)
- {
+pr_proc_options(Properties& props, proc_rule_ctx& ctx, int extra){
+ for (size_t i = 0; f_options[i].name; i++){
proc_option& opt = f_options[i];
atrt_process& proc = *ctx.m_process;
const char * name = opt.name;
- if (opt.type & proc.m_type)
- {
+ if (opt.type & proc.m_type){
if (opt.options == 0 ||
- (opt.options & extra & proc.m_options.m_features))
- {
- const char * val;
- if (!proc.m_options.m_loaded.get(name, &val))
- {
- generate(proc, name, props);
- }
- }
+ (opt.options & extra & proc.m_options.m_features)){
+ const char * val;
+ if (!proc.m_options.m_loaded.get(name, &val))
+ generate(proc, name, props);
+ }
}
}
return true;
@@ -793,42 +694,32 @@ pr_proc_options(Properties& props, proc_
static
bool
-pr_fix_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int)
-{
+pr_fix_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int){
const char * val;
atrt_cluster& cluster = *ctx.m_cluster;
-
- if (cluster.m_options.m_features & atrt_options::AO_NDBCLUSTER)
- {
- if (!cluster.m_options.m_loaded.get(ndbcs, &val))
- {
+ if (cluster.m_options.m_features & atrt_options::AO_NDBCLUSTER){
+ if (!cluster.m_options.m_loaded.get(ndbcs, &val)){
/**
* Construct connect string for this cluster
*/
BaseString str;
- for (size_t i = 0; i<cluster.m_processes.size(); i++)
- {
- atrt_process* tmp = cluster.m_processes[i];
- if (tmp->m_type == atrt_process::AP_NDB_MGMD)
- {
- if (str.length())
- {
- str.append(";");
- }
- const char * port;
- require(tmp->m_options.m_loaded.get("--PortNumber=", &port));
- str.appfmt("%s:%s", tmp->m_host->m_hostname.c_str(), port);
- }
+ for (size_t i = 0; i<cluster.m_processes.size(); i++){
+ atrt_process* tmp = cluster.m_processes[i];
+ if (tmp->m_type == atrt_process::AP_NDB_MGMD){
+ if (str.length()){
+ str.append(";");
+ }
+ const char * port;
+ require(tmp->m_options.m_loaded.get("--PortNumber=", &port));
+ str.appfmt("%s:%s", tmp->m_host->m_hostname.c_str(), port);
+ }
}
cluster.m_options.m_loaded.put(ndbcs, str.c_str());
cluster.m_options.m_generated.put(ndbcs, str.c_str());
cluster.m_options.m_loaded.get(ndbcs, &val);
}
-
- for (size_t i = 0; i<cluster.m_processes.size(); i++)
- {
- cluster.m_processes[i]->m_proc.m_env.appfmt(" NDB_CONNECTSTRING=%s",
- val);
+ for (size_t i = 0; i<cluster.m_processes.size(); i++){
+ cluster.m_processes[i]->m_proc.m_env.appfmt(" NDB_CONNECTSTRING=%s",val);
}
}
return true;
@@ -836,22 +727,16 @@ pr_fix_ndb_connectstring(Properties& pro
static
bool
-pr_set_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int)
-{
+pr_set_ndb_connectstring(Properties& props, proc_rule_ctx& ctx, int){
const char * val;
-
atrt_process& proc = *ctx.m_process;
- if (proc.m_options.m_features & atrt_options::AO_NDBCLUSTER)
- {
- if (!proc.m_options.m_loaded.get(ndbcs, &val))
- {
+ if (proc.m_options.m_features & atrt_options::AO_NDBCLUSTER){
+ if (!proc.m_options.m_loaded.get(ndbcs, &val)){
require(proc.m_cluster->m_options.m_loaded.get(ndbcs, &val));
proc.m_options.m_loaded.put(ndbcs, val);
proc.m_options.m_generated.put(ndbcs, val);
}
-
- if (!proc.m_options.m_loaded.get("--ndbcluster", &val))
- {
+ if (!proc.m_options.m_loaded.get("--ndbcluster", &val)){
proc.m_options.m_loaded.put("--ndbcluster", "");
proc.m_options.m_generated.put("--ndbcluster", "");
}
@@ -861,49 +746,39 @@ pr_set_ndb_connectstring(Properties& pro
static
bool
-pr_check_proc(Properties& props, proc_rule_ctx& ctx, int)
-{
+pr_check_proc(Properties& props, proc_rule_ctx& ctx, int){
bool ok = true;
bool generated = false;
const int setup = ctx.m_setup;
atrt_process& proc = *ctx.m_process;
- for (size_t i = 0; f_options[i].name; i++)
- {
+ for (size_t i = 0; f_options[i].name; i++){
proc_option& opt = f_options[i];
const char * name = opt.name;
if ((ctx.m_process->m_type & opt.type) &&
- (opt.options == 0 || (ctx.m_process->m_options.m_features & opt.options)))
- {
+ (opt.options == 0 ||
+ (ctx.m_process->m_options.m_features & opt.options))){
const char * val;
- if (!proc.m_options.m_loaded.get(name, &val))
- {
- ok = false;
- g_logger.warning("Missing paramter: %s for %s",
- name, proc.m_proc.m_cwd.c_str());
- }
- else if (proc.m_options.m_generated.get(name, &val))
- {
- if (setup == 0)
- {
- ok = false;
- g_logger.warning("Missing paramter: %s for %s",
- name, proc.m_proc.m_cwd.c_str());
- }
- else
- {
- generated = true;
- }
+ if (!proc.m_options.m_loaded.get(name, &val)){
+ ok = false;
+ g_logger.warning("Missing paramter: %s for %s",
+ name, proc.m_proc.m_cwd.c_str());
+ }
+ else if (proc.m_options.m_generated.get(name, &val)){
+ if (setup == 0){
+ ok = false;
+ g_logger.warning("Missing paramter: %s for %s",
+ name, proc.m_proc.m_cwd.c_str());
+ }
+ else{
+ generated = true;
+ }
}
}
}
-
- if (generated)
- {
+ if (generated){
ctx.m_config->m_generated = true;
}
-
//ndbout << proc << endl;
-
return ok;
}
@@ -913,23 +788,23 @@ operator<<(NdbOut& out, const atrt_proce
{
out << "[ atrt_process: ";
switch(proc.m_type){
- case atrt_process::AP_NDB_MGMD:
- out << "ndb_mgmd";
- break;
- case atrt_process::AP_NDBD:
- out << "ndbd";
- break;
- case atrt_process::AP_MYSQLD:
- out << "mysqld";
- break;
- case atrt_process::AP_NDB_API:
- out << "ndbapi";
- break;
- case atrt_process::AP_CLIENT:
- out << "client";
- break;
- default:
- out << "<unknown: " << (int)proc.m_type << " >";
+ case atrt_process::AP_NDB_MGMD:
+ out << "ndb_mgmd";
+ break;
+ case atrt_process::AP_NDBD:
+ out << "ndbd";
+ break;
+ case atrt_process::AP_MYSQLD:
+ out << "mysqld";
+ break;
+ case atrt_process::AP_NDB_API:
+ out << "ndbapi";
+ break;
+ case atrt_process::AP_CLIENT:
+ out << "client";
+ break;
+ default:
+ out << "<unknown: " << (int)proc.m_type << " >";
}
out << " cluster: " << proc.m_cluster->m_name.c_str()