Add ps display while waiting for wal in read_local_xlog_page_guts

Started by sirisha chamarthiover 3 years ago4 messageshackers
Beta feature

Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.

appliessuccessCI history

You can run a PostgreSQL built from this patch straight from Docker, with no checkout and no build:

docker run --rm -p 5432:5432 ghcr.io/hackorum-dev/postgres-patch:t47739
psql -h localhost -U postgres

Built from patchset v1 (message #1), September 20, 2026 at 05:22 AM.

Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:

git clone --branch t47739_1 https://github.com/hackorum-dev/postgres.git

In a checkout you already have, add the fork once:

git remote add hackorum https://github.com/hackorum-dev/postgres.git

then, for this patchset and every later one:

git fetch hackorum t47739_1 && git checkout t47739_1

Patchset v1 (message #1) is on t47739_1

Jump to latest
#1sirisha chamarthi
sirichamarthi22@gmail.com

Hi,

pg_create_logical_replication_slot can take longer than usual on a standby
when there is no activity on the primary. We don't have enough information
in the pg_stat_activity or process title to debug why this is taking so
long. Attached a small patch to update the process title while waiting for
the wal in read_local_xlog_page_guts. Any thoughts on introducing a new
wait event too?

For example, in my setup, slot creation took 8 minutes 13 seconds. It only
succeeded after I ran select txid_current() on primary.

postgres=# select pg_create_logical_replication_slot('s1','test_decoding');

pg_create_logical_replication_slot
------------------------------------
(s1,0/C096D10)
(1 row)

Time: 493365.995 ms (08:13.366)

Thanks,
Sirisha

Attachments:

t47739_1
0001-set-ps-display_while-waiting-for-wal.patchapplication/octet-stream; name=0001-set-ps-display_while-waiting-for-wal.patchDownload+7-2
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: sirisha chamarthi (#1)
Re: Add ps display while waiting for wal in read_local_xlog_page_guts

sirisha chamarthi <sirichamarthi22@gmail.com> writes:

pg_create_logical_replication_slot can take longer than usual on a standby
when there is no activity on the primary. We don't have enough information
in the pg_stat_activity or process title to debug why this is taking so
long. Attached a small patch to update the process title while waiting for
the wal in read_local_xlog_page_guts. Any thoughts on introducing a new
wait event too?

set_ps_display is a fairly expensive operation on a lot of platforms,
so I'm concerned about the overhead this proposal would add. However,
getting rid of that pg_usleep in favor of a proper wait event seems
like a good idea.

regards, tom lane

#3Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: sirisha chamarthi (#1)
Re: Add ps display while waiting for wal in read_local_xlog_page_guts

Hi,

On 4/13/23 12:43 AM, sirisha chamarthi wrote:

Hi,

pg_create_logical_replication_slot can take longer than usual on a standby when there is no activity on the primary. We don't have enough information in the pg_stat_activity or process title to debug why this is taking so long. Attached a small patch to update the process title while waiting for the wal in read_local_xlog_page_guts. Any thoughts on introducing a new wait event too?

For example, in my setup, slot creation took 8 minutes 13 seconds. It only succeeded after I ran select txid_current() on primary.

FWIW, this behavior has been mentioned in 0fdab27ad6 and a new function (pg_log_standby_snapshot()) has been created/documented to accelerate the slot creation on the standby.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

#4Bertrand Drouvot
bertranddrouvot.pg@gmail.com
In reply to: Tom Lane (#2)
Re: Add ps display while waiting for wal in read_local_xlog_page_guts

Hi,

On 4/13/23 4:29 AM, Tom Lane wrote:

sirisha chamarthi <sirichamarthi22@gmail.com> writes:

pg_create_logical_replication_slot can take longer than usual on a standby
when there is no activity on the primary. We don't have enough information
in the pg_stat_activity or process title to debug why this is taking so
long. Attached a small patch to update the process title while waiting for
the wal in read_local_xlog_page_guts.

Thanks for the patch!

Any thoughts on introducing a new

wait event too?

set_ps_display is a fairly expensive operation on a lot of platforms,
so I'm concerned about the overhead this proposal would add. However,
getting rid of that pg_usleep in favor of a proper wait event seems
like a good idea.

+1 for adding a proper wait event.

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com