From e438595d1e34fe956b0f22baab030a920e1393fa Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Wed, 31 Aug 2022 09:17:50 +0300 Subject: [PATCH] add tests from workers --- .../regress/expected/detect_conn_close.out | 35 +++++++++++++++++++ src/test/regress/sql/detect_conn_close.sql | 17 +++++++++ 2 files changed, 52 insertions(+) diff --git a/src/test/regress/expected/detect_conn_close.out b/src/test/regress/expected/detect_conn_close.out index 79054cfa1..dd7ea4fb1 100644 --- a/src/test/regress/expected/detect_conn_close.out +++ b/src/test/regress/expected/detect_conn_close.out @@ -144,5 +144,40 @@ BEGIN; ERROR: terminating connection due to administrator command CONTEXT: while executing command on localhost:xxxxx ROLLBACK; +-- although should have no difference, we can recover from the failures on the workers as well +\c - - - :worker_1_port +SET search_path TO socket_close; +-- now, use 16 connections per worker, we can still recover all connections +SET citus.max_adaptive_executor_pool_size TO 16; +SET citus.max_cached_conns_per_worker TO 16; +SET citus.force_max_query_parallelization TO ON; +SELECT count(*) FROM socket_test_table; + count +--------------------------------------------------------------------- + 103 +(1 row) + +SELECT result FROM run_command_on_workers($$SELECT count(*) FROM (SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE query ilike '%socket_test_table_%' AND query not ilike '%pg_stat_activity%' AND pid !=pg_backend_pid()) as foo$$); + result +--------------------------------------------------------------------- + 16 + 16 +(2 rows) + +-- show that none remains +SELECT result FROM run_command_on_workers($$SELECT count(*) FROM (SELECT pid FROM pg_stat_activity WHERE query ilike '%socket_test_table_%' AND query not ilike '%pg_stat_activity%' AND pid !=pg_backend_pid()) as foo$$); + result +--------------------------------------------------------------------- + 0 + 0 +(2 rows) + +SELECT count(*) FROM socket_test_table; + count +--------------------------------------------------------------------- + 103 +(1 row) + +\c - - - :master_port SET client_min_messages TO ERROR; DROP SCHEMA socket_close CASCADE; diff --git a/src/test/regress/sql/detect_conn_close.sql b/src/test/regress/sql/detect_conn_close.sql index f4765a568..b5e2431e3 100644 --- a/src/test/regress/sql/detect_conn_close.sql +++ b/src/test/regress/sql/detect_conn_close.sql @@ -80,6 +80,23 @@ BEGIN; SELECT count(*) FROM socket_test_table; ROLLBACK; +-- although should have no difference, we can recover from the failures on the workers as well + +\c - - - :worker_1_port +SET search_path TO socket_close; + +-- now, use 16 connections per worker, we can still recover all connections +SET citus.max_adaptive_executor_pool_size TO 16; +SET citus.max_cached_conns_per_worker TO 16; +SET citus.force_max_query_parallelization TO ON; +SELECT count(*) FROM socket_test_table; +SELECT result FROM run_command_on_workers($$SELECT count(*) FROM (SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE query ilike '%socket_test_table_%' AND query not ilike '%pg_stat_activity%' AND pid !=pg_backend_pid()) as foo$$); +-- show that none remains +SELECT result FROM run_command_on_workers($$SELECT count(*) FROM (SELECT pid FROM pg_stat_activity WHERE query ilike '%socket_test_table_%' AND query not ilike '%pg_stat_activity%' AND pid !=pg_backend_pid()) as foo$$); + +SELECT count(*) FROM socket_test_table; + +\c - - - :master_port SET client_min_messages TO ERROR; DROP SCHEMA socket_close CASCADE;