MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Alexander Nozdrin Date:October 12 2006 1:31pm
Subject:bk commit into 5.0 tree (anozdrin:1.2283)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of alik. When alik 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, 2006-10-12 17:31:34+04:00, anozdrin@alik. +5 -0
  Instance Manager polishing.

  server-tools/instance-manager/guardian.cc@stripped, 2006-10-12 17:31:32+04:00, anozdrin@alik. +29 -43
    1. Removed unused stop_instances_arg from request_shutdown() and
    stop_instances() methods.
        
    2. Changed log-output statements so that instance name is passed
    correctly (char *, not LEX_STRING)

  server-tools/instance-manager/guardian.h@stripped, 2006-10-12 17:31:32+04:00, anozdrin@alik. +2 -2
    Removed unused stop_instances_arg from request_shutdown() and
    stop_instances() methods.

  server-tools/instance-manager/instance.cc@stripped, 2006-10-12 17:31:32+04:00, anozdrin@alik. +12 -11
    Removed unused stop_instances_arg from request_shutdown() and
    stop_instances() methods.

  server-tools/instance-manager/listener.cc@stripped, 2006-10-12 17:31:32+04:00, anozdrin@alik. +2 -2
    Be more verbose in log.

  server-tools/instance-manager/manager.cc@stripped, 2006-10-12 17:31:32+04:00, anozdrin@alik. +2 -3
    Removed unused stop_instances argument.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	anozdrin
# Host:	alik.
# Root:	/mnt/raid/alik/MySQL/devel/5.0-rt-build

--- 1.26/server-tools/instance-manager/listener.cc	2006-10-12 17:31:38 +04:00
+++ 1.27/server-tools/instance-manager/listener.cc	2006-10-12 17:31:38 +04:00
@@ -280,7 +280,7 @@ int Listener_thread::create_tcp_socket()
 
   FD_SET(ip_socket, &read_fds);
   sockets[num_sockets++]= ip_socket;
-  log_info("accepting connections on ip socket");
+  log_info("accepting connections on ip socket (port: %d)", (int) im_port);
   return 0;
 }
 
