postgres.git / summary / log / commit / refs
commit bd2aebd7a7fe38b8ad832a10d5bfd1d841f048d8
Author: Masahiko Sawada <msawada@postgresql.org>
Date: Wed Sep 23 21:57:48 2026 +0000
doc: Clarify phase descriptions of pg_stat_progress_repack.
The "initializing" phase was described as expected to be very brief,
but for REPACK (CONCURRENTLY), it also covers enabling and
initializing logical decoding, either of which can take a long
time. Also, the "catch-up" phase includes waiting for the ACCESS
EXCLUSIVE lock needed to swap the files, which was not mentioned.
Adding separate progress phases for these steps is left for v20; for
v19 we only clarify the description.
Author: Sami Imseih <samimseih.pg@gmail.com>
Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
Reviewed-by: Manuel Reyes Bravo <manuelreyesbravo@gmail.com>
Discussion: https://postgr.es/m/CAN12%2BYJOeOyPYB5JS28VE_%2Brzg%3DRbzQXfj58TGfMYwv-TX9mJA%40mail.gmail.com
Backpatch-through: 19
doc/src/sgml/monitoring.sgml | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 62dadf3e86c..0d038de1a23 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -7601,7 +7601,19 @@ FROM pg_stat_get_backend_idset() AS backendid;
<entry><literal>initializing</literal></entry>
<entry>
The command is preparing to begin scanning the heap. This phase is
- expected to be very brief.
+ expected to be very brief, except for
+ <command>REPACK CONCURRENTLY</command>, where it also covers enabling
+ logical decoding and then initializing it. Enabling has nothing to do
+ if <xref linkend="guc-effective-wal-level"/> is already
+ <literal>logical</literal>; otherwise it waits for all processes to
+ acknowledge that they started writing the additional WAL information
+ that logical decoding requires. Initializing then waits for the
+ transactions that have been assigned a transaction ID to end, including
+ ones that started while this wait was in progress, so this phase can
+ last longer than the longest transaction running when the command
+ started. This includes any other
+ <command>REPACK CONCURRENTLY</command>, which holds a transaction ID
+ until it finishes.
</entry>
</row>
<row>
@@ -7633,7 +7645,10 @@ FROM pg_stat_get_backend_idset() AS backendid;
<entry>
<command>REPACK CONCURRENTLY</command> is currently processing the DML
commands that other transactions executed during any of the preceding
- phases.
+ phases. This phase also covers waiting for the <literal>ACCESS
+ EXCLUSIVE</literal> lock needed to swap the files, so a command blocked
+ by a conflicting lock stays in this phase.
+ This phase is skipped when not in concurrent mode.
</entry>
</row>
<row>