| From: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com> |
|---|---|
| To: | Nathan Bossart <nathandbossart(at)gmail(dot)com> |
| Cc: | Sergei Kornilov <sk(at)zsrv(dot)org>, Олег Самойлов <splarv(at)ya(dot)ru>, pgsql-bugs(at)lists(dot)postgresql(dot)org, Álvaro Herrera <alvherre(at)kurilemu(dot)de> |
| Subject: | Re: basic_archive lost archive_directory |
| Date: | 2026-02-10 01:23:02 |
| Message-ID: | CAHGQGwFzC+HYEwJGhpmu1NBiQp_Ln8t0z9CDt8QCQDnUtFAFYA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
On Tue, Feb 10, 2026 at 6:58 AM Nathan Bossart <nathandbossart(at)gmail(dot)com> wrote:
>
> On Tue, Feb 10, 2026 at 02:46:39AM +0900, Fujii Masao wrote:
> > basic_archive is usually loaded only by the archiver via archive_library.
> > In that case, errors reported by check_archive_directory() are not logged
> > by default, since GUC check hook errors are normally emitted only by
> > the postmaster. As a result, misconfigurations (e.g., a non-existent
> > archive_directory) may go unnoticed, which is problematic for users.
>
> I don't think this is true. With default parameters, I see the following
> in my logs with a misconfigured archive directory setting:
>
> 2026-02-09 15:53:10.372 CST [12803] WARNING: invalid value for parameter "basic_archive.archive_directory": "/does/not/exist"
> 2026-02-09 15:53:10.372 CST [12803] DETAIL: Specified archive directory does not exist.
You're right if an invalid value for basic_archive.archive_directory is detected
at server startup. However, when the setting is changed and the configuration
is reloaded, the default behavior does not emit an error log.
Please see the steps below.
-----------------------------------
initdb -D data
mkdir arch
cat <<EOF >> data/postgresql.conf
archive_mode = on
archive_library = 'basic_archive'
basic_archive.archive_directory = '../arch'
EOF
pg_ctl -D data start
echo "basic_archive.archive_directory = 'not_exists'" >> data/postgresql.conf
pg_ctl -D data reload
-----------------------------------
With these steps, the only log messages I see are:
-----------------------------------
LOG: received SIGHUP, reloading configuration files
LOG: parameter "basic_archive.archive_directory" changed to "not_exists"
-----------------------------------
BTW, if basic_archive is specified in shared_preload_libraries, the same steps
produce:
-----------------------------------
LOG: invalid value for parameter "basic_archive.archive_directory":
"not_exists"
DETAIL: Specified archive directory does not exist.
LOG: configuration file "/hoge/data/postgresql.conf" contains errors;
unaffected changes were applied
-----------------------------------
Similarly, lowering the archiver log level to DEBUG3 (for example,
via log_min_messages = 'warning,archiver:debug3') also results in:
-----------------------------------
DEBUG: invalid value for parameter "basic_archive.archive_directory":
"not_exists"
DETAIL: Specified archive directory does not exist.
DEBUG: configuration file
"/System/Volumes/Data/dav/head-pgsql/data/postgresql.conf" contains
errors; unaffected changes were applied
-----------------------------------
This illustrates that, with default settings, the error can go unnoticed
on reload.
Regards,
--
Fujii Masao
| From | Date | Subject | |
|---|---|---|---|
| Next Message | jian he | 2026-02-10 02:11:04 | Re: Possibly a bug |
| Previous Message | Michael Paquier | 2026-02-10 00:37:09 | Re: BUG #19393: pg_upgrade fails with duplicate key violation when CHECK constraint named *_not_null exists |