List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:November 28 2007 6:29am
Subject:Re: bk commit into 5.1 tree (jmiller:1.2582)
View as plain text  
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()
>>>
> 
> 

Thread
bk commit into 5.1 tree (jmiller:1.2582)Jonathan Miller26 Nov
  • Re: bk commit into 5.1 tree (jmiller:1.2582)Jonas Oreland26 Nov
    • RE: bk commit into 5.1 tree (jmiller:1.2582)Jonathan Miller26 Nov
    • RE: bk commit into 5.1 tree (jmiller:1.2582)Jonathan Miller27 Nov
      • Re: bk commit into 5.1 tree (jmiller:1.2582)Jonas Oreland28 Nov
        • RE: bk commit into 5.1 tree (jmiller:1.2582)Jonathan Miller28 Nov