diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index fe31b7b62ec..29c56ef7c59 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -7256,7 +7256,19 @@ FROM pg_stat_get_backend_idset() AS backendid;
initializing
The command is preparing to begin scanning the heap. This phase is
- expected to be very brief.
+ expected to be very brief, except for
+ REPACK CONCURRENTLY, where it also covers enabling
+ logical decoding and then initializing it. Enabling has nothing to do
+ if is already
+ logical; 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
+ REPACK CONCURRENTLY, which holds a transaction ID
+ until it finishes.
@@ -7288,7 +7300,10 @@ FROM pg_stat_get_backend_idset() AS backendid;
REPACK CONCURRENTLY is currently processing the DML
commands that other transactions executed during any of the preceding
- phases.
+ phases. This phase also covers waiting for the ACCESS
+ EXCLUSIVE 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.