Resolve merge conflicts by accepting deletions
This commit is contained in:
46
devops/tools/ops-scripts/check-advisory-raw-duplicates.sql
Normal file
46
devops/tools/ops-scripts/check-advisory-raw-duplicates.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- Advisory raw duplicate detection query
|
||||
-- Surfaces advisory_raw duplicate candidates prior to enabling the idempotency unique index.
|
||||
-- Intended for staging/offline snapshots.
|
||||
--
|
||||
-- Usage:
|
||||
-- psql -d concelier -f ops/devops/tools/ops-scripts/check-advisory-raw-duplicates.sql
|
||||
--
|
||||
-- Environment variables:
|
||||
-- LIMIT - optional cap on number of duplicate groups to print (default 50).
|
||||
|
||||
\echo '== advisory_raw duplicate audit =='
|
||||
\conninfo
|
||||
|
||||
WITH duplicates AS (
|
||||
SELECT
|
||||
source_vendor,
|
||||
upstream_id,
|
||||
content_hash,
|
||||
tenant,
|
||||
COUNT(*) as count,
|
||||
ARRAY_AGG(id) as ids
|
||||
FROM advisory_raw
|
||||
GROUP BY source_vendor, upstream_id, content_hash, tenant
|
||||
HAVING COUNT(*) > 1
|
||||
ORDER BY COUNT(*) DESC, source_vendor, upstream_id
|
||||
LIMIT COALESCE(NULLIF(:'LIMIT', '')::INT, 50)
|
||||
)
|
||||
SELECT
|
||||
'vendor: ' || source_vendor || E'\n' ||
|
||||
'upstream_id: ' || upstream_id || E'\n' ||
|
||||
'tenant: ' || COALESCE(tenant, 'NULL') || E'\n' ||
|
||||
'content_hash: ' || content_hash || E'\n' ||
|
||||
'count: ' || count || E'\n' ||
|
||||
'ids: ' || ARRAY_TO_STRING(ids, ', ') AS duplicate_info
|
||||
FROM duplicates;
|
||||
|
||||
SELECT CASE WHEN COUNT(*) = 0
|
||||
THEN 'No duplicate advisory_raw documents detected.'
|
||||
ELSE 'Found ' || COUNT(*) || ' duplicate groups.'
|
||||
END as status
|
||||
FROM (
|
||||
SELECT 1 FROM advisory_raw
|
||||
GROUP BY source_vendor, upstream_id, content_hash, tenant
|
||||
HAVING COUNT(*) > 1
|
||||
LIMIT 1
|
||||
) t;
|
||||
60
devops/tools/ops-scripts/rollback-lnm-backfill.sql
Normal file
60
devops/tools/ops-scripts/rollback-lnm-backfill.sql
Normal file
@@ -0,0 +1,60 @@
|
||||
-- Rollback script for LNM-21-102-DEV legacy advisory backfill migration.
|
||||
-- Removes backfilled observations and linksets by querying the backfill_marker field,
|
||||
-- then clears the tombstone markers from advisory_raw.
|
||||
--
|
||||
-- Usage:
|
||||
-- psql -d concelier -f ops/devops/tools/ops-scripts/rollback-lnm-backfill.sql
|
||||
--
|
||||
-- Environment variables:
|
||||
-- DRY_RUN - if set to "1", only reports what would be deleted without making changes.
|
||||
--
|
||||
-- After running this script, delete the migration record:
|
||||
-- DELETE FROM schema_migrations WHERE id = '20251127_lnm_legacy_backfill';
|
||||
--
|
||||
-- Then restart the Concelier service.
|
||||
|
||||
\echo ''
|
||||
\echo '== LNM-21-102-DEV Backfill Rollback =='
|
||||
\conninfo
|
||||
|
||||
-- Count backfilled observations
|
||||
SELECT 'Found ' || COUNT(*) || ' backfilled observations to remove.' as status
|
||||
FROM advisory_observations
|
||||
WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
|
||||
-- Count backfilled linksets
|
||||
SELECT 'Found ' || COUNT(*) || ' backfilled linksets to remove.' as status
|
||||
FROM advisory_linksets
|
||||
WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
|
||||
-- Count advisory_raw tombstone markers
|
||||
SELECT 'Found ' || COUNT(*) || ' advisory_raw documents with tombstone markers to clear.' as status
|
||||
FROM advisory_raw
|
||||
WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
|
||||
-- Only execute if not DRY_RUN
|
||||
\if :{?DRY_RUN}
|
||||
\echo 'DRY RUN mode - no changes made'
|
||||
\echo 'Set DRY_RUN=0 or omit it to execute the rollback'
|
||||
\else
|
||||
-- Step 1: Delete backfilled observations
|
||||
DELETE FROM advisory_observations WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
\echo 'Deleted observations'
|
||||
|
||||
-- Step 2: Delete backfilled linksets
|
||||
DELETE FROM advisory_linksets WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
\echo 'Deleted linksets'
|
||||
|
||||
-- Step 3: Clear tombstone markers from advisory_raw
|
||||
UPDATE advisory_raw SET backfill_marker = NULL WHERE backfill_marker = 'lnm_21_102_dev';
|
||||
\echo 'Cleared tombstone markers'
|
||||
\endif
|
||||
|
||||
\echo ''
|
||||
\echo '== Rollback Summary =='
|
||||
\echo ''
|
||||
\echo 'Next steps:'
|
||||
\echo '1. Delete the migration record:'
|
||||
\echo ' DELETE FROM schema_migrations WHERE id = ''20251127_lnm_legacy_backfill'';'
|
||||
\echo '2. Restart the Concelier service.'
|
||||
\echo ''
|
||||
Reference in New Issue
Block a user