提交 748f86fb 编写于 作者: A Asim R P

Update answer files according to the new fault injector API

Remove NOTICE messages that follow a gp_inject_fault() select statement.
Replace the boolean value with text 'Success:' returned by the new
interfae.

For reference, the following sed script was used to identify 't'
following a ' gp_inject_fault ' line:

/^ gp_inject_fault $/{
   $!{ N
       :again1
       N
       s/ t$/ Success:/
       t again1
     }
   }
上级 590ac108
......@@ -67,20 +67,16 @@ end;
-- the following gp_inject_fault_infinite don't dirty the
-- buffer again.
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
NOTICE: Success:
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault_infinite
--------------------------
t
t
t
t
t
t
t
t
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
-- Start with a clean slate (no dirty buffers).
......@@ -88,27 +84,21 @@ checkpoint;
-- Skip checkpoints.
select gp_inject_fault_infinite('checkpoint', 'skip', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault_infinite
--------------------------
t
t
t
Success:
Success:
Success:
(3 rows)
-- Suspend bgwriter.
select gp_inject_fault_infinite('fault_in_background_writer_main', 'suspend', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault_infinite
--------------------------
t
t
t
Success:
Success:
Success:
(3 rows)
-- Ensure no buffers are dirty before we start.
......@@ -146,27 +136,21 @@ select sum(num_dirty('fsync_test2'::regclass)) > 0 as passed
-- Flush all dirty pages by BgBufferSync()
select gp_inject_fault_infinite('bg_buffer_sync_default_logic', 'skip', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault_infinite
--------------------------
t
t
t
Success:
Success:
Success:
(3 rows)
-- Resume bgwriter.
select gp_inject_fault('fault_in_background_writer_main', 'resume', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault
-----------------
t
t
t
Success:
Success:
Success:
(3 rows)
-- Wait until bgwriter sweeps through and writes out dirty buffers.
......@@ -188,27 +172,21 @@ select wait_for_bgwriter('fsync_test2'::regclass, 25) as passed;
-- Inject fault to count relfiles fsync'ed by checkpointer.
select gp_inject_fault_infinite('fsync_counter', 'skip', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault_infinite
--------------------------
t
t
t
Success:
Success:
Success:
(3 rows)
-- Resume checkpoints.
select gp_inject_fault('checkpoint', 'reset', dbid)
from gp_segment_configuration where role = 'p' and content > -1;
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault
-----------------
t
t
t
Success:
Success:
Success:
(3 rows)
checkpoint;
......@@ -224,27 +202,23 @@ select dirty_buffers() from gp_dist_random('gp_id')
-- fsync_test1 and fsync_test2 tables. `num times hit` is corresponding
-- to the number of files synced by `fsync_counter` fault type.
select gp_inject_fault('fsync_counter', 'status', 2::smallint);
NOTICE: Success: fault name:'fsync_counter' fault type:'skip' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra arg:'0' fault injection state:'triggered' num times hit:'5' (seg0 127.0.1.1:25432 pid=24489)
gp_inject_fault
-----------------
t
gp_inject_fault
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'fsync_counter' fault type:'skip' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra arg:'0' fault injection state:'triggered' num times hit:'6' +
(1 row)
-- Reset all faults.
select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration;
NOTICE: Success:
NOTICE: Success: (seg0 127.0.1.1:25432 pid=24489)
NOTICE: Success: (seg1 127.0.1.1:25433 pid=24490)
NOTICE: Success: (seg2 127.0.1.1:25434 pid=24491)
gp_inject_fault
-----------------
t
t
t
t
t
t
t
t
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
......@@ -105,10 +105,9 @@ SHOW data_checksums;
-- skip FTS probes always
SELECT gp_inject_fault_infinite('fts_probe', 'skip', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
SELECT gp_request_fts_probe_scan();
......@@ -118,10 +117,9 @@ SELECT gp_request_fts_probe_scan();
(1 row)
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- Corrupt a heap table
......@@ -247,13 +245,12 @@ set gp_disable_tuple_hints=off;
checkpoint;
-- skip all further checkpoint
select gp_inject_fault_infinite('checkpoint', 'skip', dbid) from gp_segment_configuration where role = 'p';
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- set the hint bit on (the buffer will be marked dirty)
......@@ -293,13 +290,12 @@ ERROR: invalid page in block 0 of relation base/81967/81939 (seg0 slice1 127.0
-- trigger recovery on primaries with multiple retries and ignore warning/notice messages
select gp_inject_fault_infinite('finish_prepared_after_record_commit_prepared', 'panic', dbid) from gp_segment_configuration where role = 'p';
WARNING: consider disabling FTS probes while injecting a panic.
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
set client_min_messages='ERROR';
......@@ -317,23 +313,21 @@ select count(*) from corrupt_heap_checksum.mark_buffer_dirty_hint;
-- reset the fault injector
select gp_inject_fault('checkpoint', 'reset', dbid) from gp_segment_configuration where role = 'p';
NOTICE: Success:
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
select gp_inject_fault('finish_prepared_after_record_commit_prepared', 'reset', dbid) from gp_segment_configuration where role = 'p';
NOTICE: Success:
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- Clean up. We don't want to leave the corrupt tables lying around!
......@@ -342,9 +336,8 @@ DROP SCHEMA corrupt_heap_checksum CASCADE;
NOTICE: drop cascades to 13 other objects
-- resume fts
SELECT gp_inject_fault('fts_probe', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -4,7 +4,7 @@
select gp_inject_fault_infinite('before_xlog_xact_commit_prepared', 'suspend', 3);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- trigger a 2PC, and it will block at commit;
......@@ -20,7 +20,7 @@ CREATE
select gp_wait_until_triggered_fault('before_xlog_xact_commit_prepared', 1, 3);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- do checkpoint on segment content 1 in utility mode, and it should block
......@@ -30,7 +30,7 @@ select gp_wait_until_triggered_fault('before_xlog_xact_commit_prepared', 1, 3);
select gp_inject_fault('before_xlog_xact_commit_prepared', 'reset', 3);
gp_inject_fault
-----------------
t
Success:
(1 row)
2<: <... completed>
COMMIT
......@@ -44,7 +44,7 @@ CHECKPOINT
select gp_inject_fault_infinite('onephase_transaction_commit', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- trigger a 2PC, and it will block at commit;
......@@ -60,7 +60,7 @@ DROP
select gp_wait_until_triggered_fault('onephase_transaction_commit', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- do checkpoint on master in utility mode, and it should block
......@@ -70,7 +70,7 @@ select gp_wait_until_triggered_fault('onephase_transaction_commit', 1, 1);
select gp_inject_fault('onephase_transaction_commit', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
2<: <... completed>
COMMIT
......
......@@ -7,7 +7,7 @@ CREATE
SELECT gp_inject_fault('before_acquire_lock_during_create_ao_blkdir_table', 'suspend', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Attempt to concurrently create an index
......@@ -15,13 +15,13 @@ SELECT gp_inject_fault('before_acquire_lock_during_create_ao_blkdir_table', 'sus
SELECT gp_wait_until_triggered_fault('before_acquire_lock_during_create_ao_blkdir_table', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
2>: CREATE INDEX index_deadlocking_test_table_idx2 ON index_deadlocking_test_table (value); <waiting ...>
SELECT gp_inject_fault('before_acquire_lock_during_create_ao_blkdir_table', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Both index creation attempts should succeed
......
......@@ -17,7 +17,7 @@ CREATE
1:select gp_inject_fault_infinite('dtm_broadcast_commit_prepared', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
2&:insert into crash_test_table values (1), (11), (111), (1111); <waiting ...>
3&:create table crash_test_ddl(c1 int); <waiting ...>
......@@ -26,7 +26,7 @@ CREATE
1:select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 2, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
1:CHECKPOINT;
CHECKPOINT
......@@ -38,14 +38,14 @@ CHECKPOINT
1:select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 3, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- transaction of session 5 didn't insert 'COMMIT' record
1:select gp_inject_fault_infinite('transaction_abort_after_distributed_prepared', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
5&:INSERT INTO crash_test_table VALUES (3), (33), (333), (3333); <waiting ...>
......@@ -53,26 +53,28 @@ CHECKPOINT
1:select gp_wait_until_triggered_fault('transaction_abort_after_distributed_prepared', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- check injector status
1:select gp_inject_fault('dtm_broadcast_commit_prepared', 'status', 1);
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'dtm_broadcast_commit_prepared' fault type:'suspend' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra arg:'0' fault injection state:'triggered' num times hit:'3'
(1 row)
1:select gp_inject_fault('transaction_abort_after_distributed_prepared', 'status', 1);
gp_inject_fault
-----------------
t
gp_inject_fault
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'transaction_abort_after_distributed_prepared' fault type:'suspend' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra arg:'0' fault injection state:'triggered' num times hit:'1'
(1 row)
-- trigger crash
1:select gp_inject_fault('before_read_command', 'panic', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1:select 1;
PANIC: fault triggered, fault name:'before_read_command' fault type:'panic'
......
......@@ -17,13 +17,13 @@ CREATE
1:select gp_inject_fault_infinite('dtm_broadcast_commit_prepared', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- checkpoint suspend before scanning proc array
1:select gp_inject_fault_infinite('checkpoint_dtx_info', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1&:CHECKPOINT; <waiting ...>
......@@ -31,7 +31,7 @@ CREATE
2:select gp_wait_until_triggered_fault('checkpoint_dtx_info', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- the 'COMMIT' record is logically after REDO pointer
2&:insert into crash_test_redundant values (1); <waiting ...>
......@@ -40,7 +40,7 @@ CREATE
3:select gp_inject_fault('checkpoint_dtx_info', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
CHECKPOINT
......@@ -49,13 +49,13 @@ CHECKPOINT
1:select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- trigger crash
1:select gp_inject_fault('before_read_command', 'panic', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- start_ignore
-- We ignore the output here because PANIC output is intermittent and is
......
......@@ -38,12 +38,12 @@ CREATE
select gp_inject_fault('transaction_start_under_entry_db_singleton', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault_infinite('transaction_start_under_entry_db_singleton', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- The QD should already hold RowExclusiveLock and ExclusiveLock on
......@@ -53,9 +53,10 @@ select gp_inject_fault_infinite('transaction_start_under_entry_db_singleton', 's
-- verify the fault hit
select gp_inject_fault('transaction_start_under_entry_db_singleton', 'status', 1);
gp_inject_fault
-----------------
t
gp_inject_fault
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'transaction_start_under_entry_db_singleton' fault type:'suspend' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra arg:'0' fault injection state:'triggered' num times hit:'1'
(1 row)
-- This session will wait for ExclusiveLock on
......@@ -71,12 +72,12 @@ select gp_inject_fault('transaction_start_under_entry_db_singleton', 'status', 1
select gp_inject_fault('transaction_start_under_entry_db_singleton', 'resume', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('transaction_start_under_entry_db_singleton', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- verify the deadlock across multiple pids with same mpp session id
......
......@@ -35,13 +35,13 @@ INSERT 1
1: SELECT gp_inject_fault('distributedlog_advance_oldest_xmin', 'suspend', '', 'postgres', '', 1, -1, 5, dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
3&:@db_name postgres: SELECT count(*) > 0 from gp_dist_random('gp_id'); <waiting ...>
1: SELECT gp_wait_until_triggered_fault('distributedlog_advance_oldest_xmin', 1, dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
2: COMMIT;
COMMIT
......@@ -53,7 +53,7 @@ INSERT 1
1: SELECT gp_inject_fault('distributedlog_advance_oldest_xmin', 'reset', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
3<: <... completed>
?column?
......
......@@ -56,7 +56,7 @@ select gp_request_fts_probe_scan();
select gp_inject_fault_infinite('get_dns_cached_address', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
select gp_request_fts_probe_scan();
gp_request_fts_probe_scan
......@@ -66,7 +66,7 @@ select gp_request_fts_probe_scan();
select gp_inject_fault_infinite('get_dns_cached_address', 'reset', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- verify a fts failover happens
......
......@@ -98,7 +98,7 @@ server stopped
select gp_inject_fault_infinite('get_dns_cached_address', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- trigger failover
......@@ -127,7 +127,7 @@ select gp_request_fts_probe_scan();
select gp_inject_fault('get_dns_cached_address', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- session 1: in no transaction and no temp table created, it's safe to
......
......@@ -13,12 +13,12 @@ INSERT 10
SELECT gp_inject_fault('upgrade_row_lock', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT gp_inject_fault('upgrade_row_lock', 'sleep', '', '', '', 1, -1, 10, 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
3&: SELECT * FROM func1(1); <waiting ...>
......@@ -39,5 +39,5 @@ SELECT gp_inject_fault('upgrade_row_lock', 'sleep', '', '', '', 1, -1, 10, 1);
SELECT gp_inject_fault('upgrade_row_lock', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -5,7 +5,7 @@ CREATE
select gp_inject_fault('heap_insert', 'infinite_loop', '', '', 'terminate_backend_t', 1, 1, 0, dbid) from gp_segment_configuration where content = 1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- expect this command to be terminated by 'test pg_terminate_backend'
......@@ -14,7 +14,7 @@ select gp_inject_fault('heap_insert', 'infinite_loop', '', '', 'terminate_backen
select gp_wait_until_triggered_fault('heap_insert', 1, dbid) from gp_segment_configuration where content = 1 and role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- extract the pid for the previous query
......@@ -35,7 +35,7 @@ server closed the connection unexpectedly
select gp_inject_fault('heap_insert', 'reset', dbid) from gp_segment_configuration where content = 1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- the table should be empty if insert was terminated
......
......@@ -5,7 +5,7 @@ CREATE
SELECT gp_inject_fault_infinite('reindex_db', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1:@db_name reindexdb1: CREATE TABLE heap1(a INT, b INT);
CREATE
......@@ -13,14 +13,14 @@ CREATE
SELECT gp_wait_until_triggered_fault('reindex_db', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
2:@db_name reindexdb1:DROP TABLE heap1;
DROP
SELECT gp_inject_fault('reindex_db', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- reindex should complete fine
1<: <... completed>
......@@ -43,13 +43,13 @@ COMMIT
SELECT gp_inject_fault_infinite('reindex_relation', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
3&: REINDEX TABLE reindex_index1; <waiting ...>
SELECT gp_wait_until_triggered_fault('reindex_relation', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- create one more index
CREATE INDEX reindex_index1_idx2 on reindex_index1 (a);
......@@ -57,7 +57,7 @@ CREATE
SELECT gp_inject_fault('reindex_relation', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
3<: <... completed>
REINDEX
......
......@@ -10,7 +10,7 @@ INSERT 100
select gp_inject_fault_infinite('reindex_relation', 'suspend', 2);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- The reindex_relation fault should be hit
......@@ -18,7 +18,7 @@ select gp_inject_fault_infinite('reindex_relation', 'suspend', 2);
2: select gp_wait_until_triggered_fault('reindex_relation', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- The insert should for reindex in session 1
2&: insert into test_fastseqence select i , 'aa'||i from generate_series(1,100) i; <waiting ...>
......@@ -26,7 +26,7 @@ select gp_inject_fault_infinite('reindex_relation', 'suspend', 2);
select gp_inject_fault('reindex_relation', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
......
......@@ -22,12 +22,12 @@ SET
SELECT gp_inject_fault('resgroup_assigned_on_master', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT gp_inject_fault('resgroup_assigned_on_master', 'error', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- end_ignore
2: BEGIN;
......
select gp_inject_fault('sync_rep_query_cancel', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('wal_sender_loop', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
create or replace function wait_for_replication(iterations int) returns bool as $$ begin /* in func */ for i in 1 .. iterations loop /* in func */ if exists (select waiting_reason from pg_stat_activity where sess_id in (select sess_id from store_session_id) and waiting_reason = 'replication') then /* in func */ return true; /* in func */ end if; /* in func */ perform pg_sleep(0.1); /* in func */ perform pg_stat_clear_snapshot(); /* in func */ end loop; /* in func */ return false; /* in func */ end; /* in func */ $$ language plpgsql VOLATILE;
......@@ -34,7 +34,7 @@ INSERT 1
select gp_inject_fault_infinite('finish_prepared_start_of_function', 'suspend', 2);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- Expect: `create table` should be blocked until reset
-- `wal_sender_loop`. We also verify the `sync_rep_query_cancel` is
......@@ -43,19 +43,19 @@ select gp_inject_fault_infinite('finish_prepared_start_of_function', 'suspend',
select gp_wait_until_triggered_fault('finish_prepared_start_of_function', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- now pause the wal sender on primary for content 0
select gp_inject_fault_infinite('wal_sender_loop', 'suspend', 2);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- let the transaction move forward with the commit
select gp_inject_fault('finish_prepared_start_of_function', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- loop to reach waiting_reason=replication
0U: select wait_for_replication(200);
......@@ -67,7 +67,7 @@ select gp_inject_fault('finish_prepared_start_of_function', 'reset', 2);
select gp_inject_fault_infinite('sync_rep_query_cancel', 'skip', 2);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
0U: select pg_cancel_backend(pid) from pg_stat_activity where waiting_reason='replication' and sess_id in (select sess_id from store_session_id);
pg_cancel_backend
......@@ -78,7 +78,7 @@ select gp_inject_fault_infinite('sync_rep_query_cancel', 'skip', 2);
select gp_wait_until_triggered_fault('sync_rep_query_cancel', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- EXPECT: the query is still in waiting mode, to verify the cancel is ignored.
0U: select waiting_reason from pg_stat_activity where sess_id in (select sess_id from store_session_id);
......@@ -90,7 +90,7 @@ select gp_wait_until_triggered_fault('sync_rep_query_cancel', 1, 2);
select gp_inject_fault('wal_sender_loop', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
CREATE
......@@ -98,5 +98,5 @@ CREATE
select gp_inject_fault('sync_rep_query_cancel', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -34,12 +34,12 @@ INSERT 1
select gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- force scan to trigger the fault
select gp_request_fts_probe_scan();
......@@ -51,7 +51,7 @@ select gp_request_fts_probe_scan();
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- stop a mirror and show commit on dbid 2 will block
......@@ -119,7 +119,7 @@ COMMIT
select gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- everything should be back to normal
......
......@@ -18,7 +18,7 @@ select application_name, state, sync_state from pg_stat_replication;
select gp_inject_fault('dtm_broadcast_commit_prepared', 'suspend', dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1&: create table committed_by_standby(a int, b int); <waiting ...>
......@@ -26,7 +26,7 @@ select gp_inject_fault('dtm_broadcast_commit_prepared', 'suspend', dbid) from gp
select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 1, dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- Scenario2: standby broadcasts abort-prepared for a transaction that
......@@ -37,12 +37,12 @@ select gp_wait_until_triggered_fault('dtm_broadcast_commit_prepared', 1, dbid) f
select gp_inject_fault('transaction_abort_after_distributed_prepared', 'error', dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('transaction_abort_failure', 'suspend', dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
2&: create table aborted_by_standby(a int, b int); <waiting ...>
......@@ -50,7 +50,7 @@ select gp_inject_fault('transaction_abort_failure', 'suspend', dbid) from gp_seg
select gp_wait_until_triggered_fault('transaction_abort_failure', 1, dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- Promote standby
......@@ -86,7 +86,7 @@ LINE 1: select count(*) from aborted_by_standby;
select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration where content = -1 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
CREATE
......
......@@ -24,7 +24,7 @@ CREATE
1:SELECT gp_inject_fault_infinite('checkpoint_after_redo_calculated', 'suspend', dbid) FROM gp_segment_configuration WHERE role = 'p' AND content = 1;
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
2&:CHECKPOINT; <waiting ...>
3:INSERT INTO t VALUES (1, 0);
......@@ -40,7 +40,7 @@ INSERT 25
1:SELECT gp_inject_fault_infinite('checkpoint_after_redo_calculated', 'reset', dbid) FROM gp_segment_configuration WHERE role = 'p' AND content = 1;
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
2<: <... completed>
CHECKPOINT
......
......@@ -48,12 +48,12 @@ INSERT 1
select gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- force scan to trigger the fault
select gp_request_fts_probe_scan();
......@@ -65,7 +65,7 @@ select gp_request_fts_probe_scan();
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- stop a mirror
......@@ -92,7 +92,7 @@ INSERT 1
select gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- trigger fts probe and check to see primary marked n/u and mirror still n/u as
......@@ -153,7 +153,7 @@ COMMIT
select gp_inject_fault_infinite('initialize_wal_sender', 'suspend', dbid) from gp_segment_configuration where role='p' and content=2;
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- bring the mirror back up and see primary s/u and mirror s/u
......@@ -166,7 +166,7 @@ select gp_inject_fault_infinite('initialize_wal_sender', 'suspend', dbid) from g
select gp_wait_until_triggered_fault('initialize_wal_sender', 1, dbid) from gp_segment_configuration where role='p' and content=2;
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- make sure the walsender on primary is in startup
select state from gp_stat_replication where gp_segment_id=2;
......@@ -191,7 +191,7 @@ select content, role, preferred_role, mode, status from gp_segment_configuration
select gp_inject_fault('initialize_wal_sender', 'reset', dbid) from gp_segment_configuration where role='p' and content=2;
gp_inject_fault
-----------------
t
Success:
(1 row)
select wait_for_streaming(2::smallint);
wait_for_streaming
......
......@@ -8,7 +8,7 @@ CREATE
SELECT gp_inject_fault('base_backup_post_create_checkpoint', 'suspend', dbid) FROM gp_segment_configuration WHERE content=-1 and role='p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Run pg_basebackup which should trigger and suspend at the fault
......@@ -18,7 +18,7 @@ SELECT gp_inject_fault('base_backup_post_create_checkpoint', 'suspend', dbid) FR
SELECT gp_wait_until_triggered_fault('base_backup_post_create_checkpoint', 1, dbid) FROM gp_segment_configuration WHERE content=-1 and role='p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- See that pg_basebackup is still running
......@@ -54,7 +54,7 @@ CHECKPOINT
SELECT gp_inject_fault('base_backup_post_create_checkpoint', 'reset', dbid) FROM gp_segment_configuration WHERE content=-1 and role='p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Wait until basebackup finishes
......
......@@ -103,7 +103,7 @@ select dbid from gp_segment_configuration where content = 0 and role = 'p';
select gp_inject_fault_infinite('fts_handle_message', 'infinite_loop', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- trigger failover
......
......@@ -61,18 +61,18 @@ SET
1:SELECT gp_inject_fault_infinite('start_prepare', 'infinite_loop', dbid) FROM gp_segment_configuration WHERE content = 0 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1&:CREATE TABLE tolerance_test_table(an_int int); <waiting ...>
2:SELECT gp_wait_until_triggered_fault('start_prepare', 1, dbid) FROM gp_segment_configuration WHERE content = 0 AND role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
2:SELECT gp_inject_fault_infinite('fts_handle_message', 'error', dbid) FROM gp_segment_configuration WHERE content = 0 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- do fts probe request twice to guarantee the fault is triggered
2:SELECT gp_request_fts_probe_scan();
......@@ -91,12 +91,12 @@ ERROR: FTS detected connection lost during dispatch to seg0 127.0.0.1:25432 pid
1:SELECT gp_inject_fault('start_prepare', 'reset', dbid) FROM gp_segment_configuration WHERE content = 0 AND role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('fts_handle_message', 'reset', dbid) FROM gp_segment_configuration WHERE content = 0 AND role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT role, preferred_role FROM gp_segment_configuration WHERE content = 0;
role | preferred_role
......@@ -115,18 +115,18 @@ LINE 1: INSERT INTO tolerance_test_table VALUES(42);
1:SELECT gp_inject_fault_infinite('transaction_abort_after_distributed_prepared', 'suspend', dbid) FROM gp_segment_configuration WHERE content = -1 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1&:CREATE TABLE tolerance_test_table(an_int int); <waiting ...>
3:SELECT gp_wait_until_triggered_fault('transaction_abort_after_distributed_prepared', 1, dbid) FROM gp_segment_configuration WHERE content = -1 AND role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
3:SELECT gp_inject_fault_infinite('fts_handle_message', 'error', dbid) FROM gp_segment_configuration WHERE content = 1 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- do fts probe request twice to guarantee the fault is triggered
3:SELECT gp_request_fts_probe_scan();
......@@ -142,7 +142,7 @@ LINE 1: INSERT INTO tolerance_test_table VALUES(42);
3:SELECT gp_inject_fault('transaction_abort_after_distributed_prepared', 'resume', dbid) FROM gp_segment_configuration WHERE content = -1 AND role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
CREATE
......@@ -150,12 +150,12 @@ CREATE
1:SELECT gp_inject_fault('transaction_abort_after_distributed_prepared', 'reset', dbid) FROM gp_segment_configuration WHERE content = -1 AND role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('fts_handle_message', 'reset', dbid) FROM gp_segment_configuration WHERE content = 1 AND role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT role, preferred_role FROM gp_segment_configuration WHERE content = 1;
role | preferred_role
......@@ -171,18 +171,18 @@ INSERT 1
1:SELECT gp_inject_fault_infinite('finish_prepared_start_of_function', 'infinite_loop', dbid) FROM gp_segment_configuration WHERE content = 2 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1&:DROP TABLE tolerance_test_table; <waiting ...>
4:SELECT gp_wait_until_triggered_fault('finish_prepared_start_of_function', 1, dbid) FROM gp_segment_configuration WHERE content = 2 AND role = 'p';
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
4:SELECT gp_inject_fault_infinite('fts_handle_message', 'error', dbid) FROM gp_segment_configuration WHERE content = 2 AND role = 'p';
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- do fts probe request twice to guarantee the fault is triggered
4:SELECT gp_request_fts_probe_scan();
......
......@@ -28,12 +28,12 @@ BEGIN
SELECT gp_inject_fault('create_gang_in_progress', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT gp_inject_fault('create_gang_in_progress', 'suspend', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
10&: SELECT * FROM foo a JOIN foo b USING (c2); <waiting ...>
......@@ -41,7 +41,7 @@ SELECT gp_inject_fault('create_gang_in_progress', 'suspend', 1);
SELECT gp_wait_until_triggered_fault('create_gang_in_progress', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE query = 'SELECT * FROM foo a JOIN foo b USING (c2);';
......@@ -53,7 +53,7 @@ SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE query = 'SELECT * F
SELECT gp_inject_fault('create_gang_in_progress', 'resume', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
10<: <... completed>
......
......@@ -73,18 +73,18 @@ UPDATE 10
3:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'suspend', '', '', 'crash_before_segmentfile_drop', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
2&:VACUUM crash_before_segmentfile_drop; <waiting ...>
3:SELECT gp_wait_until_triggered_fault('compaction_before_segmentfile_drop', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
3:SELECT gp_inject_fault('appendonly_insert', 'panic', '', '', 'crash_vacuum_in_appendonly_insert', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- VACUUM on crash_before_cleanup_phase will end up skipping the drop
......@@ -95,7 +95,7 @@ UPDATE 10
3:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'suspend', '', '', 'crash_before_cleanup_phase', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
3:BEGIN;
BEGIN
......@@ -108,7 +108,7 @@ BEGIN
3:SELECT gp_wait_until_triggered_fault('compaction_before_cleanup_phase', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
3:END;
END
......@@ -141,17 +141,17 @@ DETAIL:
1:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('appendonly_insert', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- perform post crash validation checks
......@@ -379,13 +379,13 @@ DELETE 3
2:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'suspend', '', '', 'crash_master_before_cleanup_phase', 1, -1, 0, 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1&:VACUUM crash_master_before_cleanup_phase; <waiting ...>
SELECT gp_wait_until_triggered_fault('compaction_before_cleanup_phase', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- wait for suspend faults to trigger and then proceed to run next
......@@ -394,7 +394,7 @@ SELECT gp_wait_until_triggered_fault('compaction_before_cleanup_phase', 1, 1);
2:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'panic', '', '', 'crash_master_before_segmentfile_drop', 1, -1, 0, 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
2:VACUUM crash_master_before_segmentfile_drop;
PANIC: fault triggered, fault name:'compaction_before_segmentfile_drop' fault type:'panic'
......@@ -410,12 +410,12 @@ server closed the connection unexpectedly
4:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
4:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- perform post crash validation checks
......@@ -570,7 +570,7 @@ UPDATE 1
4:SELECT gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
4:SELECT gp_request_fts_probe_scan();
gp_request_fts_probe_scan
......@@ -580,7 +580,7 @@ UPDATE 1
4:SELECT gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
4:SET gp_default_storage_options="appendonly=true,orientation=column";
SET
......@@ -599,7 +599,7 @@ UPDATE 10
4:SELECT gp_inject_fault('xlog_ao_insert', 'infinite_loop', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- This will cause file to be created on primary for segno 2 but crash
-- just before creating the xlog record. Hence, primary will have the
......@@ -608,7 +608,7 @@ UPDATE 10
5:SELECT gp_wait_until_triggered_fault('xlog_ao_insert', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- to make sure xlog gets flushed till this point to persist the
-- changes to pg_aocsseg.
......@@ -656,5 +656,5 @@ VACUUM
6:SELECT gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -68,25 +68,25 @@ UPDATE 10
3:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'suspend', '', '', 'crash_before_cleanup_phase', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1&:VACUUM crash_before_cleanup_phase; <waiting ...>
3:SELECT gp_wait_until_triggered_fault('compaction_before_cleanup_phase', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
3:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'suspend', '', '', 'crash_before_segmentfile_drop', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
2&:VACUUM crash_before_segmentfile_drop; <waiting ...>
3:SELECT gp_wait_until_triggered_fault('compaction_before_segmentfile_drop', 1, 2);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- we already waited for suspend faults to trigger and hence we can proceed to
......@@ -95,7 +95,7 @@ UPDATE 10
3:SELECT gp_inject_fault('appendonly_insert', 'panic', '', '', 'crash_vacuum_in_appendonly_insert', 1, -1, 0, 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
3:VACUUM crash_vacuum_in_appendonly_insert;
ERROR: fault triggered, fault name:'appendonly_insert' fault type:'panic' (seg0 127.0.0.1:25432 pid=21369)
......@@ -121,17 +121,17 @@ DETAIL:
1:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
1:SELECT gp_inject_fault('appendonly_insert', 'reset', 2);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- perform post crash validation checks
......@@ -323,13 +323,13 @@ DELETE 3
2:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'suspend', '', '', 'crash_master_before_cleanup_phase', 1, -1, 0, 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1&:VACUUM crash_master_before_cleanup_phase; <waiting ...>
2:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'panic', '', '', 'crash_master_before_segmentfile_drop', 1, -1, 0, 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- wait for suspend faults to trigger and then proceed to run next
......@@ -338,7 +338,7 @@ DELETE 3
SELECT gp_wait_until_triggered_fault('compaction_before_cleanup_phase', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
2:VACUUM crash_master_before_segmentfile_drop;
PANIC: fault triggered, fault name:'compaction_before_segmentfile_drop' fault type:'panic'
......@@ -354,12 +354,12 @@ server closed the connection unexpectedly
4:SELECT gp_inject_fault('compaction_before_cleanup_phase', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
4:SELECT gp_inject_fault('compaction_before_segmentfile_drop', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- perform post crash validation checks
......
......@@ -44,7 +44,7 @@
SELECT gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
SELECT gp_request_fts_probe_scan();
gp_request_fts_probe_scan
......@@ -54,7 +54,7 @@ SELECT gp_request_fts_probe_scan();
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
CREATE OR REPLACE FUNCTION test_excep (arg INTEGER) RETURNS INTEGER AS $$ DECLARE res INTEGER; /* in func */ BEGIN /* in func */ res := 100 / arg; /* in func */ RETURN res; /* in func */ EXCEPTION /* in func */ WHEN division_by_zero /* in func */ THEN RETURN 999; /* in func */ END; /* in func */ $$ LANGUAGE plpgsql;
CREATE
......@@ -243,5 +243,5 @@ LINE 1: select * from employees;
SELECT gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -10,7 +10,7 @@ CREATE
SELECT gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
SELECT gp_request_fts_probe_scan();
gp_request_fts_probe_scan
......@@ -25,7 +25,7 @@ SELECT gp_request_fts_probe_scan();
SELECT gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- expect: insert/update/select works
......@@ -103,5 +103,5 @@ DROP
SELECT gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -10,7 +10,7 @@ CREATE
SELECT gp_inject_fault_infinite('fts_probe', 'skip', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
SELECT gp_request_fts_probe_scan();
gp_request_fts_probe_scan
......@@ -25,7 +25,7 @@ SELECT gp_request_fts_probe_scan();
SELECT gp_wait_until_triggered_fault('fts_probe', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- expect: insert/update/select works
......@@ -83,5 +83,5 @@ DROP
SELECT gp_inject_fault('fts_probe', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -7,7 +7,7 @@
SELECT gp_inject_fault('collate_locale_os_lookup', 'error', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- The fault injector should prevent all collations from being created by
......@@ -28,7 +28,7 @@ select count(*) from pg_collation where collnamespace = (select oid from pg_name
SELECT gp_inject_fault('collate_locale_os_lookup', 'reset', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
--
......@@ -154,7 +154,7 @@ DROP
SELECT gp_inject_fault('collate_locale_os_lookup', 'error', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_segment_id, collname from gp_dist_random('pg_collation') where oid=(select oid from pg_collation where collname='locale_missing_on_one_segment');
......@@ -177,7 +177,7 @@ select gp_segment_id, collname from gp_dist_random('pg_collation') where collnam
SELECT gp_inject_fault('collate_locale_os_lookup', 'reset', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -216,7 +216,7 @@ INSERT 2
SELECT gp_inject_fault('collate_locale_os_lookup', 'error', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
-- This should error out
......@@ -226,6 +226,6 @@ ERROR: fault triggered, fault name:'collate_locale_os_lookup' fault type:'error
SELECT gp_inject_fault('collate_locale_os_lookup', 'reset', dbid) from gp_segment_configuration where content = 0 and role = 'p';
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -268,7 +268,7 @@ SELECT check_rules();
SELECT gp_inject_fault('create_resource_group_fail', 'error', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
CREATE RESOURCE GROUP rg1_test_group WITH (memory_limit=10, cpuset='0');
ERROR: fault triggered, fault name:'create_resource_group_fail' fault type:'error'
......@@ -284,7 +284,7 @@ SELECT check_rules();
SELECT gp_inject_fault('create_resource_group_fail', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
REVOKE ALL ON busy FROM role1_cpuset_test;
......
......@@ -10,7 +10,7 @@
select gp_inject_fault('all', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Given an append only table that is ready to be compacted
......@@ -33,7 +33,7 @@ select gp_toolkit.__gp_remove_ao_entry_from_cache('test_table_@orientation@'::re
select gp_inject_fault('before_creating_an_ao_hash_entry', 'suspend', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
-- And an insert transaction is blocked before assigning a segment
......@@ -43,20 +43,20 @@ select gp_inject_fault('before_creating_an_ao_hash_entry', 'suspend', 1);
select gp_wait_until_triggered_fault('before_creating_an_ao_hash_entry', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
select gp_inject_fault('vacuum_relation_open_relation_during_drop_phase', 'suspend', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
2&: VACUUM test_table_@orientation@; <waiting ...>
select gp_wait_until_triggered_fault('vacuum_relation_open_relation_during_drop_phase', 1, 1);
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- Then vacuum should have completed compaction leaving segment file 1
......@@ -94,7 +94,7 @@ select gp_toolkit.__gp_remove_ao_entry_from_cache('test_table_@orientation@'::re
select gp_inject_fault('before_creating_an_ao_hash_entry', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
INSERT 1
......@@ -113,7 +113,7 @@ select segno, state from gp_toolkit.__gp_get_ao_entry_from_cache('test_table_@or
select gp_inject_fault('vacuum_relation_open_relation_during_drop_phase', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
2<: <... completed>
VACUUM
......
......@@ -73,7 +73,7 @@ DELETE 100
1: select gp_inject_fault_infinite('vacuum_relation_open_relation_during_drop_phase', 'suspend', 1);
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
1&: vacuum ao_@orientation@_vacuum_cleanup3; <waiting ...>
......@@ -94,7 +94,7 @@ BEGIN
2: select gp_inject_fault('vacuum_relation_open_relation_during_drop_phase', 'reset', 1);
gp_inject_fault
-----------------
t
Success:
(1 row)
1<: <... completed>
......
......@@ -78,27 +78,24 @@ CREATE TABLE cursor_writer_reader (a int, b int) DISTRIBUTED BY (a);
BEGIN;
INSERT INTO cursor_writer_reader VALUES(1, 666);
select gp_inject_fault_infinite('qe_got_snapshot_and_interconnect', 'suspend', 2);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
DECLARE cursor_c2 CURSOR FOR SELECT * FROM cursor_writer_reader WHERE b=666 ORDER BY 1;
SAVEPOINT x;
UPDATE cursor_writer_reader SET b=333 WHERE b=666;
select gp_wait_until_triggered_fault('qe_got_snapshot_and_interconnect', 1, 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=31091)
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
select gp_inject_fault('qe_got_snapshot_and_interconnect', 'resume', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
FETCH cursor_c2;
......@@ -114,10 +111,9 @@ SELECT * FROM cursor_writer_reader WHERE b=666 ORDER BY 1;
END;
select gp_inject_fault('qe_got_snapshot_and_interconnect', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- start_ignore
......
......@@ -13,10 +13,9 @@ set dtx_phase2_retry_count = 11;
--
select gp_inject_fault('finish_prepared_start_of_function', 'error', '', '', '', 1, 10, 0, dbid)
from gp_segment_configuration where role = 'p' and status = 'u' and content = 1;
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
begin;
......@@ -46,17 +45,16 @@ WARNING: the distributed transaction 'Commit Prepared' broadcast failed to one
NOTICE: Releasing segworker group to retry broadcast.
-- Reset all faults.
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
t
t
t
t
t
t
t
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
-- Verify that the table got created properly on all segments.
......@@ -68,10 +66,9 @@ insert into dtm_retry_table select * from generate_series(1,12);
-- abort_some_prepared broadcast in 2nd phase.
select gp_inject_fault('start_prepare', 'error', dbid)
from gp_segment_configuration where role = 'p' and status = 'u' and content = 0;
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Let content 1 primary, which had successfully prepared the
......@@ -79,10 +76,9 @@ NOTICE: Success:
-- abort_some_prepared request.
select gp_inject_fault('finish_prepared_start_of_function', 'error', '', '', '', 1, 10, 0, dbid)
from gp_segment_configuration where role = 'p' and status = 'u' and content = 1;
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
begin;
......@@ -111,17 +107,16 @@ select count(*) = 12 from dtm_retry_table;
-- Reset all faults.
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
t
t
t
t
t
t
t
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
--
......@@ -131,19 +126,17 @@ NOTICE: Success:
-- abort_prepared broadcast in 2nd phase.
select gp_inject_fault('dtm_broadcast_prepare', 'error', dbid)
from gp_segment_configuration where role = 'p' and content = -1;
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Let content 0 primary error out 10 times during second phase.
select gp_inject_fault('finish_prepared_start_of_function', 'error', '', '', '', 1, 10, 0, dbid)
from gp_segment_configuration where role = 'p' and status = 'u' and content = 0;
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
begin;
......@@ -172,16 +165,15 @@ select count(*) = 12 from dtm_retry_table;
-- Reset all faults.
select gp_inject_fault_infinite('all', 'reset', dbid) from gp_segment_configuration;
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
t
t
t
t
t
t
t
Success:
Success:
Success:
Success:
Success:
Success:
Success:
Success:
(8 rows)
......@@ -8,45 +8,40 @@ where content = 0 and mode = 's';
-- Once this fault is hit, FTS process should abort current
-- transaction and exit.
select gp_inject_fault_infinite('fts_update_config', 'error', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- FTS probe connection should encounter an error due to this fault,
-- injected on content 0 primary.
select gp_inject_fault_infinite('fts_handle_message', 'error', dbid)
from gp_segment_configuration where content = 0 and role = 'p';
NOTICE: Success: (seg0 127.0.1.1:25432 pid=23250)
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- Upon failure to probe content 0 primary, FTS will try to update the
-- configuration. The update to configuration will hit error due to
-- the "fts_update_config" fault.
select gp_wait_until_triggered_fault('fts_update_config', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
select gp_inject_fault('fts_handle_message', 'reset', dbid)
from gp_segment_configuration where content = 0 and role = 'p';
NOTICE: Success: (seg0 127.0.1.1:25432 pid=23250)
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('fts_update_config', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Postmaster should have restarted FTS by now. Trigger a scan and
......
......@@ -9,17 +9,15 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
INSERT INTO foo VALUES (1,1);
-- test interruption requests to optimization
select gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select count(*) from foo;
......@@ -50,17 +48,15 @@ EXPLAIN SELECT * FROM func1_nosql_vol(5), foo;
(8 rows)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT * FROM func1_nosql_vol(5), foo;
......@@ -71,9 +67,8 @@ SELECT * FROM func1_nosql_vol(5), foo;
-- The fault should *not* be hit above when optimizer = off, to reset it now.
SELECT gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -9,17 +9,15 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
INSERT INTO foo VALUES (1,1);
-- test interruption requests to optimization
select gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select count(*) from foo;
......@@ -46,26 +44,23 @@ EXPLAIN SELECT * FROM func1_nosql_vol(5), foo;
(8 rows)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('opt_relcache_translator_catalog_access', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT * FROM func1_nosql_vol(5), foo;
ERROR: canceling statement due to user request
-- The fault should *not* be hit above when optimizer = off, to reset it now.
SELECT gp_inject_fault('opt_relcache_translator_catalog_access', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -462,17 +462,15 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
begin;
declare ic_test_cursor_c1 cursor for select * from ic_test_1;
select gp_inject_fault('interconnect_stop_ack_is_lost', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('interconnect_stop_ack_is_lost', 'skip', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
commit;
......@@ -485,20 +483,18 @@ drop table ic_test_1;
CREATE TABLE a (i INT, j INT) DISTRIBUTED BY (i);
INSERT INTO a (SELECT i, i * i FROM generate_series(1, 10) as i);
SELECT gp_inject_fault('interconnect_setup_palloc', 'error', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT * FROM a;
ERROR: fault triggered, fault name:'interconnect_setup_palloc' fault type:'error'
DROP TABLE a;
SELECT gp_inject_fault('interconnect_setup_palloc', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Use WITH RECURSIVE to construct a one-time filter result node that executed
......
......@@ -36,16 +36,12 @@ SELECT COUNT(*) AS count
SELECT gp_inject_fault('executor_run_high_processed', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 192.168.0.65:25432 pid=121194)
NOTICE: Success: (seg1 192.168.0.65:25433 pid=121196)
NOTICE: Success: (seg2 192.168.0.65:25434 pid=121195)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- and insert another 30k rows, this time overflowing the 2^32 counter
......@@ -59,16 +55,12 @@ SELECT public.test_bigint_python();
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 192.168.0.65:25432 pid=121194)
NOTICE: Success: (seg1 192.168.0.65:25433 pid=121196)
NOTICE: Success: (seg2 192.168.0.65:25434 pid=121195)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
SELECT COUNT(*) AS count
......
NOTICE: extension "gp_inject_fault" already exists, skipping
drop table if exists _tmp_table;
NOTICE: table "_tmp_table" does not exist, skipping
create table _tmp_table (i1 int, i2 int, i3 int, i4 int);
......@@ -10,18 +9,16 @@ set statement_mem="2MB";
set gp_enable_mk_sort=on;
set gp_cte_sharing=on;
select gp_inject_fault('execsort_mksort_mergeruns', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- set QueryFinishPending=true in sort mergeruns. This will stop sort and set result_tape to NULL
select gp_inject_fault('execsort_mksort_mergeruns', 'finish_pending', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- return results although sort will be interrupted in one of the segments
......@@ -32,10 +29,10 @@ select DISTINCT S from (select row_number() over(partition by i1 order by i2) AS
(1 row)
select gp_inject_fault('execsort_mksort_mergeruns', 'status', 2);
NOTICE: Success: fault name:'execsort_mksort_mergeruns' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'execsort_mksort_mergeruns' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- test if shared input scan deletes memory correctly when QueryFinishPending and its child has been eagerly freed,
......@@ -56,19 +53,17 @@ set gp_enable_mk_sort=off;
-- planner on the other hand does not.
set optimizer=off;
select gp_inject_fault('execshare_input_next', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Set QueryFinishPending to true after SharedInputScan has retrieved the first tuple.
-- This will eagerly free the memory context of shared input scan's child node.
select gp_inject_fault('execshare_input_next', 'finish_pending', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
with cte as (select i2 from testsisc order by i2)
......@@ -80,29 +75,27 @@ select * from cte c1, cte c2 limit 2;
(2 rows)
select gp_inject_fault('execshare_input_next', 'status', 2);
NOTICE: Success: fault name:'execshare_input_next' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'execshare_input_next' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- test if shared input scan deletes memory correctly when QueryFinishPending and its child has been eagerly freed,
-- where the child is a Sort node and sort_mk algorithm is used
set gp_enable_mk_sort=on;
select gp_inject_fault('execshare_input_next', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Set QueryFinishPending to true after SharedInputScan has retrieved the first tuple.
-- This will eagerly free the memory context of shared input scan's child node.
select gp_inject_fault('execshare_input_next', 'finish_pending', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
with cte as (select i2 from testsisc order by i2)
......@@ -114,26 +107,24 @@ select * from cte c1, cte c2 limit 2;
(2 rows)
select gp_inject_fault('execshare_input_next', 'status', 2);
NOTICE: Success: fault name:'execshare_input_next' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'execshare_input_next' fault type:'finish_pending' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
reset gp_enable_mk_sort;
-- Disable faultinjectors
select gp_inject_fault('execsort_mksort_mergeruns', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('execshare_input_next', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- test if a query can be canceled when cancel signal arrives fast than the query dispatched.
......@@ -148,10 +139,9 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
-- triggered immediately, rather that waiting until the next probe
-- interval.
select gp_inject_fault_infinite('fts_probe', 'skip', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
select gp_request_fts_probe_scan();
......@@ -161,35 +151,31 @@ select gp_request_fts_probe_scan();
(1 row)
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- make one QE sleep before reading command
select gp_inject_fault('before_read_command', 'sleep', '', '', '', 1, 1, 50, 2::smallint);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
select count(*) from _tmp_table1, _tmp_table2 where 100 / _tmp_table2.c2 > 1;
ERROR: division by zero (seg0 slice1 127.0.1.1:25432 pid=15478)
select gp_inject_fault('before_read_command', 'reset', 2);
NOTICE: Success: (seg0 127.0.1.1:25432 pid=15470)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Resume FTS probes starting from the next probe interval.
select gp_inject_fault('fts_probe', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
drop table _tmp_table1;
......
......@@ -29,17 +29,15 @@ ANALYZE segspace_test_hj_skew;
------------ Interrupting SELECT query that spills -------------------
-- enable the fault injector
select gp_inject_fault('exec_hashjoin_new_batch', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('exec_hashjoin_new_batch', 'interrupt', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
set statement_mem=2048;
......@@ -49,10 +47,10 @@ SELECT t1.* FROM segspace_test_hj_skew AS t1, segspace_test_hj_skew AS t2 WHERE
ERROR: canceling MPP operation (seg0 slice2 127.0.0.1:25432 pid=26876)
rollback;
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- check used segspace after test
......@@ -89,17 +87,15 @@ set statement_mem=2048;
set gp_autostats_mode = none;
-- enable the fault injector
select gp_inject_fault('exec_hashjoin_new_batch', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('exec_hashjoin_new_batch', 'interrupt', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
begin;
......@@ -108,10 +104,10 @@ SELECT t1.* FROM segspace_test_hj_skew AS t1, segspace_test_hj_skew AS t2 WHERE
ERROR: canceling MPP operation (seg0 127.0.0.1:25432 pid=26876)
rollback;
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- check used segspace after test
......@@ -144,17 +140,15 @@ set statement_mem=2048;
set gp_autostats_mode = none;
-- enable the fault injector
select gp_inject_fault('exec_hashjoin_new_batch', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('exec_hashjoin_new_batch', 'interrupt', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
begin;
......@@ -165,10 +159,10 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
ERROR: canceling MPP operation (seg0 127.0.0.1:25432 pid=26876)
rollback;
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- check used segspace after test
......@@ -213,17 +207,15 @@ set gp_enable_mk_sort=on;
set gp_cte_sharing=on;
-- enable the fault injector
select gp_inject_fault('workfile_write_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_write_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- LEAK in UPDATE: update with sisc xslice sort
......@@ -235,10 +227,10 @@ update foo set j=m.cc1 from (
where t1.i1 = t2.i2 ) as m;
ERROR: fault triggered, fault name:'workfile_write_failure' fault type:'error' (seg0 slice3 127.0.0.1:25432 pid=3175)
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
select max(bytes) as max, min(bytes) as min from gp_toolkit.gp_workfile_mgr_used_diskspace;
......@@ -284,17 +276,15 @@ insert into foo select i, i % 1000 from
set statement_mem=1024; -- 1mb for 3 segment to get leak.
-- enable the fault injector
select gp_inject_fault('workfile_write_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_write_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- LEAK in DELETE with APPEND ONLY tables
......@@ -304,10 +294,10 @@ delete from testsisc using (
) src where testsisc.i1 = src.i;
ERROR: fault triggered, fault name:'workfile_write_failure' fault type:'error' (seg0 127.0.0.1:25432 pid=3143)
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
select max(bytes) as max, min(bytes) as min from gp_toolkit.gp_workfile_mgr_used_diskspace;
......@@ -344,17 +334,15 @@ NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'c' as
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
-- enable the fault injector
select gp_inject_fault('workfile_write_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_write_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- expect to see leak if we hit error
......@@ -368,10 +356,10 @@ select max(bytes) as max, min(bytes) as min from gp_toolkit.gp_workfile_mgr_used
(1 row)
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- Run the test without fault injection
......@@ -400,17 +388,15 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
-- expect to see leak if we hit error
-- enable the fault injector
select gp_inject_fault('workfile_write_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_write_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
update foo set d = i1 from (with ctesisc as (select * from testsisc order by i2)
......@@ -419,10 +405,10 @@ select * from
where x.a = ctesisc.i1) y;
ERROR: fault triggered, fault name:'workfile_write_failure' fault type:'error' (seg0 slice1 127.0.0.1:25432 pid=3175)
select gp_inject_fault('exec_hashjoin_new_batch', 'status', 2);
NOTICE: Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'exec_hashjoin_new_batch' fault type:'interrupt' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- check counter leak
......
......@@ -11,32 +11,24 @@ CREATE TABLE public.spi64bittest (id BIGSERIAL PRIMARY KEY, data BIGINT);
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- insert enough rows to trigger the fault injector
SELECT gp_inject_fault_infinite('executor_run_high_processed', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- Insert 1 ~ 40000 here can guarantee each segment's processing more than 10000 rows
......@@ -59,16 +51,12 @@ NOTICE: Inserted 12884901855 rows
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
SELECT COUNT(*) AS count
......@@ -82,16 +70,12 @@ SELECT COUNT(*) AS count
SELECT gp_inject_fault_infinite('executor_run_high_processed', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
DO $$
......@@ -110,16 +94,12 @@ NOTICE: Updated 12884901855 rows
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
SELECT COUNT(*) AS count
......@@ -133,16 +113,12 @@ SELECT COUNT(*) AS count
SELECT gp_inject_fault_infinite('executor_run_high_processed', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
DO $$
......@@ -160,16 +136,12 @@ NOTICE: Deleted 12884901855 rows
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
SELECT COUNT(*) AS count
......@@ -218,16 +190,12 @@ SELECT sql_exec_stmt('INSERT INTO public.spi64bittest_2 (id) SELECT generate_ser
SELECT gp_inject_fault_infinite('executor_run_high_processed', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault_infinite
--------------------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
-- double the data
......@@ -258,16 +226,12 @@ SELECT sql_exec_stmt('INSERT INTO public.spi64bittest_2 (id) SELECT id FROM publ
SELECT gp_inject_fault('executor_run_high_processed', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
NOTICE: Success: (seg0 127.0.0.1:40000 pid=24141)
NOTICE: Success: (seg1 127.0.0.1:40001 pid=24142)
NOTICE: Success: (seg2 127.0.0.1:40002 pid=24143)
gp_inject_fault
-----------------
t
t
t
t
Success:
Success:
Success:
Success:
(4 rows)
SELECT COUNT(*) AS count
......
......@@ -97,20 +97,18 @@ ALTER TABLE toast_chunk_test ALTER COLUMN a SET STORAGE EXTERNAL;
SELECT DISTINCT gp_inject_fault('decrease_toast_max_chunk_size', 'skip', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
INSERT INTO toast_chunk_test VALUES (repeat('abcdefghijklmnopqrstuvwxyz', 1000)::bytea);
SELECT DISTINCT gp_inject_fault('decrease_toast_max_chunk_size', 'reset', dbid)
FROM pg_catalog.gp_segment_configuration
WHERE role = 'p';
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- The toasted value should still be read correctly.
......
......@@ -20,26 +20,24 @@ INSERT INTO test_zlib_hashjoin SELECT i,i,i,i,i,i,i,i FROM
SET statement_mem=5000;
--Fail after workfile creation and before add it to workfile set
select gp_inject_fault('workfile_creation_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_creation_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT COUNT(t1.*) FROM test_zlib_hashjoin AS t1, test_zlib_hashjoin AS t2 WHERE t1.i1=t2.i2;
ERROR: fault triggered, fault name:'workfile_creation_failure' fault type:'error' (seg0 slice2 127.0.0.1:25432 pid=2829)
select gp_inject_fault('workfile_creation_failure', 'status', 2);
NOTICE: Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
RESET statement_mem;
......@@ -54,34 +52,31 @@ INSERT INTO test_zlib_hagg SELECT i,i,i,i FROM
SET statement_mem=2000;
--Fail after workfile creation and before add it to workfile set
select gp_inject_fault('workfile_creation_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_creation_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT MAX(i1) FROM test_zlib_hagg GROUP BY i2;
ERROR: fault triggered, fault name:'workfile_creation_failure' fault type:'error' (seg0 slice2 127.0.0.1:25432 pid=2829)
select gp_inject_fault('workfile_creation_failure', 'status', 2);
NOTICE: Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
-- Reset faultinjectors
select gp_inject_fault('workfile_creation_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
create table test_zlib (i int, j text);
......@@ -106,17 +101,15 @@ end
$body$ language plpgsql;
-- Inject fault before we close workfile in ExecHashJoinNewBatch
select gp_inject_fault('workfile_creation_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('workfile_creation_failure', 'error', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select FuncA();
......@@ -136,19 +129,18 @@ select * from test_zlib_t1;
(0 rows)
select gp_inject_fault('workfile_creation_failure', 'status', 2);
NOTICE: Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1'
gp_inject_fault
-----------------
t
gp_inject_fault
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Success: fault name:'workfile_creation_failure' fault type:'error' ddl statement:'' database name:'' table name:'' start occurrence:'1' end occurrence:'1' extra arg:'0' fault injection state:'completed' num times hit:'1' +
(1 row)
drop function FuncA();
drop table test_zlib;
drop table test_zlib_t1;
select gp_inject_fault('workfile_creation_failure', 'reset', 2);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -1161,7 +1161,7 @@ select gp_inject_fault('appendonly_skip_compression', 'skip', '', '',
from gp_segment_configuration where role = 'p' and content = 0;
gp_inject_fault
-----------------
t
Success:
(1 row)
insert into aocs_small_and_dense_content select i,i from
......@@ -1171,7 +1171,7 @@ from gp_segment_configuration where
role = 'p' and content = 0;
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- This should not fail if small content or bulk dense content headers
......@@ -1186,6 +1186,6 @@ select gp_inject_fault('appendonly_skip_compression', 'reset', dbid)
from gp_segment_configuration where role = 'p' and content = 0;
gp_inject_fault
-----------------
t
Success:
(1 row)
......@@ -13,19 +13,17 @@ select age(datfrozenxid) < 200 * 1000000 from pg_database where datname='templat
-- track that we've updated the row in pg_database for template0
SELECT gp_inject_fault_infinite('vacuum_update_dat_frozen_xid', 'skip', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
-- Suspend the autovacuum worker from vacuuming before
-- ShmemVariableCache->latestCompletedXid is expected to be updated
SELECT gp_inject_fault_infinite('auto_vac_worker_before_do_autovacuum', 'suspend', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
select test_consume_xids(100 * 1000000);
......@@ -48,32 +46,28 @@ select test_consume_xids(10 * 1000000);
-- Wait until autovacuum is triggered
SELECT gp_wait_until_triggered_fault('auto_vac_worker_before_do_autovacuum', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
SELECT gp_inject_fault('auto_vac_worker_before_do_autovacuum', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- wait until autovacuum worker updates pg_database
SELECT gp_wait_until_triggered_fault('vacuum_update_dat_frozen_xid', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
SELECT gp_inject_fault('vacuum_update_dat_frozen_xid', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- template0 should be young
......
......@@ -13,10 +13,9 @@ CREATE EXTENSION IF NOT EXISTS gp_inject_fault;
-- end_matchsubs
-- skip FTS probes always
select gp_inject_fault_infinite('fts_probe', 'skip', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
select gp_request_fts_probe_scan();
......@@ -26,10 +25,9 @@ select gp_request_fts_probe_scan();
(1 row)
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- Test quoting of GUC values and database names when they're sent to segments
......@@ -105,18 +103,16 @@ HINT: Size controlled by gp_max_plan_size
-- during backend initialization
--
select gp_inject_fault('send_qe_details_init_backend', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11034)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- inject a 'skip' fault before QE sends its motion_listener
select gp_inject_fault('send_qe_details_init_backend', 'skip', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11034)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- terminate exiting QEs first
......@@ -127,10 +123,9 @@ ERROR: failed to acquire resources on one or more segments
DETAIL: Internal error: No motion listener port (seg0 127.0.0.1:40000)
-- reset fault injector
select gp_inject_fault('send_qe_details_init_backend', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11048)
gp_inject_fault
-----------------
t
Success:
(1 row)
--
......@@ -188,10 +183,9 @@ select cleanupAllGangs();
-- trigger fault and report segment 0 in recovery for 5 times
select gp_inject_fault('process_startup_packet', 'skip', '', 'dispatch_test_db', '', 1, 5, 0, 2::smallint);
NOTICE: Success: (seg0 10.153.101.106:25432 pid=373785)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -209,10 +203,9 @@ where dispatch_test_t1.c2 = dispatch_test_t2.c2 and dispatch_test_t2.c3 = dispat
(1 row)
select gp_inject_fault('process_startup_packet', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11092)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Case 1.2
......@@ -229,10 +222,9 @@ select cleanupAllGangs();
-- trigger fault and put segment 0 into recovery mode
select gp_inject_fault('process_startup_packet', 'skip', '', 'dispatch_test_db', '', 1, 5, 0, 2::smallint);
NOTICE: Success: (seg0 10.153.101.106:25432 pid=373867)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -256,10 +248,9 @@ where dispatch_test_t1.c2 = dispatch_test_t2.c2 and dispatch_test_t2.c3 = dispat
(1 row)
select gp_inject_fault('process_startup_packet', 'reset', 2);
NOTICE: Success: (seg0 10.153.101.106:25432 pid=373925)
gp_inject_fault
-----------------
t
Success:
(1 row)
--start_ignore
......@@ -310,10 +301,9 @@ select cleanupAllGangs();
-- segment 0 report an error when get a request
select gp_inject_fault('send_qe_details_init_backend', 'error', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11221)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -350,18 +340,16 @@ select cleanupAllGangs();
(1 row)
select gp_inject_fault('send_qe_details_init_backend', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11272)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- segment 0 report an error when get the second request (reader gang creation request)
select gp_inject_fault('send_qe_details_init_backend', 'error', '', '', '', 3, 3, 0, 2::smallint);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11272)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -391,10 +379,9 @@ select sum(case when hasBackendsExist(0)='t' then 1 else 0 end) > 0 as hasbacken
(1 row)
select gp_inject_fault('send_qe_details_init_backend', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11284)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Case 1.4
......@@ -403,10 +390,9 @@ NOTICE: Success: (seg0 127.0.0.1:40000 pid=11284)
-- gp_segment_connect_timeout = 1 : wait 1 second
set gp_segment_connect_timeout to 1;
select gp_inject_fault('process_startup_packet', 'suspend', '', 'dispatch_test_db', '', 1, 1, 0, 2::smallint);
NOTICE: Success: (seg0 10.153.101.106:25432 pid=374053)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -423,24 +409,21 @@ DETAIL: timeout expired
(seg0 127.0.0.1:40000)
set gp_segment_connect_timeout to 0;
select gp_inject_fault('process_startup_packet', 'resume', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11314)
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('process_startup_packet', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11314)
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('process_startup_packet', 'sleep', '', '', '', 1, 1, 2, 2::smallint);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11337)
gp_inject_fault
-----------------
t
Success:
(1 row)
select cleanupAllGangs();
......@@ -458,10 +441,9 @@ where dispatch_test_t1.c2 = dispatch_test_t2.c2 and dispatch_test_t2.c3 = dispat
(1 row)
select gp_inject_fault('process_startup_packet', 'reset', 2);
NOTICE: Success: (seg0 127.0.0.1:40000 pid=11337)
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Case 1.5
......@@ -470,10 +452,9 @@ NOTICE: Success: (seg0 127.0.0.1:40000 pid=11337)
-- must set log_min_messages to default when using interrupt, there is a bug in fault injection.
set log_min_messages to default;
select gp_inject_fault('after_one_slice_dispatched', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- should fail and report error
......@@ -481,10 +462,9 @@ select * from dispatch_test_t1, dispatch_test_t2, dispatch_test_t3
where dispatch_test_t1.c2 = dispatch_test_t2.c2 and dispatch_test_t2.c3 = dispatch_test_t3.c3;
ERROR: canceling statement due to user request
select gp_inject_fault('after_one_slice_dispatched', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Case 1.6
......@@ -492,20 +472,18 @@ NOTICE: Success:
-- dispatched, the query can be cancelled correctly.
--
select gp_inject_fault('before_one_slice_dispatched', 'error', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
update dispatch_test_t1 set c2 = 3 from dispatch_test_t2, dispatch_test_t3
where dispatch_test_t1.c2 = dispatch_test_t2.c2 and dispatch_test_t2.c3 = dispatch_test_t3.c3;
ERROR: fault triggered, fault name:'before_one_slice_dispatched' fault type:'error'
select gp_inject_fault('before_one_slice_dispatched', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- test logging of gang management
......@@ -584,17 +562,15 @@ select cleanupAllGangs();
(1 row)
select gp_inject_fault('gang_created', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_inject_fault('gang_created', 'error', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select 1 from gp_dist_random('gp_id') limit 1;
......@@ -607,30 +583,27 @@ select 1 from gp_dist_random('gp_id') limit 1;
(1 row)
select gp_inject_fault('gang_created', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
--
-- Test that an error happens after a big command is dispatched.
--
select gp_inject_fault('after_one_slice_dispatched', 'error', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select * from gp_dist_random('gp_id')
where gpname > (select * from repeat('sssss', 10000000));
ERROR: fault triggered, fault name:'after_one_slice_dispatched' fault type:'error'
select gp_inject_fault('after_one_slice_dispatched', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select * from gp_dist_random('gp_id')
......@@ -667,10 +640,9 @@ HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sur
insert into disp_temp_test1 values (1, 2);
-- Let cleanupSegdb() return false and writer gang be destroyed
select gp_inject_fault('cleanup_qe', 'skip', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select * from disp_temp_test1 where c1 / 0 = 9;
......@@ -691,18 +663,16 @@ LINE 1: select * from disp_temp_test1;
^
-- reset fault
select gp_inject_fault('cleanup_qe', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- resume FTS probes
select gp_inject_fault('fts_probe', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
--
......
......@@ -69,7 +69,7 @@ create or replace function disable_fts() returns void as $$
-- also, ensure that the fts loop observes the probe being skipped before
-- continuing with the test because it could still be in the middle of a
-- previous probe
perform gp_wait_until_triggered_fault2('fts_probe', 1, dbid)
perform gp_wait_until_triggered_fault('fts_probe', 1, dbid)
from gp_segment_configuration
where content = master_content_id
and role = master_primary_role;
......
......@@ -1439,17 +1439,15 @@ COMMIT;
-- the entire contents has been copied out. The hardcoded rowcount 57190 is the
-- number of rows in the lineitem table.
SELECT gp_inject_fault('cdb_copy_start_after_dispatch', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
SELECT gp_inject_fault('cdb_copy_start_after_dispatch', 'interrupt', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
COPY lineitem TO '/tmp/aborted.data';
......@@ -1464,10 +1462,9 @@ SELECT count(*) < 57190 FROM lineitem_aborted;
(1 row)
SELECT gp_inject_fault('cdb_copy_start_after_dispatch', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
-- Test external partition
......
......@@ -137,10 +137,9 @@ PL/pgSQL function checkpoint_and_wait_for_replication_replay(integer) line 27 at
-- triggered immediately, rather that waiting until the next probe
-- interval.
select gp_inject_fault_infinite('fts_probe', 'skip', 1);
NOTICE: Success:
gp_inject_fault_infinite
--------------------------
t
Success:
(1 row)
select gp_request_fts_probe_scan();
......@@ -150,10 +149,9 @@ select gp_request_fts_probe_scan();
(1 row)
select gp_wait_until_triggered_fault('fts_probe', 1, 1);
NOTICE: Success:
gp_wait_until_triggered_fault
-------------------------------
t
Success:
(1 row)
-- stop a mirror
......@@ -224,10 +222,9 @@ select sync_error from gp_stat_replication where gp_segment_id = 0;
-- Resume FTS probes and perform a probe scan.
select gp_inject_fault('fts_probe', 'reset', 1);
NOTICE: Success:
gp_inject_fault
-----------------
t
Success:
(1 row)
select gp_request_fts_probe_scan();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册