[Pkg-postgresql-public] Bug#759725: postgresql-common: non-synchronous service postgresql start/stop/reload
beuc
beuc at debian.org
Fri Aug 29 18:28:50 UTC 2014
Package: postgresql-common
Version: 160
Severity: important
Hi,
When working on the FusionForge installation system today I noticed
that in Debian Jessie, running:
service postgresql start
(or stop, or reload), is now asynchronous, due to using the new
PostgreSQL systemd init scripts.
Previously I could rely on the init script to come back when the
database was properly stopped and flushed. Right now the command
returns immediately and starts/stops/reloads in the background.
My scripts need to modify the PostgreSQL listen address and reload it
before populating the database through the PHP application. They also
need to stop/backup/start the server for quick load/restore during our
testsuite. Due to this change the installation system fails randomly
due to race condition.
I found it basically impossible to work-around this issue in a
portable manner:
- 'service postgresql status' is not reliable: it usually says the
service is stopped far before the shutdown is complete. I also got a
few cases where it reported active service with no running daemon.
- the 'postgresql' process may be stopped already, but pg_ctl still
doing a faststop (especially when there's data to flush to disk) -
there may also be other PostgreSQL processes I don't know about;
so 'ps' is not reliable either.
- the postgresql control commands vary between Debian and RedHat
(pg_ctl vs. pg_clusterctl), and they need a data directory that can
be in varied, possibly multiple, locations. Using 'pg_*ctl' manually
is error-prone and long.
- in any case that will require fare more code and testing than
'service postgresql xxx'
Please consider maintaining 'service postgresql start/stop/reload'
synchronous even with systemd.
Cheers!
Sylvain
-- System Information:
Debian Release: jessie/sid
APT prefers testing-updates
APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.14-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=eo.UTF-8, LC_CTYPE=eo.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages postgresql-common depends on:
ii adduser 3.113+nmu3
ii debconf [debconf-2.0] 1.5.53
ii init-system-helpers 1.21
ii lsb-base 4.1+Debian13
ii postgresql-client-common 160
ii procps 1:3.3.9-7
ii ssl-cert 1.0.34
ii ucf 3.0030
Versions of packages postgresql-common recommends:
ii logrotate 3.8.7-1
postgresql-common suggests no packages.
-- debconf information excluded
More information about the Pkg-postgresql-public
mailing list