Browse Source

check the uniqueness of the launch

pull/12/head
Nina Belyavskaya 4 years ago
parent
commit
df5fc036e0
  1. 24
      index_watch/index_watch_functions.sql

24
index_watch/index_watch_functions.sql

@ -397,11 +397,33 @@ LANGUAGE plpgsql; @@ -397,11 +397,33 @@ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION index_watch._check_lock()
RETURNS bigint AS
$BODY$
DECLARE
_id bigint;
_is_not_running boolean;
BEGIN
SELECT oid FROM pg_namespace WHERE nspname='index_watch' INTO _id;
SELECT pg_try_advisory_lock(_id) INTO _is_not_running;
IF NOT _is_not_running THEN
RAISE 'The previous launch of the index_watch.periodic is still running.';
END IF;
RETURN _id;
END;
$BODY$
LANGUAGE plpgsql;
CREATE OR REPLACE PROCEDURE index_watch.periodic(real_run BOOLEAN DEFAULT FALSE) AS
$BODY$
DECLARE
_datname NAME;
_id bigint;
BEGIN
SELECT index_watch._check_lock() INTO _id;
PERFORM index_watch._check_structure_version();
PERFORM index_watch._cleanup_old_records();
COMMIT;
@ -422,6 +444,8 @@ BEGIN @@ -422,6 +444,8 @@ BEGIN
COMMIT;
END IF;
END LOOP;
PERFORM pg_advisory_unlock(_id);
END;
$BODY$
LANGUAGE plpgsql;

Loading…
Cancel
Save