Jonathan Miller wrote:
> http://lists.mysql.com/commits/38586
i read this changeset as a followup changeset on the previous, only reverting formatting
changes in previous changeset.
if this interpretation is correct,
i prefer that you undo the previous cs, and make a new one were you only add your
printouts instead.
this will make the tree "cleaner", and merging will be easier...
ok?
/Jonas
>
> The above commit follows the guide lines. Please review.
>
> /Jeb
>
> Jonathan Miller
> Austin, Texas USA
> Senior QA Developer
> MySQL AB www.mysql.com
> __ ___ ___ ____ __
> / |/ /_ __/ __/ __ \/ /
> / /|_/ / // /\ \/ /_/ / /__
> /_/ /_/\_, /___/\___\_\___/
> <___/ www.mysql.com
>
> Jumpstart your cluster!
> http://www.mysql.com/consulting/packaged/cluster.html
>
> Get training on clusters
> http://www.mysql.com/training/courses/mysql_cluster.html
>
> All-in-one Enterprise-grade Database, Support and Services
> http://www.mysql.com/network/
>
>> -----Original Message-----
>> From: Jonas Oreland [mailto:jonas@stripped]
>> Sent: Monday, November 26, 2007 3:05 PM
>> To: Jonathan Miller
>> Cc: commits@stripped
>> Subject: Re: bk commit into 5.1 tree (jmiller:1.2582)
>>
>> hi,
>>
>> the additional debugging printouts are good,
>> but you changed the indentation from "mysql-coding-standard" to something
>> else
>>
>> i prefer it the way it was...
>>
>> /Jonas
>>
>> Jonathan Miller wrote:
>>> 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()
>>>
>
>