Re: refactor backend type lists

From: Álvaro Herrera <alvherre(at)kurilemu(dot)de>
To: Euler Taveira <euler(at)eulerto(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: refactor backend type lists
Date: 2025-07-28 21:13:44
Message-ID: 202507282113.vdp4axehoppi@alvherre.pgsql
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2025-Jul-28, Euler Taveira wrote:

> On Tue, Jul 15, 2025, at 3:30 PM, Álvaro Herrera wrote:

> > Second, in discussion [2] leading to commit 18d67a8d7d30 (Nov 2024) it
> > was agreed to add support for translating backend type descriptions.
> > I'm not really sure that this is useful. It would be, if set_ps_display
> > and pg_stat_activity used translated names, so that you could match what
> > log messages say with what the process lists show. But I think we've
> > historically not translated those. We have a few translatable strings
> > as the argument of HandleChildCrash() in postmaster.c, but those are
> > using names that are yet a third source of strings; I'm not a fan of
> > this. (For staters, if a translation decided to use non-ascii chars for
> > process names, would that work okay in set_ps_display? I bet it
> > wouldn't, because that's using strlen()). So I would propose to rewind
> > a bit here, and remove translation from all those places so that the
> > output is consistent (== usable) between log messages and ps/pg_stat_activity.
>
> I'm not sure if it is a good idea to have translated backend description. The
> init_ps_display() output is certainly used to obtain information (PID?) from a
> process list. There is also the option %b from log_line_prefix that is used to
> filter log messages per backend type. The same applies to backend_type column
> from pg_stat_activity view.

I should have let you know that I spent some time on this today as well
to avoid duplicating efforts. Here are my patches, incorporating your
fixup -- I hadn't looked at your 0004 yet, so I wrote it differently,
passing the BackendType enum directly to LogChildExit (as well as
HandleChildCrash), so it is the former function that does the call to
GetBackendTypeDesc() to obtain the string. I think this is better
because the untranslated part of the sentence is enclosed in quotes,
which I think is better. However it meant I had to add a bit of a hack
to cope with the background worker separate bgw_type string.

So I came up with things as attached, incorporating your 0003 fixup.
What do you think?

This is likely not final, because the lines for background workers look
a bit inconsistent:

2025-07-28 23:10:02.316 CEST worker_spi dynamic[1876557] FATAL: terminating background worker "worker_spi dynamic" due to administrator command
2025-07-28 23:10:02.317 CEST postmaster[1876543] LOG: "background worker" process of type "logical replication launcher" (PID 1876552) exited with exit code 1

(I, for one, would be VERY HAPPY to not have to translate the phrase
"background worker". There's just no reasonable way.)

--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/

Attachment Content-Type Size
v2-0001-Create-a-separate-file-listing-backend-types.patch text/x-diff 7.0 KB
v2-0002-LogChildExit-HandleChildCrash-support.patch text/x-diff 13.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jacob Champion 2025-07-28 21:21:44 Re: restore_command return code behaviour
Previous Message Doruk Yilmaz 2025-07-28 21:13:27 Re: [Patch] add new parameter to pg_replication_origin_session_setup