From be5cc29e48c1fac4e031f58cb1fd31f8a8731a87 Mon Sep 17 00:00:00 2001 From: Magnus Svensson Date: Thu, 12 Feb 2009 17:36:58 +0100 Subject: [PATCH] Bug#42797 mtr.pl - temporary directory are deleted when child exit's - Since we are only using the auto cleanup in one place of mtr.pl today, disable the autocleanup and write our own END handler that clean up the tmpdir only when the process that created it exits. --- mysql-test/mysql-test-run.pl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index ba426446075..f8f9b89d141 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -107,6 +107,17 @@ our $default_vardir; our $opt_vardir; # Path to use for var/ dir my $path_vardir_trace; # unix formatted opt_vardir for trace files my $opt_tmpdir; # Path to use for tmp/ dir +my $opt_tmpdir_pid; + +END { + if (defined $opt_tmpdir_pid and + $opt_tmpdir_pid == $$){ + # Remove the tempdir this process has created + mtr_verbose("Removing tmpdir '$opt_tmpdir"); + rmtree($opt_tmpdir); + } +} + my $path_config_file; # The generated config file, var/my.cnf # Visual Studio produces executables in different sub-directories based on the @@ -1066,8 +1077,11 @@ sub command_line_setup { " creating a shorter one..."); # Create temporary directory in standard location for temporary files - $opt_tmpdir= tempdir( TMPDIR => 1, CLEANUP => 1 ); + $opt_tmpdir= tempdir( TMPDIR => 1, CLEANUP => 0 ); mtr_report(" - using tmpdir: '$opt_tmpdir'\n"); + + # Remember pid that created dir so it's removed by correct process + $opt_tmpdir_pid= $$; } } $opt_tmpdir =~ s,/+$,,; # Remove ending slash if any