From bb7c976b7b2513f2d641fc72ea236508dceca3c3 Mon Sep 17 00:00:00 2001 From: Sait Talha Nisanci Date: Fri, 17 Apr 2020 15:05:05 +0300 Subject: [PATCH] add invalidate_inactive_shared_connections udf --- .../connection/shared_connection_stats.c | 13 +++++++++++++ src/backend/distributed/sql/citus--9.2-4--9.3-2.sql | 1 + .../9.3-2.sql | 10 ++++++++++ .../latest.sql | 10 ++++++++++ 4 files changed, 34 insertions(+) create mode 100644 src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/9.3-2.sql create mode 100644 src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/latest.sql diff --git a/src/backend/distributed/connection/shared_connection_stats.c b/src/backend/distributed/connection/shared_connection_stats.c index 92505caeb..89eb66435 100644 --- a/src/backend/distributed/connection/shared_connection_stats.c +++ b/src/backend/distributed/connection/shared_connection_stats.c @@ -109,6 +109,19 @@ static uint32 SharedConnectionHashHash(const void *key, Size keysize); PG_FUNCTION_INFO_V1(citus_remote_connection_stats); +PG_FUNCTION_INFO_V1(invalidate_inactive_shared_connections); + +/* + * invalidate_inactive_shared_connections invalidates inactive + * and not used shared connections by removing from the global hash. + */ +Datum +invalidate_inactive_shared_connections(PG_FUNCTION_ARGS) +{ + RemoveInactiveNodesFromSharedConnections(); + PG_RETURN_VOID(); +} + /* * citus_remote_connection_stats returns all the avaliable information about all diff --git a/src/backend/distributed/sql/citus--9.2-4--9.3-2.sql b/src/backend/distributed/sql/citus--9.2-4--9.3-2.sql index 8716ceb6c..c4e8a6527 100644 --- a/src/backend/distributed/sql/citus--9.2-4--9.3-2.sql +++ b/src/backend/distributed/sql/citus--9.2-4--9.3-2.sql @@ -9,6 +9,7 @@ #include "udfs/worker_create_or_alter_role/9.3-2.sql" #include "udfs/truncate_local_data_after_distributing_table/9.3-2.sql" +#include "udfs/invalidate_inactive_shared_connections/9.3-2.sql" -- add citus extension owner as a distributed object, if not already in there INSERT INTO citus.pg_dist_object SELECT (SELECT oid FROM pg_class WHERE relname = 'pg_authid') AS oid, diff --git a/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/9.3-2.sql b/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/9.3-2.sql new file mode 100644 index 000000000..54c1f8e1f --- /dev/null +++ b/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/9.3-2.sql @@ -0,0 +1,10 @@ +CREATE OR REPLACE FUNCTION pg_catalog.invalidate_inactive_shared_connections() +RETURNS VOID +LANGUAGE C STRICT +AS 'MODULE_PATHNAME', $$invalidate_inactive_shared_connections$$; + +COMMENT ON FUNCTION pg_catalog.invalidate_inactive_shared_connections() + IS 'invalidated inactive shared connections'; + +REVOKE ALL ON FUNCTION pg_catalog.invalidate_inactive_shared_connections() +FROM PUBLIC; diff --git a/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/latest.sql b/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/latest.sql new file mode 100644 index 000000000..54c1f8e1f --- /dev/null +++ b/src/backend/distributed/sql/udfs/invalidate_inactive_shared_connections/latest.sql @@ -0,0 +1,10 @@ +CREATE OR REPLACE FUNCTION pg_catalog.invalidate_inactive_shared_connections() +RETURNS VOID +LANGUAGE C STRICT +AS 'MODULE_PATHNAME', $$invalidate_inactive_shared_connections$$; + +COMMENT ON FUNCTION pg_catalog.invalidate_inactive_shared_connections() + IS 'invalidated inactive shared connections'; + +REVOKE ALL ON FUNCTION pg_catalog.invalidate_inactive_shared_connections() +FROM PUBLIC;