From 3962bd023ea6ecec76f94ad3a7ecc073fc8ad994 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Fri, 18 Apr 2025 09:27:57 +0200 Subject: [PATCH] Modify db migration to delete orphaned processes --- ...c38adde1a18e_update_wf_in_process_table.py | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/gso/migrations/versions/2025-04-10_c38adde1a18e_update_wf_in_process_table.py b/gso/migrations/versions/2025-04-10_c38adde1a18e_update_wf_in_process_table.py index d2dc29f82..005d1f182 100644 --- a/gso/migrations/versions/2025-04-10_c38adde1a18e_update_wf_in_process_table.py +++ b/gso/migrations/versions/2025-04-10_c38adde1a18e_update_wf_in_process_table.py @@ -1,4 +1,4 @@ -"""Update wf in process table and delete old workflows +"""Update workflows in process table and delete old processes and workflows Revision ID: c38adde1a18e Revises: 9fbb3c4411ea @@ -85,7 +85,49 @@ WHERE pr.pid = ps.pid for mapping in update_mappings: conn.execute(sa.text(sql_template), mapping) + # Delete input states referencing to orphaned workflows. + conn.execute( + sa.text( + """ +DELETE FROM input_states +WHERE input_states.pid IN (SELECT p.pid + FROM processes p + JOIN workflows w + ON p.workflow_id = w.workflow_id + JOIN processes_subscriptions ps + ON ps.pid = p.pid + JOIN subscriptions s + ON s.subscription_id = ps.subscription_id + JOIN products pro + ON s.product_id = pro.product_id + WHERE w."name" = 'validate_prefix_list' + AND pro."name" != 'GÉANT IP'); + """ + ) + ) + + # Delete processes refering to orphaned workflows. + conn.execute( + sa.text( + """ +DELETE FROM processes +WHERE processes.pid IN (SELECT p.pid + FROM processes p + JOIN workflows w + ON p.workflow_id = w.workflow_id + JOIN processes_subscriptions ps + ON ps.pid = p.pid + JOIN subscriptions s + ON s.subscription_id = ps.subscription_id + JOIN products pro + ON s.product_id = pro.product_id + WHERE w."name" = 'validate_prefix_list' + AND pro."name" != 'GÉANT IP'); + """ + ) + ) + # Delete workflows for products that no longer exist. conn.execute( sa.text( """ -- GitLab