Re: Error “cache lookup failed for function” - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: Error “cache lookup failed for function” |
Date | |
Msg-id | b75ac0b5-f265-0c00-d95e-6a9e79bf852d@aklaver.com Whole thread Raw |
In response to | Re: Error“cache lookup failed for function” (Albrecht Dreß <albrecht.dress@arcor.de>) |
Responses |
Re: Error“cache lookup failed for function”
|
List | pgsql-general |
On 2/21/20 9:55 AM, Albrecht Dreß wrote: > Am 20.02.20 21:41 schrieb(en) Adrian Klaver: >> It would be nice to know what: > [snip] >> represented in: > > Dropping and re-creating the function is actually the last operation in > the script. The function is /very/ simple (just a wrapper to hide all > internals from "agent" clients): > > ---8<-------------------------------------------------------------------- > DROP FUNCTION public.get_result2(mytaskid bigint, OUT data bytea, OUT > metadata jsonb, OUT errortext text, OUT vanished boolean); > CREATE FUNCTION public.get_result2(mytaskid bigint, OUT data bytea, OUT > metadata jsonb, OUT errortext text, OUT vanished boolean) RETURNS record > LANGUAGE plpgsql STABLE SECURITY DEFINER > SET search_path TO 'public', 'pg_temp' > AS $$ > BEGIN > SELECT r.data, r.metadata, r.errortext FROM results r INNER JOIN > tasks USING(resultid) WHERE taskid = mytaskid LIMIT 1 INTO data, > metadata, errortext; > SELECT COUNT(*) = 0 FROM tasks WHERE taskid = mytaskid INTO vanished; > END; > $$; > ALTER FUNCTION public.get_result2(mytaskid bigint, OUT data bytea, OUT > metadata jsonb, OUT errortext text, OUT vanished boolean) OWNER TO manager; > REVOKE ALL ON FUNCTION public.get_result2(mytaskid bigint, OUT data > bytea, OUT metadata jsonb, OUT errortext text, OUT vanished boolean) > FROM PUBLIC; > GRANT ALL ON FUNCTION public.get_result2(mytaskid bigint, OUT data > bytea, OUT metadata jsonb, OUT errortext text, OUT vanished boolean) TO > "agent"; > COMMIT; > ---8<-------------------------------------------------------------------- > >> The Postgres logs during and after restart might provide some info. >> >> Also the errors thrown when accessing the other function. > > I attach the (slightly stripped down; I don't want to post ~100k…) log, > starting with the very first error at 13:39:59.302 UTC. Prior to that > line are *no* errors. I added a few [comments]. > > At 13:39:59.484 the error message changes, referring to an ancient > function “retrieve_single_result()” which (according to the person who > wrote the “agent” client) is *not* called. The clients try periodically > poll “get_result2()”. > > At 13:42:00 the “systemctl restart” has been initiated. At 13:42:02 the > database has been stopped and is restarted immediately, revealing one > misconfigured client (should be harmless), but the cache lookup error > persists. Hmm. More questions: 1) From your original post what does the below mean?: -- add several db functions -- replace a DB function: 2) What do you see when you do?: select * from pg_proc where oid = 1821571; 3) What is the definition for retrieve_single_result()? 4) What does the below show?: select proname, prosrc from pg_proc where proname in ('retrieve_single_result', 'get_result2'); > > Thanks in advance for your help, > Albrecht. -- Adrian Klaver adrian.klaver@aklaver.com
pgsql-general by date: