Обсуждение: SELECT pg_reload_conf(); returning true despite hba file loading was failed

Поиск
Список
Период
Сортировка

SELECT pg_reload_conf(); returning true despite hba file loading was failed

От
RAJAMOHAN
Дата:
Hello all,

I came across this situation, where I was allowing some new ip-address to connect to the database. But while making the change in the hba file i added a invalid character by mistake. And i reloaded using the pg_reload_conf function, it returns true. I thought everything was fine, until the client people reported that they were still not able to login to the database.

After checking the logs, I found out that the hba file was not loaded successfully because of the invalid character. My concern is why pg_reload_conf is returning true if the load was unsuccessful.  

Is there any option to check if the load is successful or not, without going through the logs?


PostgreSQL 10.15 (Ubuntu 10.15-0ubuntu0.18.04.1)

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t


In logs below error was reported:

line 45 of configuration file ""/******************/pg_hba.conf"""
LOG,00000,"pg_hba.conf was not reloaded",,,,,,,,"SIGHUP_handler, postmaster.c:2642",""   \



Thanks & Regards,
Rajamohan.J
Mobile : +91 8098167651, +91 7259157485

Re: SELECT pg_reload_conf(); returning true despite hba file loading was failed

От
Raj kumar
Дата:
Hi all ,

I also faced the same issue when I tried to set host authentication to peer. As peer is not supported for host, I expected a failure in "pg_ctl reload" that didnt happen. Reload showed signaled true.  But in pg_log, there were errors saying that reload was unsuccessful since I've set peer for host. 

Any reason why reload works in that way without throwing error?

Thanks,
Raj

On Fri, 5 Feb 2021, 11:30 RAJAMOHAN, <garajamohan@gmail.com> wrote:
Hello all,

I came across this situation, where I was allowing some new ip-address to connect to the database. But while making the change in the hba file i added a invalid character by mistake. And i reloaded using the pg_reload_conf function, it returns true. I thought everything was fine, until the client people reported that they were still not able to login to the database.

After checking the logs, I found out that the hba file was not loaded successfully because of the invalid character. My concern is why pg_reload_conf is returning true if the load was unsuccessful.  

Is there any option to check if the load is successful or not, without going through the logs?


PostgreSQL 10.15 (Ubuntu 10.15-0ubuntu0.18.04.1)

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t


In logs below error was reported:

line 45 of configuration file ""/******************/pg_hba.conf"""
LOG,00000,"pg_hba.conf was not reloaded",,,,,,,,"SIGHUP_handler, postmaster.c:2642",""   \



Thanks & Regards,
Rajamohan.J
Mobile : +91 8098167651, +91 7259157485

Re: SELECT pg_reload_conf(); returning true despite hba file loading was failed

От
Tom Lane
Дата:
RAJAMOHAN <garajamohan@gmail.com> writes:
> After checking the logs, I found out that the hba file was not loaded
> successfully because of the invalid character. My concern is
> why pg_reload_conf is returning true if the load was unsuccessful.

A true result only indicates that a SIGHUP signal was sent to the
postmaster; your backend process has no visibility into whether the
signal was even received, never mind whether the postmaster did
what you wanted.  (I thought this was adequately documented, but it
seems not.)

> Is there any option to check if the load is successful or not, without
> going through the logs?

The pg_hba_file_rules view can help you debug a faulty pg_hba file.

            regards, tom lane



Re: SELECT pg_reload_conf(); returning true despite hba file loading was failed

От
"David G. Johnston"
Дата:

On Thursday, February 4, 2021, Tom Lane <tgl@sss.pgh.pa.us> wrote:
RAJAMOHAN <garajamohan@gmail.com> writes:
> After checking the logs, I found out that the hba file was not loaded
> successfully because of the invalid character. My concern is
> why pg_reload_conf is returning true if the load was unsuccessful.

A true result only indicates that a SIGHUP signal was sent to the
postmaster; your backend process has no visibility into whether the
signal was even received, never mind whether the postmaster did
what you wanted.  (I thought this was adequately documented, but it
seems not.)

My and Heikki’s recent changes to address this are only in head, not v13 or earlier.

David J. 

Re: SELECT pg_reload_conf(); returning true despite hba file loading was failed

От
RAJAMOHAN
Дата:
Thanks Tom.

pg_hba_file_rules view will be helpful.


Thanks & Regards,
Rajamohan.J
Oracle DBA / Postgresql DBA
Mobile : +91 8098167651, +91 7259157485


On Fri, Feb 5, 2021 at 12:02 PM David G. Johnston <david.g.johnston@gmail.com> wrote:

On Thursday, February 4, 2021, Tom Lane <tgl@sss.pgh.pa.us> wrote:
RAJAMOHAN <garajamohan@gmail.com> writes:
> After checking the logs, I found out that the hba file was not loaded
> successfully because of the invalid character. My concern is
> why pg_reload_conf is returning true if the load was unsuccessful.

A true result only indicates that a SIGHUP signal was sent to the
postmaster; your backend process has no visibility into whether the
signal was even received, never mind whether the postmaster did
what you wanted.  (I thought this was adequately documented, but it
seems not.)

My and Heikki’s recent changes to address this are only in head, not v13 or earlier.

David J.