mirror of https://github.com/citusdata/citus.git
Fixes test issues
parent
458edd8294
commit
f641860175
|
@ -1,7 +1,7 @@
|
|||
-- citus--12.1-1--12.0-1
|
||||
|
||||
|
||||
DROP FUNCTION pg_catalog.citus_pause_node_within_txn(int);
|
||||
DROP FUNCTION pg_catalog.citus_pause_node_within_txn(int,bool,int);
|
||||
|
||||
|
||||
-- we have modified the relevant upgrade script to include any_value changes
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
CREATE FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int)
|
||||
CREATE FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int,
|
||||
force bool DEFAULT false,
|
||||
lock_cooldown int DEFAULT 10000)
|
||||
RETURNS void
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_pause_node_within_txn$$;
|
||||
|
||||
COMMENT ON FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int)
|
||||
COMMENT ON FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int,
|
||||
force bool,
|
||||
lock_cooldown int)
|
||||
IS 'pauses node with given id which leads to add lock in tables and prevent any queries to be executed on that node';
|
||||
|
||||
REVOKE ALL ON FUNCTION pg_catalog.citus_pause_node_within_txn(int) FROM PUBLIC;
|
||||
REVOKE ALL ON FUNCTION pg_catalog.citus_pause_node_within_txn(int,bool,int) FROM PUBLIC;
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
CREATE FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int)
|
||||
CREATE FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int,force bool ,lock_cooldown int)
|
||||
RETURNS void
|
||||
LANGUAGE C STRICT
|
||||
AS 'MODULE_PATHNAME', $$citus_pause_node_within_txn$$;
|
||||
|
||||
COMMENT ON FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int)
|
||||
COMMENT ON FUNCTION pg_catalog.citus_pause_node_within_txn(node_id int,
|
||||
force bool,
|
||||
lock_cooldown int )
|
||||
IS 'pauses node with given id which leads to add lock in tables and prevent any queries to be executed on that node';
|
||||
|
||||
REVOKE ALL ON FUNCTION pg_catalog.citus_pause_node_within_txn(int) FROM PUBLIC;
|
||||
REVOKE ALL ON FUNCTION pg_catalog.citus_pause_node_within_txn(int,bool,int) FROM PUBLIC;
|
||||
|
|
|
@ -73,6 +73,80 @@ step s1-end:
|
|||
COMMIT;
|
||||
|
||||
|
||||
starting permutation: s1-begin s1-pause-node-force s2-begin s2-insert-distributed s2-end s1-end
|
||||
step s1-begin:
|
||||
BEGIN;
|
||||
|
||||
s1: NOTICE:
|
||||
step s1-pause-node-force:
|
||||
SET client_min_messages = 'notice';
|
||||
DO $$
|
||||
DECLARE
|
||||
v_shard_id int;
|
||||
v_node_id int;
|
||||
v_node_name text;
|
||||
v_node_port int;
|
||||
v_force boolean := true;
|
||||
BEGIN
|
||||
--The first message in the block is being printed on the top of the code block. So adding a dummy message
|
||||
--to make sure that the first message is printed in correct place.
|
||||
raise notice '';
|
||||
-- Get the shard id for the distribution column
|
||||
SELECT get_shard_id_for_distribution_column('employee', 3) into v_shard_id;
|
||||
--Get the node id for the shard id
|
||||
SELECT nodename,nodeport into v_node_name,v_node_port FROM citus_shards WHERE shardid = v_shard_id limit 1;
|
||||
raise notice 'node name is %',v_node_name;
|
||||
raise notice 'node port is %',v_node_port;
|
||||
-- Get the node id for the shard id
|
||||
SELECT nodeid into v_node_id FROM pg_dist_node WHERE nodename = v_node_name and nodeport = v_node_port limit 1;
|
||||
-- Pause the node with force true
|
||||
perform pg_catalog.citus_pause_node_within_txn(v_node_id,v_force) ;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
s1: NOTICE: node name is localhost
|
||||
s1: NOTICE: node port is 57638
|
||||
step s2-begin:
|
||||
BEGIN;
|
||||
|
||||
step s2-insert-distributed:
|
||||
-- Set statement_timeout for the session (in milliseconds)
|
||||
SET statement_timeout = 1000; -- 1 seconds
|
||||
SET client_min_messages = 'notice';
|
||||
-- Variable to track if the INSERT statement was successful
|
||||
DO $$
|
||||
DECLARE
|
||||
v_insert_successful BOOLEAN := FALSE;
|
||||
BEGIN
|
||||
-- Execute the INSERT statement
|
||||
insert into employee values(11,'e11',3);
|
||||
-- If we reach this point, the INSERT statement was successful
|
||||
v_insert_successful := TRUE;
|
||||
IF v_insert_successful THEN
|
||||
RAISE NOTICE 'INSERT statement completed successfully. This means that citus_pause_node_within_txn could not get the lock.';
|
||||
END IF;
|
||||
-- You can add additional processing here if needed
|
||||
EXCEPTION
|
||||
WHEN query_canceled THEN
|
||||
-- The INSERT statement was canceled due to timeout
|
||||
RAISE NOTICE 'query_canceled exception raised. This means that citus_pause_node_within_txn was able to get the lock.';
|
||||
WHEN OTHERS THEN
|
||||
-- Any other exception raised during the INSERT statement
|
||||
RAISE;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
<waiting ...>
|
||||
step s2-insert-distributed: <... completed>
|
||||
s2: NOTICE: query_canceled exception raised. This means that citus_pause_node_within_txn was able to get the lock.
|
||||
step s2-end:
|
||||
COMMIT;
|
||||
|
||||
step s1-end:
|
||||
COMMIT;
|
||||
|
||||
|
||||
starting permutation: s1-begin s1-pause-node s2-begin s2-delete-distributed s2-end s1-end
|
||||
step s1-begin:
|
||||
BEGIN;
|
||||
|
|
|
@ -103,7 +103,7 @@ ORDER BY 1;
|
|||
function citus_nodeid_for_gpid(bigint)
|
||||
function citus_nodename_for_nodeid(integer)
|
||||
function citus_nodeport_for_nodeid(integer)
|
||||
function citus_pause_node_within_txn(integer)
|
||||
function citus_pause_node_within_txn(integer,bool,integer)
|
||||
function citus_pid_for_gpid(bigint)
|
||||
function citus_prepare_pg_upgrade()
|
||||
function citus_query_stats()
|
||||
|
|
|
@ -104,6 +104,39 @@ step "s1-pause-node"
|
|||
LANGUAGE plpgsql;
|
||||
}
|
||||
|
||||
step "s1-pause-node-force"
|
||||
{
|
||||
SET client_min_messages = 'notice';
|
||||
DO $$
|
||||
DECLARE
|
||||
v_shard_id int;
|
||||
v_node_id int;
|
||||
v_node_name text;
|
||||
v_node_port int;
|
||||
v_force boolean := true;
|
||||
BEGIN
|
||||
--The first message in the block is being printed on the top of the code block. So adding a dummy message
|
||||
--to make sure that the first message is printed in correct place.
|
||||
raise notice '';
|
||||
-- Get the shard id for the distribution column
|
||||
SELECT get_shard_id_for_distribution_column('employee', 3) into v_shard_id;
|
||||
|
||||
--Get the node id for the shard id
|
||||
SELECT nodename,nodeport into v_node_name,v_node_port FROM citus_shards WHERE shardid = v_shard_id limit 1;
|
||||
raise notice 'node name is %',v_node_name;
|
||||
raise notice 'node port is %',v_node_port;
|
||||
|
||||
-- Get the node id for the shard id
|
||||
SELECT nodeid into v_node_id FROM pg_dist_node WHERE nodename = v_node_name and nodeport = v_node_port limit 1;
|
||||
|
||||
|
||||
-- Pause the node with force true
|
||||
perform pg_catalog.citus_pause_node_within_txn(v_node_id,v_force) ;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
}
|
||||
|
||||
step "s1-end"
|
||||
{
|
||||
COMMIT;
|
||||
|
@ -230,6 +263,7 @@ step "s2-end"
|
|||
}
|
||||
|
||||
permutation "s1-begin" "s1-pause-node" "s2-begin" "s2-insert-distributed" "s2-end" "s1-end"
|
||||
permutation "s1-begin" "s1-pause-node-force" "s2-begin" "s2-insert-distributed" "s2-end" "s1-end"
|
||||
permutation "s1-begin" "s1-pause-node" "s2-begin" "s2-delete-distributed" "s2-end" "s1-end"
|
||||
permutation "s1-begin" "s1-pause-node" "s2-begin" "s2-select-distributed" "s2-end" "s1-end"
|
||||
permutation "s1-begin" "s1-pause-node" "s2-begin" "s2-insert-reference" "s2-end" "s1-end"
|
||||
|
|
Loading…
Reference in New Issue