mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
Allow ENOENT in check_mode_recursive().
Buildfarm member tern failed src/bin/pg_ctl/t/001_start_stop.pl when a check_mode_recursive() call overlapped a server's startup-time deletion of pg_stat/global.stat. Just warn. Also, include errno in the message. Back-patch to v11, where check_mode_recursive() first appeared.
This commit is contained in:
parent
076a3c2112
commit
c85ad9cc63
@ -261,8 +261,6 @@ sub check_mode_recursive
|
||||
{
|
||||
follow_fast => 1,
|
||||
wanted => sub {
|
||||
my $file_stat = stat($File::Find::name);
|
||||
|
||||
# Is file in the ignore list?
|
||||
foreach my $ignore ($ignore_list ? @{$ignore_list} : [])
|
||||
{
|
||||
@ -272,8 +270,23 @@ sub check_mode_recursive
|
||||
}
|
||||
}
|
||||
|
||||
defined($file_stat)
|
||||
or die("unable to stat $File::Find::name");
|
||||
# Allow ENOENT. A running server can delete files, such as
|
||||
# those in pg_stat. Other stat() failures are fatal.
|
||||
my $file_stat = stat($File::Find::name);
|
||||
unless (defined($file_stat))
|
||||
{
|
||||
my $is_ENOENT = $!{ENOENT};
|
||||
my $msg = "unable to stat $File::Find::name: $!";
|
||||
if ($is_ENOENT)
|
||||
{
|
||||
warn $msg;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
die $msg;
|
||||
}
|
||||
}
|
||||
|
||||
my $file_mode = S_IMODE($file_stat->mode);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user