I have set archive_timeout to 300 seconds (5 min). Yet WAL files remain open for a very long time (hours). My postgresql.conf file includes:
archive_mode = on
archive_timeout = 300
archive_command = '/usr/local/internal/pgarchive.sh "%p" "%f"'
restore_command = '/usr/local/internal/pgrestore.sh "%f" "%p"'
wal_level = logical
And I don't see any errors on postgresql 13.5 startup. The pgsql 13.5 pg_wal directory contains:
drwx------ 3 postgres postgres 4096 Oct 19 15:51 .
drwx------ 19 postgres postgres 4096 Oct 19 15:31 ..
-rw------- 1 postgres postgres 348 Oct 19 15:31 000000010000000000000097.00000028.backup
-rw------- 1 postgres postgres 16777216 Oct 19 15:51 00000001000000000000009A
-rw------- 1 postgres postgres 16777216 Oct 19 15:56 00000001000000000000009B
-rw------- 1 postgres postgres 16777216 Oct 19 15:31 00000001000000000000009C
-rw------- 1 postgres postgres 16777216 Oct 19 15:36 00000001000000000000009D
-rw------- 1 postgres postgres 16777216 Oct 19 15:41 00000001000000000000009E
drwx------ 2 postgres postgres 4096 Oct 19 15:56 archive_status
And the archive directory contains:
drwxrwxrwx 2 postgres postgres 4096 Oct 19 15:56 .
drwxrwxrwx 4 root root 4096 Oct 18 20:57 ..
-rw------- 1 postgres postgres 16777216 Oct 19 15:30 000000010000000000000094
-rw------- 1 postgres postgres 16777216 Oct 19 15:30 000000010000000000000095
-rw------- 1 postgres postgres 16777216 Oct 19 15:31 000000010000000000000096
-rw------- 1 postgres postgres 16777216 Oct 19 15:31 000000010000000000000097
-rw------- 1 postgres postgres 348 Oct 19 15:31 000000010000000000000097.00000028.backup
-rw------- 1 postgres postgres 16777216 Oct 19 15:36 000000010000000000000098
-rw------- 1 postgres postgres 16777216 Oct 19 15:41 000000010000000000000099
-rw------- 1 postgres postgres 16777216 Oct 19 15:51 00000001000000000000009A
-rw------- 1 postgres postgres 16777216 Oct 19 15:56 00000001000000000000009B
As you can see the pg_wal directory contains files 9C, 9D, and 9E which have not yet been archived. (9D and 9E are probably recycled old wal's not yet used as per comment below). But 9B has been open for an hour or more. Why is it not being archived?
Why is postgresql not forcing a new logfile every 5 min?