Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ggsh7-0001Ma-6k for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Jan 2019 14:49:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1ggsh5-0006oZ-Uu for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Jan 2019 14:49:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ggsh5-0006oS-Ng for pgsql-hackers@lists.postgresql.org; Tue, 08 Jan 2019 14:49:27 +0000 Received: from gauss.credativ.com ([93.94.130.89]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ggsh2-0008Kv-Lm for pgsql-hackers@postgresql.org; Tue, 08 Jan 2019 14:49:27 +0000 Received: from gauss.credativ.com (localhost [127.0.0.1]) by gauss.credativ.com (Postfix) with ESMTP id E75541E4978; Tue, 8 Jan 2019 15:49:23 +0100 (CET) Received: from kohn-2.fritz.box (ppp-88-217-97-255.dynamic.mnet-online.de [88.217.97.255]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: mba@gauss.credativ.com) by gauss.credativ.com (Postfix) with ESMTPSA id 7D4951E4977; Tue, 8 Jan 2019 15:49:23 +0100 (CET) Message-ID: <1546958962.32387.13.camel@credativ.de> Subject: Re: Offline enabling/disabling of data checksums From: Michael Banck To: Bernd Helmle , Fabien COELHO Cc: Magnus Hagander , Michael Paquier , Postgres hackers Date: Tue, 08 Jan 2019 15:49:22 +0100 In-Reply-To: <65e4f3684f7563acc8b309393b8e14388b5eae0d.camel@oopsware.de> References: <20181221201616.GD4974@nighthawk.caipicrew.dd-dns.de> <20181227011534.GD2106@paquier.xyz> <1546945543.32387.8.camel@credativ.de> <65e4f3684f7563acc8b309393b8e14388b5eae0d.camel@oopsware.de> Organization: credativ GmbH Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk 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