diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 62f2a3332bd..bf7625d9889 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -3422,7 +3422,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i last_archived_wal text - Name of the last WAL file successfully archived + Name of the WAL file most recently successfully archived @@ -3431,7 +3431,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i last_archived_time timestamp with time zone - Time of the last successful archive operation + Time of the most recent successful archive operation @@ -3449,7 +3449,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i last_failed_wal text - Name of the WAL file of the last failed archival operation + Name of the WAL file of the most recent failed archival operation @@ -3458,7 +3458,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i last_failed_time timestamp with time zone - Time of the last failed archival operation + Time of the most recent failed archival operation @@ -3474,6 +3474,15 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i + + Normally, WAL files are archived in order, oldest to newest, but that is + not guaranteed, and does not hold under special circumstances like when + promoting a standby or after crash recovery. Therefore it is not safe to + assume that all files older than + last_archived_wal have also been successfully + archived. + + diff --git a/src/test/recovery/t/028_pitr_timelines.pl b/src/test/recovery/t/028_pitr_timelines.pl index c0b76fe37b2..a8b12d9af6e 100644 --- a/src/test/recovery/t/028_pitr_timelines.pl +++ b/src/test/recovery/t/028_pitr_timelines.pl @@ -36,7 +36,6 @@ use File::Compare; # Initialize and start primary node with WAL archiving my $node_primary = PostgreSQL::Test::Cluster->new('primary'); $node_primary->init(has_archiving => 1, allows_streaming => 1); -$node_primary->append_conf('postgresql.conf', 'log_min_messages=debug1'); $node_primary->start; # Take a backup. @@ -70,7 +69,6 @@ $node_standby->init_from_backup( has_archiving => 1, has_restoring => 0); $node_standby->append_conf('postgresql.conf', 'archive_mode = always'); -$node_standby->append_conf('postgresql.conf', 'log_min_messages=debug1'); $node_standby->start; $node_primary->wait_for_catchup($node_standby); @@ -93,15 +91,8 @@ my $walfile_to_be_archived = $node_standby->safe_psql('postgres', # Make WAL segment eligible for archival $node_standby->safe_psql('postgres', 'SELECT pg_switch_wal()'); -# Wait until the WAL segment has been archived. -my $archive_wait_query = - "SELECT '$walfile_to_be_archived' <= last_archived_wal FROM pg_stat_archiver;"; -$node_standby->poll_query_until('postgres', $archive_wait_query) - or die "Timed out while waiting for WAL segment to be archived"; -my $last_archived_wal_file = $walfile_to_be_archived; - -# Ok, the standby has now archived the WAL on timeline 2. We don't -# need the standby anymore. +# We don't need the standby anymore, request shutdown. The server will +# finish archiving all the WAL on timeline 2 before it exits. $node_standby->stop; # Contents of the WAL archive at this point: