mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
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
This commit is contained in:
commit
bde5962738
3 changed files with 36 additions and 19 deletions
|
@ -110,20 +110,35 @@ void Guardian_thread::process_instance(Instance *instance,
|
|||
|
||||
if (instance->is_running())
|
||||
{
|
||||
/* clear status fields */
|
||||
current_node->restart_counter= 0;
|
||||
current_node->crash_moment= 0;
|
||||
current_node->state= STARTED;
|
||||
/* 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 */
|
||||
|
|
|
@ -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",
|
||||
options.instance_name);
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue