提交 961084ef 编写于 作者: A Ashwin Agrawal and Xin Zhang 提交者: Ashwin Agrawal

Add test to validate checkpoint blocked by commit and commit prepared.

上级 a5a473c0
......@@ -1074,15 +1074,6 @@ FaultInjector_NewHashEntry(
case FileRepTransitionToChangeTracking:
case FileRepIsOperationCompleted:
case FileRepImmediateShutdownRequested:
case TransactionCommitPass1FromCreatePendingToCreated:
case TransactionCommitPass1FromDropInMemoryToDropPending:
case TransactionCommitPass1FromAbortingCreateNeededToAbortingCreate:
case TransactionAbortPass1FromCreatePendingToAbortingCreate:
case TransactionAbortPass1FromAbortingCreateNeededToAbortingCreate:
case TransactionCommitPass2FromDropInMemoryToDropPending:
case TransactionCommitPass2FromAbortingCreateNeededToAbortingCreate:
case TransactionAbortPass2FromCreatePendingToAbortingCreate:
case TransactionAbortPass2FromAbortingCreateNeededToAbortingCreate:
case FinishPreparedTransactionCommitPass1FromCreatePendingToCreated:
case FinishPreparedTransactionCommitPass2FromCreatePendingToCreated:
......
-- TEST 1: block checkpoint on segments
-- pause the 2PC after setting inCommit flag
! gpfaultinjector -f twophase_transaction_commit_prepared -m async -y suspend -o 0 -H ALL -r primary;
20170303:00:02:12:067930 gpfaultinjector:-[INFO]:-Starting gpfaultinjector with args: -f twophase_transaction_commit_prepared -m async -y suspend -o 0 -H ALL -r primary
20170303:00:02:12:067930 gpfaultinjector:-[INFO]:-Injecting fault on content=0:dbid=2:mode=s:status=u
20170303:00:02:12:067930 gpfaultinjector:-[INFO]:-Injecting fault on content=1:dbid=3:mode=s:status=u
20170303:00:02:12:067930 gpfaultinjector:-[INFO]:-Injecting fault on content=2:dbid=4:mode=s:status=u
20170303:00:02:12:067930 gpfaultinjector:-[INFO]:-DONE
-- trigger a 2PC, and it will block at commit;
2: checkpoint;
CHECKPOINT
2: begin;
BEGIN
2: create table t_commit_transaction_block_checkpoint (c int) distributed by (c);
CREATE
2&: commit; <waiting ...>
-- do checkpoint on dbid 3 (segment 1) in utility mode, and it should block
3U&: checkpoint; <waiting ...>
-- resume the 2PC after setting inCommit flag
! gpfaultinjector -f twophase_transaction_commit_prepared -m async -y reset -o 0 -H ALL -r primary;
20170303:00:02:14:067954 gpfaultinjector:-[INFO]:-Starting gpfaultinjector with args: -f twophase_transaction_commit_prepared -m async -y reset -o 0 -H ALL -r primary
20170303:00:02:14:067954 gpfaultinjector:-[INFO]:-Injecting fault on content=0:dbid=2:mode=s:status=u
20170303:00:02:14:067954 gpfaultinjector:-[INFO]:-Injecting fault on content=1:dbid=3:mode=s:status=u
20170303:00:02:14:067954 gpfaultinjector:-[INFO]:-Injecting fault on content=2:dbid=4:mode=s:status=u
20170303:00:02:14:067954 gpfaultinjector:-[INFO]:-DONE
2<: <... completed>
COMMIT
3U<: <... completed>
CHECKPOINT
-- TEST 2: block checkpoint on master
-- pause the CommitTransaction right before persistent table cleanup after
-- notifyCommittedDtxTransaction()
! gpfaultinjector -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y suspend -o 0 -s 1;
20170303:00:02:15:067973 gpfaultinjector:-[INFO]:-Starting gpfaultinjector with args: -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y suspend -o 0 -s 1
20170303:00:02:15:067973 gpfaultinjector:-[INFO]:-Injecting fault on content=-1:dbid=1:mode=s:status=u
20170303:00:02:15:067973 gpfaultinjector:-[INFO]:-DONE
-- trigger a 2PC, and it will block at commit;
2: checkpoint;
CHECKPOINT
2: begin;
BEGIN
2: drop table t_commit_transaction_block_checkpoint;
DROP
2&: commit; <waiting ...>
-- do checkpoint on dbid 1 (master) in utility mode, and it should block
1U&: checkpoint; <waiting ...>
-- resume the 2PC
! gpfaultinjector -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y reset -o 0 -s 1;
20170303:00:02:16:067988 gpfaultinjector:-[INFO]:-Starting gpfaultinjector with args: -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y reset -o 0 -s 1
20170303:00:02:16:067988 gpfaultinjector:-[INFO]:-Injecting fault on content=-1:dbid=1:mode=s:status=u
20170303:00:02:16:067988 gpfaultinjector:-[INFO]:-DONE
2<: <... completed>
COMMIT
1U<: <... completed>
CHECKPOINT
test: setup
test: commit_transaction_block_checkpoint
test: setup
# Tests on Append-Optimized tables (row-oriented).
test: uao/alter_while_vacuum_row
test: uao/alter_while_vacuum2_row
......
-- TEST 1: block checkpoint on segments
-- pause the 2PC after setting inCommit flag
! gpfaultinjector -f twophase_transaction_commit_prepared -m async -y suspend -o 0 -H ALL -r primary;
-- trigger a 2PC, and it will block at commit;
2: checkpoint;
2: begin;
2: create table t_commit_transaction_block_checkpoint (c int) distributed by (c);
2&: commit;
-- do checkpoint on dbid 3 (segment 1) in utility mode, and it should block
3U&: checkpoint;
-- resume the 2PC after setting inCommit flag
! gpfaultinjector -f twophase_transaction_commit_prepared -m async -y reset -o 0 -H ALL -r primary;
2<:
3U<:
-- TEST 2: block checkpoint on master
-- pause the CommitTransaction right before persistent table cleanup after
-- notifyCommittedDtxTransaction()
! gpfaultinjector -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y suspend -o 0 -s 1;
-- trigger a 2PC, and it will block at commit;
2: checkpoint;
2: begin;
2: drop table t_commit_transaction_block_checkpoint;
2&: commit;
-- do checkpoint on dbid 1 (master) in utility mode, and it should block
1U&: checkpoint;
-- resume the 2PC
! gpfaultinjector -f transaction_commit_pass1_from_drop_in_memory_to_drop_pending -m async -y reset -o 0 -s 1;
2<:
1U<:
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册