diff options
Diffstat (limited to 'app/models/environment.rb')
-rw-r--r-- | app/models/environment.rb | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/app/models/environment.rb b/app/models/environment.rb index 48522a23068..31ab426728b 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -28,8 +28,8 @@ class Environment < ApplicationRecord has_one :last_deployment, -> { success.distinct_on_environment }, class_name: 'Deployment', inverse_of: :environment has_one :last_visible_deployment, -> { visible.distinct_on_environment }, inverse_of: :environment, class_name: 'Deployment' - has_one :last_visible_deployable, through: :last_visible_deployment, source: 'deployable', source_type: 'CommitStatus', disable_joins: -> { ::Feature.enabled?(:environment_last_visible_pipeline_disable_joins, default_enabled: :yaml) } - has_one :last_visible_pipeline, through: :last_visible_deployable, source: 'pipeline', disable_joins: -> { ::Feature.enabled?(:environment_last_visible_pipeline_disable_joins, default_enabled: :yaml) } + has_one :last_visible_deployable, through: :last_visible_deployment, source: 'deployable', source_type: 'CommitStatus', disable_joins: true + has_one :last_visible_pipeline, through: :last_visible_deployable, source: 'pipeline', disable_joins: true has_one :upcoming_deployment, -> { running.distinct_on_environment }, class_name: 'Deployment', inverse_of: :environment has_one :latest_opened_most_severe_alert, -> { order_severity_with_open_prometheus_alert }, class_name: 'AlertManagement::Alert', inverse_of: :environment @@ -198,14 +198,14 @@ class Environment < ApplicationRecord # Overriding association def last_visible_deployable - return super if association_cached?(:last_visible_deployable) || ::Feature.disabled?(:environment_last_visible_pipeline_disable_joins, default_enabled: :yaml) + return super if association_cached?(:last_visible_deployable) last_visible_deployment&.deployable end # Overriding association def last_visible_pipeline - return super if association_cached?(:last_visible_pipeline) || ::Feature.disabled?(:environment_last_visible_pipeline_disable_joins, default_enabled: :yaml) + return super if association_cached?(:last_visible_pipeline) last_visible_deployable&.pipeline end @@ -260,10 +260,9 @@ class Environment < ApplicationRecord end def cancel_deployment_jobs! - jobs = active_deployments.with_deployable - jobs.each do |deployment| - Gitlab::OptimisticLocking.retry_lock(deployment.deployable, name: 'environment_cancel_deployment_jobs') do |deployable| - deployable.cancel! if deployable&.cancelable? + active_deployments.builds.each do |build| + Gitlab::OptimisticLocking.retry_lock(build, name: 'environment_cancel_deployment_jobs') do |build| + build.cancel! if build&.cancelable? end rescue StandardError => e Gitlab::ErrorTracking.track_exception(e, environment_id: id, deployment_id: deployment.id) |