Skip to content
Snippets Groups Projects

Fix n plus one issue ci build dast profile

All threads resolved!
3 files
+ 14
10
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -6,9 +6,9 @@ module Profiles
@@ -6,9 +6,9 @@ module Profiles
class CreateAssociationsService < BaseProjectService
class CreateAssociationsService < BaseProjectService
include ::Gitlab::Ci::Pipeline::Chain::Helpers
include ::Gitlab::Ci::Pipeline::Chain::Helpers
def initialize(project:, current_user: nil, params: {}, builds: [])
def initialize(project:, current_user: nil, params: {})
super(project: project, current_user: current_user, params: params)
super(project: project, current_user: current_user, params: params)
@builds = builds
@builds = params[:builds] || []
@dast_site_profiles_builds = []
@dast_site_profiles_builds = []
@dast_scanner_profiles_builds = []
@dast_scanner_profiles_builds = []
@errors = []
@errors = []
@@ -57,16 +57,14 @@ def insert_builds
@@ -57,16 +57,14 @@ def insert_builds
::Dast::SiteProfilesBuild.insert_all(@dast_site_profiles_builds, unique_by: 'ci_build_id')
::Dast::SiteProfilesBuild.insert_all(@dast_site_profiles_builds, unique_by: 'ci_build_id')
::Dast::ScannerProfilesBuild.insert_all(@dast_scanner_profiles_builds, unique_by: 'ci_build_id')
::Dast::ScannerProfilesBuild.insert_all(@dast_scanner_profiles_builds, unique_by: 'ci_build_id')
rescue ActiveRecord::ActiveRecordError => e
::Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, extra: { pipeline_id: pipeline.id })
error('Failed to associate DAST profiles')
end
end
def has_permission?(profile, name)
def has_permission?(profile, name)
unless can?(current_user, :read_on_demand_dast_scan, profile)
if can?(current_user, :read_on_demand_dast_scan, profile)
 
true
 
else
@errors.push(_('DAST profile not found: %{name}') % { name: name })
@errors.push(_('DAST profile not found: %{name}') % { name: name })
nil
false
end
end
end
end
Loading