pgsql: windows: Only consider us to be running as service if stderr is - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: windows: Only consider us to be running as service if stderr is
Date
Msg-id E1mNgNG-0006YO-Qg@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
windows: Only consider us to be running as service if stderr is invalid.

Previously pgwin32_is_service() would falsely return true when postgres is
started from somewhere within a service, but not as a service. That is
e.g. always the case with windows docker containers, which some CI services
use to run windows tests in.

When postgres falsely thinks its running as a service, no messages are
writting to stdout / stderr. That can be very confusing and causes a few tests
to fail.

To fix additionally check if stderr is invalid in pgwin32_is_service(). For
that to work in backend processes, pg_ctl is changed to pass down handles so
that postgres can do the same check (otherwise "default" handles are created).

While this problem exists in all branches, there have been no reports by
users, the prospective CI usage currently is only for master, and I am not a
windows expert. So doing the change in only master for now seems the sanest
approach.

Author: Andres Freund <andres@anarazel.de>
Reviewed-By: Magnus Hagander <magnus@hagander.net>
Discussion: https://postgr.es/m/20210305185752.3up5eq2eanb7ofmb@alap3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/76e38b37a5f179d4c9d2865ff31b79130407530b

Modified Files
--------------
src/bin/pg_ctl/pg_ctl.c  | 33 +++++++++++++++++++++++++++++++++
src/port/win32security.c | 18 +++++++++++++++---
2 files changed, 48 insertions(+), 3 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Finish reverting 3eda9fc09fd6b9a1aec2d0113c633c69c3214b4d.
Next
From: Magnus Hagander
Date:
Subject: pgsql: Consistently use read-only instead of "read only"