1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

WL#4189 Add retry logic to mkpath to avoid temporary permission denied problems

This commit is contained in:
Magnus Svensson
2008-10-11 17:06:34 +02:00
parent ac24a79290
commit f0ed343ba4

View File

@ -22,8 +22,10 @@ our @EXPORT= qw / rmtree mkpath copytree /;
use File::Find;
use File::Copy;
use File::Spec;
use Carp;
use My::Handles;
use My::Platform;
sub rmtree {
my ($dir)= @_;
@ -58,7 +60,34 @@ sub rmtree {
sub mkpath {
goto &File::Path::mkpath;
my $path;
foreach my $dir ( File::Spec->splitdir( @_ ) ) {
#print "dir: $dir\n";
if ($dir =~ /^[a-z]:/i){
# Found volume ie. C:
$path= $dir;
next;
}
$path= File::Spec->catdir($path, $dir);
#print "path: $path\n";
next if -d $path; # Path already exist
next if mkdir($path); # mkdir worked
# mkdir failed, try one more time
next if mkdir($path);
# mkdir failed again, try two more time after sleep(s)
sleep(1);
next if mkdir($path);
sleep(1);
next if mkdir($path);
# Report failure and die
croak("Couldn't create directory '$path' ",
" after 4 attempts and 2 sleep(1): $!");
}
};