Draft: fix: reinstate vulnerability read trigger flag
Relates to issue #580521
Changes
This MR reinstates the vulnerability read database trigger feature flag implementation from !208297 (merged) to ensure safe transition away from database triggers.
Infrastructure
- Added feature flag transaction helper methods to
SecApplicationRecord:-
feature_flagged_transaction_for(projects)- wraps transactions with feature flag passing -
db_trigger_flag_not_set?- checks if feature flag is set -
pass_feature_flag_to_vuln_reads_db_trigger(projects)- passes flag to DB trigger
-
- Created
EnforceVulnerabilityReadDbTriggerFfconcern to enforce feature flag usage in transactions
Model Extensions
- Extended
Vulnerability,Vulnerabilities::Finding,Vulnerabilities::MergeRequestLink, andVulnerabilities::Readmodels with enforcement concern - Added
pluck_distinct_project_idsscope to Vulnerability model
Service Updates
Updated 14 vulnerability services to use feature_flagged_transaction_for:
Vulnerabilities::Archival::Restoration::RestoreBatchServiceVulnerabilities::Archival::ArchiveBatchServiceVulnerabilities::BaseServiceVulnerabilities::BaseStateTransitionServiceVulnerabilities::BulkDismissServiceVulnerabilities::BulkSeverityOverrideServiceVulnerabilities::CreateServiceVulnerabilities::FindOrCreateFromSecurityFindingServiceVulnerabilities::ManuallyCreateServiceVulnerabilities::AutoResolveServiceVulnerabilities::Removal::RemoveFromProjectServiceVulnerabilities::Findings::FindOrCreateFromSecurityFindingServiceVulnerabilities::Reads::UpsertService-
Import::DirectReassignService(with special handling for Vulnerability models)
Impact
This implementation ensures the feature flag is always passed when creating or updating vulnerability reads, making the transition away from database triggers safer and more predictable.
Edited by Gregory Havenga