Commit 84d4de97 authored by Michael Paquier's avatar Michael Paquier

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
parent 77b68e3a
...@@ -475,7 +475,7 @@ main(int argc, char *argv[]) ...@@ -475,7 +475,7 @@ main(int argc, char *argv[])
exit(1); exit(1);
} }
/* Check if cluster is running */ /* Read the control file and check compatibility */
ControlFile = get_controlfile(DataDir, &crc_ok); ControlFile = get_controlfile(DataDir, &crc_ok);
if (!crc_ok) if (!crc_ok)
{ {
...@@ -497,6 +497,11 @@ main(int argc, char *argv[]) ...@@ -497,6 +497,11 @@ main(int argc, char *argv[])
exit(1); 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 && if (ControlFile->state != DB_SHUTDOWNED &&
ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY) ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment