Skip to content

Commit 0699429

Browse files
authored
[PGPRO-5387] Vanilla fixed idle replica archiving (#458)
See https://www.postgresql.org/message-id/flat/20210901.121225.1339494423357751537.horikyota.ntt%40gmail.com#ba576416b65f28725488861280805e84 So we can revert two workarounds: * Revert "[PGPRO-5378] fix unstable tests.replica.ReplicaTest.test_replica_archive_page_backup" This reverts commit 90b9b57. * Revert ""fix" unstable backup.BackupTest.test_backup_with_less_privileges_role (disable tests in archive mode from replica)" This reverts commit 5dcd1ce.
1 parent 0834e54 commit 0699429

File tree

2 files changed

+21
-34
lines changed

2 files changed

+21
-34
lines changed

tests/backup.py

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2351,47 +2351,45 @@ def test_backup_with_less_privileges_role(self):
23512351

23522352
replica.slow_start(replica=True)
23532353

2354-
# Archive backups from replica in this test are disabled,
2355-
# because WAL archiving on replica in idle DB in PostgreSQL is broken:
2356-
# replica will not archive the previous WAL until it receives new records in the next WAL file,
2357-
# this "lazy" archiving can be seen in src/backend/replication/walreceiver.c:XLogWalRcvWrite()
2358-
# (see !XLByteInSeg checking and XLogArchiveNotify() calling).
2359-
#
23602354
# self.switch_wal_segment(node)
2361-
#self.backup_node(
2362-
# backup_dir, 'replica', replica,
2363-
# datname='backupdb', options=['-U', 'backup'])
2355+
# self.switch_wal_segment(node)
2356+
2357+
self.backup_node(
2358+
backup_dir, 'replica', replica,
2359+
datname='backupdb', options=['-U', 'backup'])
23642360

23652361
# stream full backup from replica
23662362
self.backup_node(
23672363
backup_dir, 'replica', replica,
23682364
datname='backupdb', options=['--stream', '-U', 'backup'])
23692365

2366+
# self.switch_wal_segment(node)
2367+
23702368
# PAGE backup from replica
2371-
#self.switch_wal_segment(node)
2372-
#self.backup_node(
2373-
# backup_dir, 'replica', replica, backup_type='page',
2374-
# datname='backupdb', options=['-U', 'backup', '--archive-timeout=30s'])
2369+
self.switch_wal_segment(node)
2370+
self.backup_node(
2371+
backup_dir, 'replica', replica, backup_type='page',
2372+
datname='backupdb', options=['-U', 'backup', '--archive-timeout=30s'])
23752373

23762374
self.backup_node(
23772375
backup_dir, 'replica', replica, backup_type='page',
23782376
datname='backupdb', options=['--stream', '-U', 'backup'])
23792377

23802378
# DELTA backup from replica
2381-
#self.switch_wal_segment(node)
2382-
#self.backup_node(
2383-
# backup_dir, 'replica', replica, backup_type='delta',
2384-
# datname='backupdb', options=['-U', 'backup'])
2379+
self.switch_wal_segment(node)
2380+
self.backup_node(
2381+
backup_dir, 'replica', replica, backup_type='delta',
2382+
datname='backupdb', options=['-U', 'backup'])
23852383
self.backup_node(
23862384
backup_dir, 'replica', replica, backup_type='delta',
23872385
datname='backupdb', options=['--stream', '-U', 'backup'])
23882386

23892387
# PTRACK backup from replica
23902388
if self.ptrack:
2391-
#self.switch_wal_segment(node)
2392-
#self.backup_node(
2393-
# backup_dir, 'replica', replica, backup_type='ptrack',
2394-
# datname='backupdb', options=['-U', 'backup'])
2389+
self.switch_wal_segment(node)
2390+
self.backup_node(
2391+
backup_dir, 'replica', replica, backup_type='ptrack',
2392+
datname='backupdb', options=['-U', 'backup'])
23952393
self.backup_node(
23962394
backup_dir, 'replica', replica, backup_type='ptrack',
23972395
datname='backupdb', options=['--stream', '-U', 'backup'])

tests/replica.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -291,16 +291,6 @@ def test_replica_archive_page_backup(self):
291291

292292
self.wait_until_replica_catch_with_master(master, replica)
293293

294-
master.pgbench_init(scale=5)
295-
# Continuous making some changes on master,
296-
# because WAL archiving on replica in idle DB in PostgreSQL is broken:
297-
# replica will not archive the previous WAL until it receives new records in the next WAL file,
298-
# this "lazy" archiving can be seen in src/backend/replication/walreceiver.c:XLogWalRcvWrite()
299-
# (see !XLByteInSeg checking and XLogArchiveNotify() calling).
300-
pgbench = master.pgbench(
301-
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
302-
options=['-T', '3', '-c', '1', '--no-vacuum'])
303-
304294
backup_id = self.backup_node(
305295
backup_dir, 'replica', replica,
306296
options=[
@@ -309,9 +299,6 @@ def test_replica_archive_page_backup(self):
309299
'--master-db=postgres',
310300
'--master-port={0}'.format(master.port)])
311301

312-
pgbench.wait()
313-
pgbench.stdout.close()
314-
315302
self.validate_pb(backup_dir, 'replica')
316303
self.assertEqual(
317304
'OK', self.show_pb(backup_dir, 'replica', backup_id)['status'])
@@ -334,6 +321,8 @@ def test_replica_archive_page_backup(self):
334321
# Change data on master, make PAGE backup from replica,
335322
# restore taken backup and check that restored data equal
336323
# to original data
324+
master.pgbench_init(scale=5)
325+
337326
pgbench = master.pgbench(
338327
options=['-T', '30', '-c', '2', '--no-vacuum'])
339328

0 commit comments

Comments
 (0)