Re: Offline enabling/disabling of data checksums
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Michael Banck <michael.banck@credativ.de>
Cc: Bernd Helmle <mailings@oopsware.de>,
Magnus Hagander <magnus@hagander.net>,
Michael Paquier <michael@paquier.xyz>,
Postgres hackers <pgsql-hackers@postgresql.org>
Date: 2019-01-08T15:25:05Z
Lists: pgsql-hackers
>> 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:~$ Looks ok, but I'm unsure how portable it is though. What if started with "postmater" directly? > 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. ISTM that the point of the control file is exactly to tell what is current the status of the cluster, so it is where this information really belongs? AFAICS all commands take care of the status in some way to avoid accidents. -- Fabien.
Commits
-
Reorganize Notes section in documentation of pg_checksums
- a7cc52370b2b 12.0 landed
-
Add option -N/--no-sync to pg_checksums
- e0090c869008 12.0 landed
-
Add options to enable and disable checksums in pg_checksums
- ed308d783790 12.0 landed
-
Refactor more code logic to update the control file
- 8b938d36f744 12.0 landed
-
Rename pg_verify_checksums to pg_checksums
- 6dd263cfaa84 12.0 landed
-
Fix cross-version compatibility checks of pg_verify_checksums
- 501f58359b59 11.3 landed
- c9ae7f704c67 12.0 landed
-
Add routine able to update the control file to src/common/
- ce6afc6823fb 12.0 landed