|
|
|
@ -226,6 +226,14 @@ check_conflict_stat("tablespace"); |
|
|
|
|
$sect = "startup deadlock"; |
|
|
|
|
$expected_conflicts++; |
|
|
|
|
|
|
|
|
|
# Want to test recovery deadlock conflicts, not buffer pin conflicts. Without |
|
|
|
|
# changing max_standby_streaming_delay it'd be timing dependent what we hit |
|
|
|
|
# first |
|
|
|
|
$node_standby->adjust_conf('postgresql.conf', 'max_standby_streaming_delay', |
|
|
|
|
"${PostgreSQL::Test::Utils::timeout_default}s"); |
|
|
|
|
$node_standby->restart(); |
|
|
|
|
reconnect_and_clear(); |
|
|
|
|
|
|
|
|
|
# Generate a few dead rows, to later be cleaned up by vacuum. Then acquire a |
|
|
|
|
# lock on another relation in a prepared xact, so it's held continuously by |
|
|
|
|
# the startup process. The standby psql will block acquiring that lock while |
|
|
|
@ -281,6 +289,9 @@ check_conflict_stat("deadlock"); |
|
|
|
|
|
|
|
|
|
# clean up for next tests |
|
|
|
|
$node_primary->safe_psql($test_db, qq[ROLLBACK PREPARED 'lock';]); |
|
|
|
|
$node_standby->adjust_conf('postgresql.conf', 'max_standby_streaming_delay', '50ms'); |
|
|
|
|
$node_standby->restart(); |
|
|
|
|
reconnect_and_clear(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check that expected number of conflicts show in pg_stat_database. Needs to |
|
|
|
|