[Pkg-postgresql-public] Bug#756008: postgresql-common: pg_upgradecluster 9.3 -> 9.4 fails

Johannes Truschnigg johannes.truschnigg at geizhals.at
Wed Aug 19 11:56:04 UTC 2015


This exact problem, together with an undocumented and obscure 
5-seconds-timeout in pg_upgradecluster's invocation of `pg_ctlcluster 
stop`, nearly made me pull my hair out yesterday.

I successfully tested the planned upgrade from 9.0 to 9.4 in the staging 
environment, but because the live database requires more than 5 seconds 
to properly shutdown, pg_upgradecluster died very early with a 
nondescript error message, costing me more than an hour hunting down 
thesource of the problem while production was suffering a scheduled, yet 
prolonged downtime. The following was its death note:

---- >8 ----
Stopping old cluster...
pg_ctl: server does not shut down
Error: Could not stop old cluster
---- 8< ----

After some frantic digging, I solved the problem by temporarily 
monkey-patching /usr/bin/pg_upgradecluster to stop the old cluster like 
presented below:


---- >8 ----
# stopping old cluster, so that we notice early when there are still
# connections
if ($info{'running'}) {
     get_encoding $version, $cluster;
     print "Stopping old cluster...\n";
     my @argv = ('pg_ctlcluster', $version, $cluster, 'stop', '-m', 
'fast', '--');
     push @argv, ('-t', '30') if $version >= '8.4';
     error "Could not stop old cluster" if system @argv;
}
---- 8< ----

I'm not sure what the reason for the (original; I changed it to 30 to 
get it to work with our setup and workload) 5s timeout being there is 
(and I don't think that "trick" with passing additional argv elements 
after a double-dash down to pg_upgrade is documented anywhere?!); maybe 
it should just get removed instead of relying on total guesswork about 
how long it could take to stop a user's cluster (esp. in the default 
"smart" mode, 5s seems VERY unlikely for busy servers).

Thanks very much for taking note of this problem, and trying to help fix it!
-- 
Mit freundlichen Grüßen
Johannes Truschnigg
Senior System Administrator
--
mailto:johannes.truschnigg at geizhals.at (in dringenden Fällen bitte an 
info at geizhals.at)

Geizhals(R) - Preisvergleich Internet Services AG
Obere Donaustrasse 63/2
A-1020 Wien
Tel: +43 1 5811609/87
Fax: +43 1 5811609/55
http://geizhals.at => Preisvergleich für Österreich
http://geizhals.de => Preisvergleich für Deutschland
http://geizhals.eu => Preisvergleich EU-weit
Handelsgericht Wien | FN 197241K | Firmensitz Wien



More information about the Pkg-postgresql-public mailing list