On Fri, Feb 5, 2021 at 5:15 PM Bharath Rupireddy
<bharath.rupireddyforpostg...@gmail.com> wrote:
>
> pg_terminate_backend and pg_cancel_backend with postmaster PID produce
> "PID XXXX is not a PostgresSQL server process" warning [1], which
> basically implies that the postmaster is not a PostgreSQL process at
> all. This is a bit misleading because the postmaster is the parent of
> all PostgreSQL processes. Should we improve the warning message if the
> given PID is postmasters' PID?
>
> If yes, how about  a generic message for both of the functions -
> "signalling postmaster process is not allowed" or "cannot signal
> postmaster process" or some other better suggestion?
>
> [1] 2471176 ---> is postmaster PID.
> postgres=# select pg_terminate_backend(2471176);
> WARNING:  PID 2471176 is not a PostgreSQL server process
>  pg_terminate_backend
> ----------------------
>  f
> (1 row)
> postgres=# select pg_cancel_backend(2471176);
> WARNING:  PID 2471176 is not a PostgreSQL server process
>  pg_cancel_backend
> -------------------
>  f
> (1 row)

I'm attaching a small patch that emits a warning "signalling
postmaster with PID %d is not allowed" for postmaster and "signalling
PostgreSQL server process with PID %d is not allowed" for auxiliary
processes such as checkpointer, background writer, walwriter.

However, for stats collector and sys logger processes, we still get
"PID XXXXX is not a PostgreSQL server process" warning because they
don't have PGPROC entries(??). So BackendPidGetProc and
AuxiliaryPidGetProc will not help and even pg_stat_activity is not
having these processes' pid.

With Regards,
Bharath Rupireddy.
EnterpriseDB: http://www.enterprisedb.com

Attachment: v1-0001-Improve-PID-XXXX-is-not-a-PostgreSQL-server-proce.patch
Description: Binary data

Reply via email to