@@ -334,7 +334,7 @@ create_unix_socket(struct sockaddr_un &u
   /* make sure that instances won't be listening our sockets */
   set_no_inherit(unix_socket);
 
-  log_info("accepting connections on unix socket %s",
+  log_info("accepting connections on unix socket '%s'",
            unix_socket_address.sun_path);
   sockets[num_sockets++]= unix_socket;
   FD_SET(unix_socket, &read_fds);

--- 1.35/server-tools/instance-manager/manager.cc	2006-10-12 17:31:38 +04:00
+++ 1.36/server-tools/instance-manager/manager.cc	2006-10-12 17:31:38 +04:00
@@ -110,7 +110,7 @@ void stop_all(Guardian_thread *guardian,
     Let guardian thread know that it should break it's processing cycle,
     once it wakes up.
   */
-  guardian->request_shutdown(true);
+  guardian->request_shutdown();
   /* wake guardian */
   pthread_cond_signal(&guardian->COND_guardian);
   /* stop all threads */
@@ -282,8 +282,7 @@ void manager(const Options &options)
     {
       if (!guardian_thread.is_stopped())
       {
-        bool stop_instances= true;
-        guardian_thread.request_shutdown(stop_instances);
+        guardian_thread.request_shutdown();
         pthread_cond_signal(&guardian_thread.COND_guardian);
       }
       else

--- 1.23/server-tools/instance-manager/guardian.cc	2006-10-12 17:31:38 +04:00
+++ 1.24/server-tools/instance-manager/guardian.cc	2006-10-12 17:31:38 +04:00
@@ -66,11 +66,11 @@ Guardian_thread::~Guardian_thread()
 }
 
 
-void Guardian_thread::request_shutdown(bool stop_instances_arg)
+void Guardian_thread::request_shutdown()
 {
   pthread_mutex_lock(&LOCK_guardian);
   /* stop instances or just clean up Guardian repository */
-  stop_instances(stop_instances_arg);
+  stop_instances();
   shutdown_requested= TRUE;
   pthread_mutex_unlock(&LOCK_guardian);
 }
@@ -118,11 +118,11 @@ void Guardian_thread::process_instance(I
     {
       /* Pid file not created yet, don't go to STARTED state yet  */
     }
-    else
+    else if (current_node->state != STARTED)
     {
       /* clear status fields */
-      log_info("guardian: instance %s is running, set state to STARTED",
-               instance->options.instance_name);
+      log_info("guardian: instance '%s' is running, set state to STARTED.",
+               (const char *) instance->options.instance_name);
       current_node->restart_counter= 0;
       current_node->crash_moment= 0;
       current_node->state= STARTED;
@@ -132,8 +132,8 @@ void Guardian_thread::process_instance(I
   {
     switch (current_node->state) {
     case NOT_STARTED:
-      log_info("guardian: starting instance %s",
-               instance->options.instance_name);
+      log_info("guardian: starting instance '%s'...",
+               (const char *) instance->options.instance_name);
 
       /* NOTE, set state to STARTING _before_ start() is called */
       current_node->state= STARTING;
@@ -157,8 +157,8 @@ void Guardian_thread::process_instance(I
         if (instance->is_crashed())
         {
           instance->start();
-          log_info("guardian: starting instance %s",
-                   instance->options.instance_name);
+          log_info("guardian: starting instance '%s'...",
+                   (const char *) instance->options.instance_name);
         }
       }
       else
@@ -175,8 +175,8 @@ void Guardian_thread::process_instance(I
             instance->start();
             current_node->last_checked= current_time;
             current_node->restart_counter++;
-            log_info("guardian: restarting instance %s",
-                     instance->options.instance_name);
+            log_info("guardian: restarting instance '%s'...",
+                     (const char *) instance->options.instance_name);
           }
         }
         else
@@ -382,12 +382,11 @@ int Guardian_thread::stop_guard(Instance
 
   SYNOPSYS
     stop_instances()
-    stop_instances_arg          whether we should stop instances at shutdown
 
   DESCRIPTION
     Loops through the guarded_instances list and prepares them for shutdown.
-    If stop_instances was requested, we need to issue a stop command and change
-    the state accordingly. Otherwise we simply delete an entry.
+    For each instance we issue a stop command and change the state
+    accordingly.
 
   NOTE
     Guardian object should be locked by the calling function.
@@ -397,42 +396,29 @@ int Guardian_thread::stop_guard(Instance
     1 - error occured
 */
 
-int Guardian_thread::stop_instances(bool stop_instances_arg)
+int Guardian_thread::stop_instances()
 {
   LIST *node;
   node= guarded_instances;
   while (node != NULL)
   {
-    if (!stop_instances_arg)
+    GUARD_NODE *current_node= (GUARD_NODE *) node->data;
+    /*
+      If instance is running or was running (and now probably hanging),
+      request stop.
+    */
+    if (current_node->instance->is_running() ||
+        (current_node->state == STARTED))
     {
-      /* just forget about an instance */
-      guarded_instances= list_delete(guarded_instances, node);
-      /*
-        This should still work fine, as we have only removed the
-        node from the list. The pointer to the next one is still valid
-      */
-      node= node->next;
+      current_node->state= STOPPING;
+      current_node->last_checked= time(NULL);
     }
     else
-    {
-      GUARD_NODE *current_node= (GUARD_NODE *) node->data;
-      /*
-        If instance is running or was running (and now probably hanging),
-        request stop.
-      */
-      if (current_node->instance->is_running() ||
-          (current_node->state == STARTED))
-      {
-        current_node->state= STOPPING;
-        current_node->last_checked= time(NULL);
-      }
-      else
-        /* otherwise remove it from the list */
-        guarded_instances= list_delete(guarded_instances, node);
-      /* But try to kill it anyway. Just in case */
-      current_node->instance->kill_instance(SIGTERM);
-      node= node->next;
-    }
+      /* otherwise remove it from the list */
+      guarded_instances= list_delete(guarded_instances, node);
+    /* But try to kill it anyway. Just in case */
+    current_node->instance->kill_instance(SIGTERM);
+    node= node->next;
   }
   return 0;
 }
@@ -440,7 +426,7 @@ int Guardian_thread::stop_instances(bool
 
 void Guardian_thread::lock()
 {
-  pthread_mutex_lock(&LOCK_guardian); 
+  pthread_mutex_lock(&LOCK_guardian);
 }
 
 

--- 1.12/server-tools/instance-manager/guardian.h	2006-10-12 17:31:38 +04:00
+++ 1.13/server-tools/instance-manager/guardian.h	2006-10-12 17:31:38 +04:00
@@ -89,7 +89,7 @@ public:
   /* Initialize or refresh the list of guarded instances */
   int init();
   /* Request guardian shutdown. Stop instances if needed */
-  void request_shutdown(bool stop_instances);
+  void request_shutdown();
   /* Start instance protection */
   int guard(Instance *instance, bool nolock= FALSE);
   /* Stop instance protection */
@@ -104,7 +104,7 @@ public:
 
 private:
   /* Prepares Guardian shutdown. Stops instances is needed */
-  int stop_instances(bool stop_instances_arg);
+  int stop_instances();
   /* check instance state and act accordingly */
   void process_instance(Instance *instance, GUARD_NODE *current_node,
                         LIST **guarded_instances, LIST *elem);

--- 1.34/server-tools/instance-manager/instance.cc	2006-10-12 17:31:38 +04:00
+++ 1.35/server-tools/instance-manager/instance.cc	2006-10-12 17:31:38 +04:00
@@ -156,8 +156,8 @@ static int start_process(Instance_option
     /* exec never returns */
     exit(1);
   case -1:
-    log_info("cannot create a new process to start instance %s",
-             instance_options->instance_name);
+    log_info("cannot create a new process to start instance '%s'.",
+             (const char *) instance_options->instance_name);
     return 1;
   }
   return 0;
@@ -252,7 +252,8 @@ static void start_and_monitor_instance(I
           MAX_INSTANCE_NAME_LEN - 1);
   instance_name_len= old_instance_options->instance_name_len;
 
-  log_info("starting instance %s", instance_name_buff);
+  log_info("starting instance '%s'...",
+           (const char *) instance_name_buff);
 
   if (start_process(old_instance_options, &process_info))
   {
@@ -286,9 +287,9 @@ void Instance::remove_pid()
   int pid;
   if ((pid= options.get_pid()) != 0)          /* check the pidfile */
     if (options.unlink_pidfile())             /* remove stalled pidfile */
-      log_error("cannot remove pidfile for instance %i, this might be \
+      log_error("cannot remove pidfile for instance '%s', this might be \
                 since IM lacks permmissions or hasn't found the pidifle",
-                options.instance_name);
+                (const char *) options.instance_name);
 }
 
 
@@ -435,9 +436,9 @@ bool Instance::is_running()
       We have successfully connected to the server using fake
       username/password. Write a warning to the logfile.
     */
-    log_info("The Instance Manager was able to log into you server \
-             with faked compiled-in password while checking server status. \
-             Looks like something is wrong.");
+    log_info("The Instance Manager was able to log into you server "
+             "with faked compiled-in password while checking server status. "
+             "Looks like something is wrong.");
     pthread_mutex_unlock(&LOCK_instance);
     return_val= TRUE;                           /* server is alive */
   }
@@ -577,10 +578,10 @@ void Instance::kill_instance(int signum)
       /* Kill suceeded */
       if (signum == SIGKILL)      /* really killed instance with SIGKILL */
       {
-        log_error("The instance %s is being stopped forcibly. Normally" \
-                  "it should not happen. Probably the instance has been" \
+        log_error("The instance '%s' is being stopped forcibly. Normally"
+                  "it should not happen. Probably the instance has been"
                   "hanging. You should also check your IM setup",
-                  options.instance_name);
+                  (const char *) options.instance_name);
         /* After sucessful hard kill the pidfile need to be removed */
         options.unlink_pidfile();
       }
Thread
bk commit into 5.0 tree (anozdrin:1.2283)Alexander Nozdrin12 Oct