From 173b7ed5adace82118d2340694220daed252a9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96nder=20Kalac=C4=B1?= Date: Thu, 18 Aug 2022 16:32:12 +0200 Subject: [PATCH] Properly add / remove coordinator for isolation tests (#6181) We used to rely on a seperate session to add the coordinator. However, that might prevent the existing sessions to get assigned proper gpids, which causes flaky tests. (cherry picked from commit 961fcff5db214e8eaad98b5d3171820b8d5bbe03) --- .../expected/isolation_add_coordinator.out | 21 +++++++ .../isolation_citus_dist_activity.out | 58 ++++--------------- .../expected/isolation_remove_coordinator.out | 21 +++++++ src/test/regress/isolation_schedule | 2 + .../spec/isolation_add_coordinator.spec | 19 ++++++ .../spec/isolation_citus_dist_activity.spec | 16 ----- .../spec/isolation_remove_coordinator.spec | 18 ++++++ 7 files changed, 92 insertions(+), 63 deletions(-) create mode 100644 src/test/regress/expected/isolation_add_coordinator.out create mode 100644 src/test/regress/expected/isolation_remove_coordinator.out create mode 100644 src/test/regress/spec/isolation_add_coordinator.spec create mode 100644 src/test/regress/spec/isolation_remove_coordinator.spec diff --git a/src/test/regress/expected/isolation_add_coordinator.out b/src/test/regress/expected/isolation_add_coordinator.out new file mode 100644 index 000000000..d375d6c8c --- /dev/null +++ b/src/test/regress/expected/isolation_add_coordinator.out @@ -0,0 +1,21 @@ +Parsed test spec with 1 sessions + +starting permutation: s1-begin +?column? +--------------------------------------------------------------------- + 1 +(1 row) + +step s1-begin: + SELECT 1; + +?column? +--------------------------------------------------------------------- + 1 +(1 row) + +?column? +--------------------------------------------------------------------- + 1 +(1 row) + diff --git a/src/test/regress/expected/isolation_citus_dist_activity.out b/src/test/regress/expected/isolation_citus_dist_activity.out index 171d2faef..2f1810f7a 100644 --- a/src/test/regress/expected/isolation_citus_dist_activity.out +++ b/src/test/regress/expected/isolation_citus_dist_activity.out @@ -1,25 +1,4 @@ -Parsed test spec with 4 sessions - -starting permutation: add-coordinator-to-metadata -create_distributed_table ---------------------------------------------------------------------- - -(1 row) - -step add-coordinator-to-metadata: - SELECT 1 FROM citus_add_node('localhost', 57636, groupid:=0); - SELECT test_assign_global_pid(); - -?column? ---------------------------------------------------------------------- - 1 -(1 row) - -test_assign_global_pid ---------------------------------------------------------------------- - -(1 row) - +Parsed test spec with 3 sessions starting permutation: s1-cache-connections s1-begin s2-begin s3-begin s1-alter-table s2-sleep s2-view-dist s3-view-worker s2-rollback s1-commit s3-rollback create_distributed_table @@ -67,16 +46,16 @@ step s3-view-worker: query |citus_nodename_for_nodeid|citus_nodeport_for_nodeid|state |wait_event_type|wait_event|usename |datname --------------------------------------------------------------------- -SELECT worker_apply_shard_ddl_command (1300009, 'public', ' +SELECT worker_apply_shard_ddl_command (1300004, 'public', ' ALTER TABLE test_table ADD COLUMN x INT; ')|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT worker_apply_shard_ddl_command (1300008, 'public', ' +SELECT worker_apply_shard_ddl_command (1300003, 'public', ' ALTER TABLE test_table ADD COLUMN x INT; ')|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT worker_apply_shard_ddl_command (1300007, 'public', ' +SELECT worker_apply_shard_ddl_command (1300002, 'public', ' ALTER TABLE test_table ADD COLUMN x INT; ')|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT worker_apply_shard_ddl_command (1300006, 'public', ' +SELECT worker_apply_shard_ddl_command (1300001, 'public', ' ALTER TABLE test_table ADD COLUMN x INT; ')|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression (4 rows) @@ -137,7 +116,7 @@ step s3-view-worker: query |citus_nodename_for_nodeid|citus_nodeport_for_nodeid|state |wait_event_type|wait_event|usename |datname --------------------------------------------------------------------- -INSERT INTO public.test_table_1300013 (column1, column2) VALUES (100, 100)|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +INSERT INTO public.test_table_1300008 (column1, column2) VALUES (100, 100)|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression (1 row) step s2-rollback: @@ -201,10 +180,10 @@ step s3-view-worker: query |citus_nodename_for_nodeid|citus_nodeport_for_nodeid|state |wait_event_type|wait_event|usename |datname --------------------------------------------------------------------- -SELECT count(*) AS count FROM public.test_table_1300019 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT count(*) AS count FROM public.test_table_1300018 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT count(*) AS count FROM public.test_table_1300017 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression -SELECT count(*) AS count FROM public.test_table_1300016 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +SELECT count(*) AS count FROM public.test_table_1300014 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +SELECT count(*) AS count FROM public.test_table_1300013 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +SELECT count(*) AS count FROM public.test_table_1300012 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +SELECT count(*) AS count FROM public.test_table_1300011 test_table WHERE true|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression (4 rows) step s2-rollback: @@ -268,7 +247,7 @@ step s3-view-worker: query |citus_nodename_for_nodeid|citus_nodeport_for_nodeid|state |wait_event_type|wait_event|usename |datname --------------------------------------------------------------------- -SELECT count(*) AS count FROM public.test_table_1300022 test_table WHERE (column1 OPERATOR(pg_catalog.=) 55)|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression +SELECT count(*) AS count FROM public.test_table_1300017 test_table WHERE (column1 OPERATOR(pg_catalog.=) 55)|localhost | 57636|idle in transaction|Client |ClientRead|postgres|regression (1 row) step s2-rollback: @@ -280,18 +259,3 @@ step s1-commit: step s3-rollback: ROLLBACK; - -starting permutation: remove-coordinator-from-metadata -create_distributed_table ---------------------------------------------------------------------- - -(1 row) - -step remove-coordinator-from-metadata: - SELECT citus_remove_node('localhost', 57636); - -citus_remove_node ---------------------------------------------------------------------- - -(1 row) - diff --git a/src/test/regress/expected/isolation_remove_coordinator.out b/src/test/regress/expected/isolation_remove_coordinator.out new file mode 100644 index 000000000..d375d6c8c --- /dev/null +++ b/src/test/regress/expected/isolation_remove_coordinator.out @@ -0,0 +1,21 @@ +Parsed test spec with 1 sessions + +starting permutation: s1-begin +?column? +--------------------------------------------------------------------- + 1 +(1 row) + +step s1-begin: + SELECT 1; + +?column? +--------------------------------------------------------------------- + 1 +(1 row) + +?column? +--------------------------------------------------------------------- + 1 +(1 row) + diff --git a/src/test/regress/isolation_schedule b/src/test/regress/isolation_schedule index 488bf606a..34b2b4a3c 100644 --- a/src/test/regress/isolation_schedule +++ b/src/test/regress/isolation_schedule @@ -21,7 +21,9 @@ test: isolation_cluster_management test: isolation_metadata_sync_vs_all test: isolation_distributed_transaction_id test: isolation_dump_global_wait_edges +test: isolation_add_coordinator test: isolation_citus_dist_activity +test: isolation_remove_coordinator test: isolation_insert_select_repartition test: isolation_dml_vs_repair isolation_copy_placement_vs_copy_placement diff --git a/src/test/regress/spec/isolation_add_coordinator.spec b/src/test/regress/spec/isolation_add_coordinator.spec new file mode 100644 index 000000000..8d27fe05c --- /dev/null +++ b/src/test/regress/spec/isolation_add_coordinator.spec @@ -0,0 +1,19 @@ +setup +{ + SELECT 1 FROM citus_set_coordinator_host('localhost', 57636); + +} + +teardown +{ + SELECT 1; +} + +session "s1" + +step "s1-begin" +{ + SELECT 1; +} + +permutation "s1-begin" diff --git a/src/test/regress/spec/isolation_citus_dist_activity.spec b/src/test/regress/spec/isolation_citus_dist_activity.spec index eb0ee2a5d..9970ced85 100644 --- a/src/test/regress/spec/isolation_citus_dist_activity.spec +++ b/src/test/regress/spec/isolation_citus_dist_activity.spec @@ -101,25 +101,9 @@ step "s3-view-worker" SELECT query, citus_nodename_for_nodeid(citus_nodeid_for_gpid(global_pid)), citus_nodeport_for_nodeid(citus_nodeid_for_gpid(global_pid)), state, wait_event_type, wait_event, usename, datname FROM citus_stat_activity WHERE query NOT ILIKE ALL(VALUES('%pg_prepared_xacts%'), ('%COMMIT%'), ('%csa_from_one_node%')) AND is_worker_query = true AND backend_type = 'client backend' ORDER BY query DESC; } -session "s4" -step "add-coordinator-to-metadata" -{ - SELECT 1 FROM citus_add_node('localhost', 57636, groupid:=0); - SELECT test_assign_global_pid(); -} - -step "remove-coordinator-from-metadata" -{ - SELECT citus_remove_node('localhost', 57636); -} - -permutation "add-coordinator-to-metadata" - // we prefer to sleep before "s2-view-dist" so that we can ensure // the "wait_event" in the output doesn't change randomly (e.g., NULL to CliendRead etc.) permutation "s1-cache-connections" "s1-begin" "s2-begin" "s3-begin" "s1-alter-table" "s2-sleep" "s2-view-dist" "s3-view-worker" "s2-rollback" "s1-commit" "s3-rollback" permutation "s1-cache-connections" "s1-begin" "s2-begin" "s3-begin" "s1-insert" "s2-sleep" "s2-view-dist" "s3-view-worker" "s2-rollback" "s1-commit" "s3-rollback" permutation "s1-cache-connections" "s1-begin" "s2-begin" "s3-begin" "s1-select" "s2-sleep" "s2-view-dist" "s3-view-worker" "s2-rollback" "s1-commit" "s3-rollback" permutation "s1-cache-connections" "s1-begin" "s2-begin" "s3-begin" "s1-select-router" "s2-sleep" "s2-view-dist" "s3-view-worker" "s2-rollback" "s1-commit" "s3-rollback" - -permutation "remove-coordinator-from-metadata" diff --git a/src/test/regress/spec/isolation_remove_coordinator.spec b/src/test/regress/spec/isolation_remove_coordinator.spec new file mode 100644 index 000000000..5f373cfb5 --- /dev/null +++ b/src/test/regress/spec/isolation_remove_coordinator.spec @@ -0,0 +1,18 @@ +setup +{ + SELECT 1; +} + +teardown +{ + SELECT 1 FROM citus_remove_node('localhost', 57636); +} + +session "s1" + +step "s1-begin" +{ + SELECT 1; +} + +permutation "s1-begin"