blob: b1b9deba691876b0e48a4a884044061e30fe43d5 [file] [log] [blame]
-- Tests FTS can handle DNS error.
-- to make test deterministic and fast
!\retcode gpconfig -c gp_fts_probe_retries -v 2 --masteronly;
-- Allow extra time for mirror promotion to complete recovery to avoid
-- gprecoverseg BEGIN failures due to gang creation failure as some primaries
-- are not up. Setting these increase the number of retries in gang creation in
-- case segment is in recovery. Approximately we want to wait 30 seconds.
!\retcode gpconfig -c gp_gang_creation_retry_count -v 127 --skipvalidation --masteronly;
!\retcode gpconfig -c gp_gang_creation_retry_timer -v 250 --skipvalidation --masteronly;
!\retcode gpstop -u;
-- no down segment in the beginning
select count(*) from gp_segment_configuration where status = 'd';
-- probe to make sure when we call gp_request_fts_probe_scan() next
-- time below, don't overlap with auto-trigger of FTS scans by FTS
-- process. As if that happens, due to race condition will not trigger
-- the fault and fail the test.
select gp_request_fts_probe_scan();
-- trigger a DNS error
select gp_inject_fault_infinite('get_dns_cached_address', 'skip', 1);
select gp_request_fts_probe_scan();
select gp_inject_fault_infinite('get_dns_cached_address', 'reset', 1);
-- verify a fts failover happens
select count(*) from gp_segment_configuration where status = 'd';
-- fully recover the failed primary as new mirror
!\retcode gprecoverseg -aF --no-progress;
-- loop while segments come in sync
select wait_until_all_segments_synchronized()
!\retcode gprecoverseg -ar;
-- loop while segments come in sync
select wait_until_all_segments_synchronized()
-- verify no segment is down after recovery
select count(*) from gp_segment_configuration where status = 'd';
!\retcode gpconfig -r gp_fts_probe_retries --masteronly;
!\retcode gpconfig -r gp_gang_creation_retry_count --skipvalidation --masteronly;
!\retcode gpconfig -r gp_gang_creation_retry_timer --skipvalidation --masteronly;
!\retcode gpstop -u;