BUG #15663: set update_process_title =on/off did not take effect

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #15663: set update_process_title =on/off did not take effect
Дата
Msg-id 15663-326924e96377961d@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #15663: set update_process_title =on/off did not take effect
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15663
Logged by:          DamionZ Zhao
Email address:      zhq651@126.com
PostgreSQL version: 11.1
Operating system:   linux
Description:

1.before setting
=================
postgres=# \! ps ux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
stream    7978  0.0  0.0 125128  2104 pts/4    S+   13:33   0:00
/data3/damion/stream/run/bin/psql -p 6668 -d postgres -U postgres
stream    7979  0.0  0.0 292452  4840 ?        Ss   13:33   0:00 postgres:
postgres postgres [local] 
stream    8582  0.0  0.0 151028  1848 pts/4    R+   13:33   0:00 ps ux
stream   27385  0.0  0.0 291368 16988 pts/6    S    Mar01   0:01
/data3/damion/stream/run/bin/postgres -D /data3/damion/stream/data
stream   27387  0.0  0.0 291588  4816 ?        Ss   Mar01   0:00 postgres:
checkpointer   
stream   27388  0.0  0.0 291524  2992 ?        Ss   Mar01   0:00 postgres:
background writer   
stream   27389  0.0  0.0 291480  5852 ?        Ss   Mar01   0:00 postgres:
walwriter   
stream   27390  0.0  0.0 291964  2580 ?        Ss   Mar01   0:01 postgres:
autovacuum launcher   
stream   27391  0.0  0.0 141728  1640 ?        Ss   Mar01   0:02 postgres:
stats collector   
stream   27393  0.0  0.0 291792  2336 ?        Ss   Mar01   0:00 postgres:
logical replication launcher   
stream   27426  0.0  0.0 292456  3320 ?        Ss   Mar01   0:00 postgres:
walsender replica *.*.137.152(47426) streaming 0/312F240
postgres=# show update_process_title 
postgres-# ;
 update_process_title 
----------------------
 off
(1 row)

2.begin to set
==============
postgres=# set update_process_title =on;
SET
postgres=# \! pg_ctl reload
server signaled
postgres=# show update_process_title ;
 update_process_title 
----------------------
 on
(1 row)

postgres=# create table t54(f1 int);
CREATE TABLE

3.check ps-title can be updated?
postgres=# \! ps ux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
stream    7978  0.0  0.0 125128  2244 pts/4    S+   13:33   0:00
/data3/damion/stream/run/bin/psql -p 6668 -d postgres -U postgres
stream    7979  0.0  0.0 293072  7424 ?        Ss   13:33   0:00 postgres:
postgres postgres [local] idle
stream   27385  0.0  0.0 291368 16988 pts/6    S    Mar01   0:01
/data3/damion/stream/run/bin/postgres -D /data3/damion/stream/data
stream   27387  0.0  0.0 291588  4816 ?        Ss   Mar01   0:00 postgres:
checkpointer   
stream   27388  0.0  0.0 291524  2996 ?        Ss   Mar01   0:00 postgres:
background writer   
stream   27389  0.0  0.0 291480  5852 ?        Ss   Mar01   0:00 postgres:
walwriter   
stream   27390  0.0  0.0 291964  2580 ?        Ss   Mar01   0:01 postgres:
autovacuum launcher   
stream   27391  0.0  0.0 141728  1640 ?        Ss   Mar01   0:02 postgres:
stats collector    
stream   27393  0.0  0.0 291792  2336 ?        Ss   Mar01   0:00 postgres:
logical replication launcher   
stream   27426  0.0  0.0 292456  3320 ?        Ss   Mar01   0:00 postgres:
walsender replica 100.95.137.152(47426) streaming 0/312F240

lsn is still as before (streaming 0/312F240) in ps-title .

but will be ok, when modify postgres.conf and reload.

I find the following code in guc.c

        {"update_process_title", PGC_SUSET, PROCESS_TITLE,
            gettext_noop("Updates the process title to show the active SQL
command."),
            gettext_noop("Enables updating of the process title every time a new SQL
command is received by the server.")
        },

PGC_SUSET means user can modify it online.  Yes, it's true by showing
update_process_title command.
but did not take effect. so I add debug-log in walsender.c like this:

        /* Report progress of XLOG streaming in PS display */
        if (update_process_title)
        {
                char            activitymsg[50];
                ereport(NOTICE,
                         (errmsg("xxxxxxxx update_process_title is
true.")));
                snprintf(activitymsg, sizeof(activitymsg), "streaming
%X/%X",
                                 (uint32) (sentPtr >> 32), (uint32)
sentPtr);
                set_ps_display(activitymsg, false);
        }
and test it like this
-------------------
postgres=# create table t8(f1 int);
CREATE TABLE
2019-03-02 15:53:36.621 CST [18452] NOTICE:  xxxxxxxx update_process_title
is true.
postgres=# 2019-03-02 15:53:36.800 CST [24102] DEBUG:  autovacuum:
processing database "postgres"

postgres=# 2019-03-02 15:53:38.531 CST [18452] NOTICE:  xxxxxxxx
update_process_title is true.

postgres=# set update_process_title =off;
SET
postgres=# show update_process_title 
postgres-# ;
 update_process_title 
----------------------
 off
(1 row)

postgres=# create table t9(f1 int);
CREATE TABLE
2019-03-02 15:54:00.779 CST [18452] NOTICE:  xxxxxxxx update_process_title
is true.

so not matter update_process_title is off or on,  the global variable
update_process_title value is always true.

Is it reasonable???

4. other test
============
when I modify update_process_title in postgres.conf and  pg_ctl reload.  it
will take effect.
so its behavior is same as PGC_SIGHUP. It's so confusing.


В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Guy Rouillier"
Дата:
Сообщение: Re: pgAdmin - Download as CSV
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #15663: set update_process_title =on/off did not take effect