blob: 138701a32244106eae85d1390e672608d91674e0 [file] [log] [blame]
1:CREATE TABLE crash_test_redundant(c1 int);
1:SELECT role, preferred_role, content, status FROM gp_segment_configuration;
-- transaction of session 2 suspend after inserted 'COMMIT' record
1:select gp_inject_fault_infinite('dtm_broadcast_commit_prepared', 'suspend', 1);
-- checkpoint suspend before scanning proc array
1:select gp_inject_fault_infinite('checkpoint_dtx_info', 'suspend', 1);
1&:CHECKPOINT;
-- wait till checkpoint reaches intended point
2:select gp_wait_until_triggered_fault('checkpoint_dtx_info', 1, 1);
-- the 'COMMIT' record is logically after REDO pointer
2&:insert into crash_test_redundant values (1), (2), (3);
-- resume checkpoint
3:select gp_inject_fault('checkpoint_dtx_info', 'reset', 1);
1<:
-- wait till insert reaches intended point
1:select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 1, 1);
-- trigger crash on QD
1:select gp_inject_fault('exec_simple_query_start', 'panic', current_setting('gp_dbid')::smallint);
-- verify master panic happens. The PANIC message does not emit sometimes so
-- mask it.
-- start_matchsubs
-- m/PANIC: fault triggered, fault name:'exec_simple_query_start' fault type:'panic'\n/
-- s/PANIC: fault triggered, fault name:'exec_simple_query_start' fault type:'panic'\n//
-- end_matchsubs
1:select 1;
2<:
-- transaction of session 2 should be recovered properly
4:select * from crash_test_redundant;