From: Michael Paquier Date: Fri, 7 Jun 2019 11:48:39 +0000 (+0900) Subject: Improve some comments in pg_checksums about the needed clean shutdown X-Git-Tag: REL_12_BETA2~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84d4de97e8d14469974eb488730a13f942aa787a;p=postgresql Improve some comments in pg_checksums about the needed clean shutdown It was not clear from the code why it is necessary. And we need a clean shutdown to avoid random checksum failures caused by torn pages. Author: Masahiko Sawada Discussion: https://postgr.es/m/CAD21AoDum5MbAb7F=pa9dOD1W2tukuDMPzWT7NjZceNoWB_6Qw@mail.gmail.com --- diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c index 7c7a75cdcd..b8e7c32dba 100644 --- a/src/bin/pg_checksums/pg_checksums.c +++ b/src/bin/pg_checksums/pg_checksums.c @@ -475,7 +475,7 @@ main(int argc, char *argv[]) exit(1); } - /* Check if cluster is running */ + /* Read the control file and check compatibility */ ControlFile = get_controlfile(DataDir, &crc_ok); if (!crc_ok) { @@ -497,6 +497,11 @@ main(int argc, char *argv[]) exit(1); } + /* + * Check if cluster is running. A clean shutdown is required to avoid + * random checksum failures caused by torn pages. Note that this doesn't + * guard against someone starting the cluster concurrently. + */ if (ControlFile->state != DB_SHUTDOWNED && ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY) {