mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-01-27 10:20:10 +00:00
Additionally run on_role_change callback in post_recover() for a primary that failed to start after a crash to increase chances the callback is executed, even if the further start as a replica fails --------- Co-authored-by: Alexander Kukushkin <cyberdemn@gmail.com>
36 lines
1.8 KiB
Gherkin
36 lines
1.8 KiB
Gherkin
Feature: recovery
|
|
We want to check that crashed postgres is started back
|
|
|
|
Scenario: check that timeline is not incremented when primary is started after crash
|
|
Given I start postgres-0
|
|
Then postgres-0 is a leader after 10 seconds
|
|
And there is a non empty initialize key in DCS after 15 seconds
|
|
When I start postgres-1
|
|
And I add the table foo to postgres-0
|
|
Then table foo is present on postgres-1 after 20 seconds
|
|
When I kill postmaster on postgres-0
|
|
Then postgres-0 role is the primary after 10 seconds
|
|
When I issue a GET request to http://127.0.0.1:8008/
|
|
Then I receive a response code 200
|
|
And I receive a response role primary
|
|
And I receive a response timeline 1
|
|
And "members/postgres-0" key in DCS has state=running after 12 seconds
|
|
And replication works from postgres-0 to postgres-1 after 15 seconds
|
|
|
|
Scenario: check immediate failover when master_start_timeout=0
|
|
Given I issue a PATCH request to http://127.0.0.1:8008/config with {"master_start_timeout": 0}
|
|
Then I receive a response code 200
|
|
And Response on GET http://127.0.0.1:8008/config contains master_start_timeout after 10 seconds
|
|
When I kill postmaster on postgres-0
|
|
Then postgres-1 is a leader after 10 seconds
|
|
And postgres-1 role is the primary after 10 seconds
|
|
|
|
Scenario: check crashed primary demotes after failed attempt to start
|
|
Given I issue a PATCH request to http://127.0.0.1:8009/config with {"master_start_timeout": null}
|
|
Then I receive a response code 200
|
|
And postgres-0 role is the replica after 10 seconds
|
|
When I ensure postgres-1 fails to start after a failure
|
|
When I kill postmaster on postgres-1
|
|
Then postgres-0 is a leader after 10 seconds
|
|
And there is a postgres-1_cb.log with "on_role_change demoted batman" in postgres-1 data directory
|