Hi all, While running the test suite this morning I have noticed the following error: server stopped readline() on closed filehandle $pidfile at /Users/ioltas/git/postgres/src/bin/pg_rewind/../../../src/test/perl/PostgresNode.pm line 308. Use of uninitialized value in concatenation (.) or string at /Users/ioltas/git/postgres/src/bin/pg_rewind/../../../src/test/perl/PostgresNode.pm line 309. # Postmaster PID is
This does not impact the run, but it creates unwelcome warnings in the logs. This is actually caused by the following code in PostgresNode that uses an incorrect check to see if the file has been correctly opened or not: open my $pidfile, $self->data_dir . "/postmaster.pid"; if (not defined $pidfile) One way to fix this is to use if(open(...)), a second way I know of is to check if the opened file handle matches tell($pidfile) == -1. The patch attached uses the first method to fix the issue. Regards, -- Michael
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index aa7a00c..8f66a9c 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -297,17 +297,16 @@ sub _update_pid # If we can open the PID file, read its first line and that's the PID we # want. If the file cannot be opened, presumably the server is not # running; don't be noisy in that case. - open my $pidfile, $self->data_dir . "/postmaster.pid"; - if (not defined $pidfile) + if (open my $pidfile, $self->data_dir . "/postmaster.pid") { - $self->{_pid} = undef; - print "# No postmaster PID\n"; + $self->{_pid} = <$pidfile>; + print "# Postmaster PID is $self->{_pid}\n"; + close $pidfile; return; } - $self->{_pid} = <$pidfile>; - print "# Postmaster PID is $self->{_pid}\n"; - close $pidfile; + $self->{_pid} = undef; + print "# No postmaster PID\n"; } #
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers