1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

Bug #22379 im_daemon_life_cycle.test fails on merge of 5.1 -> 5.1-engines

Remove race situations that occur when removing pidfiles. Primarily each process should remove its own
pidfile, secondly it should be removed by the process that created it and _only_ if it's
certain the process is dead. Third, mysql-test-run.pl will remove the pidfile when process has been killed.
- Set state of an instance to STARTING _before_ calling instance->start()
- Check that pidfile of instance has been created before changing STARTING => STARTED
- Only remove the pidfile if IM kills an instance with SIGKILL, otherwise the instance will remove it itself


server-tools/instance-manager/guardian.cc:
  If state of an instance is STARTING, chech that the instance pidfile has been created
  before changing state to STARTED
  Set state to STARTING before calling instance->start(), it can take some time
  before it is fully started and during that time it should be in state STARTING
server-tools/instance-manager/instance.cc:
  Only remove the pid file of instance manager when a SIGKILL has 
  been performed sucessfully
server-tools/instance-manager/instance_options.cc:
  Check that fscanf returns 1 which is the number of args that should be scanned from
  the pid file
This commit is contained in:
unknown
2006-09-25 09:28:52 +02:00
parent 14bebaa2dc
commit f91b91cf65
3 changed files with 36 additions and 19 deletions

View File

@@ -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;
}