Commit bde59627 authored by unknown's avatar unknown
Browse files

Merge neptunus.(none):/home/msvensson/mysql/bug22379_runtime/my50-bug22379_runtime

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-runtime


server-tools/instance-manager/instance.cc:
  Auto merged
parents c490d7ab f91b91cf
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -109,21 +109,36 @@ void Guardian_thread::process_instance(Instance *instance,
  }

  if (instance->is_running())
  {
    /* The instance can be contacted  on it's port */

    /* If STARTING also check that pidfile has been created */
    if (current_node->state == STARTING &&
        current_node->instance->options.get_pid() == 0)
    {
      /* Pid file not created yet, don't go to STARTED state yet  */
    }
    else
    {
      /* clear status fields */
      log_info("guardian: instance %s is running, set state to STARTED",
               instance->options.instance_name);
      current_node->restart_counter= 0;
      current_node->crash_moment= 0;
      current_node->state= STARTED;
    }
  }
  else
  {
    switch (current_node->state) {
    case NOT_STARTED:
      instance->start();
      current_node->last_checked= current_time;
      log_info("guardian: starting instance %s",
               instance->options.instance_name);

      /* NOTE, set state to STARTING _before_ start() is called */
      current_node->state= STARTING;
      instance->start();
      current_node->last_checked= current_time;
      break;
    case STARTED:     /* fallthrough */
    case STARTING:    /* let the instance start or crash */
+13 −12
Original line number Diff line number Diff line
@@ -572,18 +572,19 @@ void Instance::kill_instance(int signum)
  /* if there are no pid, everything seems to be fine */
  if ((pid= options.get_pid()) != 0)            /* get pid from pidfile */
  {
    /*
      If we cannot kill mysqld, then it has propably crashed.
      Let us try to remove staled pidfile and return successfully
      as mysqld is probably stopped.
    */
    if (!kill(pid, signum))
      options.unlink_pidfile();
    else if (signum == SIGKILL)      /* really killed instance with SIGKILL */
      log_error("The instance %s is being stopped forsibly. Normally \
                it should not happed. Probably the instance has been \
                hanging. You should also check your IM setup",
    if (kill(pid, signum) == 0)
    {
      /* 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" \
                  "hanging. You should also check your IM setup",
                  options.instance_name);
        /* After sucessful hard kill the pidfile need to be removed */
        options.unlink_pidfile();
      }
    }
  }
  return;
}
+2 −1
Original line number Diff line number Diff line
@@ -377,7 +377,8 @@ pid_t Instance_options::get_pid()
  {
    pid_t pid;

    fscanf(pid_file_stream, "%i", &pid);
    if (fscanf(pid_file_stream, "%i", &pid) != 1)
      pid= -1;
    my_fclose(pid_file_stream, MYF(0));
    return pid;
  }