Version v17.7.0 telemetry hygiene migration
This commit is contained in:
parent
7ae3dfc366
commit
2f5054cc21
30
ops/sql/SUPABASE-V17.7.0-ERROR-TELEMETRY-HYGIENE.sql
Normal file
30
ops/sql/SUPABASE-V17.7.0-ERROR-TELEMETRY-HYGIENE.sql
Normal file
@ -0,0 +1,30 @@
|
||||
create or replace function public.sun_v17_log_error(p_workspace uuid, p_client_id text, p_app_version text, p_level text, p_message text, p_stack text, p_context jsonb default '{}'::jsonb)
|
||||
returns uuid
|
||||
language plpgsql
|
||||
security definer
|
||||
set search_path='public' as $$
|
||||
declare v_id uuid; v_url text:=coalesce(p_context->>'url',''); v_message text:=left(coalesce(p_message,'Unknown error'),4000); v_level text:=left(coalesce(p_level,'error'),30); v_version text:=left(coalesce(p_app_version,''),80);
|
||||
begin
|
||||
if p_workspace is not null and public.sun_member_role(p_workspace) is null then raise exception 'Access denied'; end if;
|
||||
if v_url ~* '^file:' then return null; end if;
|
||||
select e.id into v_id from public.sun_v17_error_events e
|
||||
where e.workspace_id is not distinct from p_workspace
|
||||
and e.user_id is not distinct from auth.uid()
|
||||
and coalesce(e.app_version,'')=v_version
|
||||
and coalesce(e.level,'error')=v_level
|
||||
and e.message=v_message
|
||||
and e.created_at>=now()-interval '5 minutes'
|
||||
order by e.created_at desc limit 1;
|
||||
if v_id is not null then return v_id; end if;
|
||||
insert into public.sun_v17_error_events(workspace_id,user_id,client_id,app_version,level,message,stack,context)
|
||||
values(p_workspace,auth.uid(),left(p_client_id,120),v_version,v_level,v_message,left(coalesce(p_stack,''),12000),coalesce(p_context,'{}'::jsonb)) returning id into v_id;
|
||||
return v_id;
|
||||
end;$$;
|
||||
|
||||
delete from public.sun_v17_error_events where coalesce(context->>'url','') ~* '^file:';
|
||||
|
||||
do $$ declare v_job bigint; begin
|
||||
select jobid into v_job from cron.job where jobname='caterium-error-retention';
|
||||
if v_job is not null then perform cron.unschedule(v_job); end if;
|
||||
perform cron.schedule('caterium-error-retention','23 3 * * *',$cron$delete from public.sun_v17_error_events where created_at < now()-interval '30 days';$cron$);
|
||||
end$$;
|
||||
Loading…
Reference in New Issue
Block a user