Index: openacs-4/packages/search/search.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/search/search.info,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/search/search.info 21 Mar 2019 16:33:30 -0000 1.46.2.1 +++ openacs-4/packages/search/search.info 1 Mar 2021 18:20:47 -0000 1.46.2.2 @@ -9,7 +9,7 @@ f t - + OpenACS Site wide search 2017-08-06 @@ -18,7 +18,7 @@ GPL version 2 3 - + Index: openacs-4/packages/search/sql/oracle/search-packages-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/search/sql/oracle/search-packages-create.sql,v diff -u -r1.5 -r1.5.12.1 --- openacs-4/packages/search/sql/oracle/search-packages-create.sql 7 Jun 2008 20:29:01 -0000 1.5 +++ openacs-4/packages/search/sql/oracle/search-packages-create.sql 1 Mar 2021 18:20:47 -0000 1.5.12.1 @@ -47,7 +47,22 @@ object_id acs_objects.object_id%TYPE, event search_observer_queue.event%TYPE ) is + l_count integer; begin + -- + -- We see cases, where the object to be removed from the observer + -- queue does not exist anymore. Probably, this is due to some + -- race condition. + -- + + if p_event = 'DELETE' then + select count(*) from acs_objects into l_count + where object_id = p_object_id); + if l_count = 0 then + return; + end if; + end if; + insert into search_observer_queue ( object_id, event Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/search/sql/oracle/upgrade/upgrade-5.10.0d3-5.10.0d4.sql'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/search/sql/postgresql/search-packages-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/search/sql/postgresql/search-packages-create.sql,v diff -u -r1.7 -r1.7.6.1 --- openacs-4/packages/search/sql/postgresql/search-packages-create.sql 30 Mar 2013 18:50:29 -0000 1.7 +++ openacs-4/packages/search/sql/postgresql/search-packages-create.sql 1 Mar 2021 18:20:47 -0000 1.7.6.1 @@ -1,35 +1,47 @@ -- Search Observer Package -- --- @cvs-id $Id$ +-- @cvs-id $Id$ -- -- procedure search_observer__enqueue/2 -- +select define_function_args('search_observer__enqueue','object_id,event'); + CREATE OR REPLACE FUNCTION search_observer__enqueue( p_object_id integer, p_event varchar ) RETURNS integer AS $$ DECLARE BEGIN + -- + -- We see cases, where the object to be removed from the observer + -- queue does not exist anymore. Probably, this is due to some + -- race condition. + -- + if p_event = 'DELETE' then + + IF NOT EXISTS (select 1 from acs_objects where object_id = p_object_id) then + return 0; + end if; + + end if; + insert into search_observer_queue ( - object_id, - event + object_id, + event ) values ( p_object_id, - p_event + p_event ); return 0; END; $$ LANGUAGE plpgsql; -select define_function_args('search_observer__enqueue','object_id,event'); - - -- -- procedure search_observer__dequeue/3 -- @@ -41,8 +53,8 @@ DECLARE BEGIN - delete from search_observer_queue - where object_id = p_object_id + delete from search_observer_queue + where object_id = p_object_id and event = p_event and to_char(event_date,'yyyy-mm-dd hh24:mi:ss.us-tz') = to_char(p_event_date,'yyyy-mm-dd hh24:mi:ss.us-tz'); @@ -52,4 +64,3 @@ $$ LANGUAGE plpgsql; select define_function_args('search_observer__dequeue','object_id,event_date,event'); - Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/search/sql/postgresql/upgrade/upgrade-5.10.0d3-5.10.0d4.sql'. Fisheye: No comparison available. Pass `N' to diff?