From: Euler Taveira <euler@eulerto.com>
To: anatoli@rainforce.org
To: pgsql-docs@lists.postgresql.org
Subject: Re: pg_isready docs doesn't specify what exactly it is checking
Date: Thu, 06 Jan 2022 21:29:16 -0300
Message-ID: <d42e67fa-57ca-412d-8055-dca522a091db@www.fastmail.com> (raw)
In-Reply-To: <164131990826.21661.14675569223855830732@wrigleys.postgresql.org>
References: <164131990826.21661.14675569223855830732@wrigleys.postgresql.org>
On Tue, Jan 4, 2022, at 3:11 PM, PG Doc comments form wrote:
> `pg_isready` docs don't specify how its different from a port probe - what
> does on top of checking that a port is open? Does it send some handshake
> message that a server responds to when initialization is finished?
pg_isready uses a PQping function that reports the current Postgres status. The
main advantage of pg_isready is that it uses the Postgres protocol to report
the server status. A port probe is not a sufficient step to determine if the
server is running and accepting connections. Why? A Postgres server can be
running but in a state that disallows connections such as during a startup or
crash recovery phase. pg_isready is capable of reporting such state
(PQPING_REJECT -- 1) [1].
We could include a sentence explaining that a port probe is not a sufficient
condition to successfully connect to a Postgres server because the state
machine has more than 2 states. PQping [1] already states "reports the status
of the server" and describe each state it provides. Feel free to suggest an
improvement to documentation.
> People here are telling that `pg_isready` is not reliable and that
> `pg_isready` may return when database is not actually ready
> https://github.com/docker-library/postgres/issues/880#issuecomment-1004251102
> Without further info about `pg_isready` it is not clear if it should be
> filled as a bug. Or if it should be filled as a bug only when an
> initialization script is involved.
There is no known issues with pg_isready and that report isn't clear. He says
"database and/or user wasn't available". What's the exact error message? If
there is a reproducible test case, share it here.
[1] https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PQPINGPARAMS
--
Euler Taveira
EDB https://www.enterprisedb.com/
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-docs@postgresql.org
Cc: euler@eulerto.com, anatoli@rainforce.org, pgsql-docs@lists.postgresql.org
Subject: Re: pg_isready docs doesn't specify what exactly it is checking
In-Reply-To: <d42e67fa-57ca-412d-8055-dca522a091db@www.fastmail.com>
* 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