pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michael Banck <michael.banck@credativ.de>
To: Bernd Helmle <mailings@oopsware.de>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Magnus Hagander <magnus@hagander.net>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: Postgres hackers <pgsql-hackers@postgresql.org>
Subject: Re: Offline enabling/disabling of data checksums
Date: Tue, 08 Jan 2019 15:49:22 +0100
Message-ID: <1546958962.32387.13.camel@credativ.de> (raw)
In-Reply-To: <65e4f3684f7563acc8b309393b8e14388b5eae0d.camel@oopsware.de>
References: <20181221201616.GD4974@nighthawk.caipicrew.dd-dns.de>
	<alpine.DEB.2.21.1812261900400.32444@lancre>
	<20181227011534.GD2106@paquier.xyz>
	<CABUevEwbPVR_6Uv4D44fCd9tB_=aFxG4awUx+DJawD8_speuCA@mail.gmail.com>
	<alpine.DEB.2.21.1812271206340.32444@lancre>
	<1546945543.32387.8.camel@credativ.de>
	<alpine.DEB.2.21.1901081505010.32421@lancre>
	<65e4f3684f7563acc8b309393b8e14388b5eae0d.camel@oopsware.de>

Am Dienstag, den 08.01.2019, 15:39 +0100 schrieb Bernd Helmle:
> Am Dienstag, den 08.01.2019, 15:09 +0100 schrieb Fabien COELHO:
> > > The question is how to reliably do this in an acceptable way? Just
> > > faking a postmaster.pid sounds pretty hackish to me, do you have
> > > any
> > > suggestions here?
> > 
> > Adding a new state to ControlFileData which would prevent it from 
> > starting?
> 
> But then you have to make sure the control flag gets cleared in any
> case pg_verify_checksums crashes somehow or gets SIGKILL'ed ...
> 
> Setting the checksum flag is done after having finished all blocks, so
> there is no problem. But we need to set this new flag before and reset
> it afterwards, so in between strange things can happen (as the various
> calls to exit() within error handling illustrates). 

It seems writing a note like "pg_checksums is running" into the
postmaster.pid would work, and would give a hopefully useful hint to
somebody trying to start Postgres while pg_checksums is running:

postgres@kohn:~$ echo  "pg_checksums running with pid 1231, cluster disabled" > data/postmaster.pid 
postgres@kohn:~$ pg_ctl -D data -l logfile start
pg_ctl: invalid data in PID file "data/postmaster.pid"
postgres@kohn:~$ echo $?
1
postgres@kohn:~$ 

If the DBA then just simply deletes postmaster.pid and starts over, well
then I call pilot error; though we could in theory change pg_ctl (or
whatever checks postmaster.pid) to emit an even more useful error
message if it encounters a "cluster is locked" keyword in it.

Not sure whether everybody likes that (or is future-proof for that
matter), but I like it better than adding a new field to the control
file, for the reasons Bernd outlined above.


Michael

-- 
Michael Banck
Projektleiter / Senior Berater
Tel.: +49 2166 9901-171
Fax:  +49 2166 9901-100
Email: michael.banck@credativ.de

credativ GmbH, HRB Mönchengladbach 12080
USt-ID-Nummer: DE204566209
Trompeterallee 108, 41189 Mönchengladbach
Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer

Unser Umgang mit personenbezogenen Daten unterliegt
folgenden Bestimmungen: https://www.credativ.de/datenschutz




view thread (149+ messages)  latest in thread

Message-ID: <1546958962.32387.13.camel@credativ.de>
Permalink:  ../1546958962.32387.13.camel@credativ.de/
Also on:    postgresql.org/message-id/1546958962.32387.13.camel@credativ.de

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: michael.banck@credativ.de, mailings@oopsware.de, coelho@cri.ensmp.fr, magnus@hagander.net, michael@paquier.xyz
  Subject: Re: Offline enabling/disabling of data checksums
  In-Reply-To: <1546958962.32387.13.camel@credativ.de>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox