From 73147150ddb14287641750a4086e9f3530744a9e Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Wed, 11 Jun 2025 17:38:51 +0000 Subject: [PATCH 01/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix error message to be more descriptive --- app/models/runtime/constraints/max_memory_policy.rb | 3 ++- .../unit/models/runtime/constraints/max_memory_policy_spec.rb | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/runtime/constraints/max_memory_policy.rb b/app/models/runtime/constraints/max_memory_policy.rb index 5c59f75fa72..2e00ea50eb8 100644 --- a/app/models/runtime/constraints/max_memory_policy.rb +++ b/app/models/runtime/constraints/max_memory_policy.rb @@ -13,7 +13,8 @@ def validate return if policy_target.has_remaining_memory(requested_memory) - resource.errors.add(field, error_name) + resource.errors.add(field, "exceeded for space #{policy_target.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight") + end private diff --git a/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb b/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb index 112a9bcb184..c276e0fc43f 100644 --- a/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb +++ b/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' RSpec.describe 'max memory policies' do - let(:org_or_space) { double(:org_or_space, has_remaining_memory: false) } - let(:error_name) { :random_memory_error } + let(:org_or_space) { double(:org_or_space, has_remaining_memory: false, name: 'space1') } + let(:error_name) { "exceeded for space space1. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight" } describe AppMaxMemoryPolicy do subject(:validator) { AppMaxMemoryPolicy.new(process, org_or_space, error_name) } From ba1b5c90d11f85ff901082b50172fd647b0379f7 Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Wed, 11 Jun 2025 18:56:44 +0000 Subject: [PATCH 02/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix Rubocop errors --- app/models/runtime/constraints/max_memory_policy.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/runtime/constraints/max_memory_policy.rb b/app/models/runtime/constraints/max_memory_policy.rb index 2e00ea50eb8..0c3d920e802 100644 --- a/app/models/runtime/constraints/max_memory_policy.rb +++ b/app/models/runtime/constraints/max_memory_policy.rb @@ -13,8 +13,8 @@ def validate return if policy_target.has_remaining_memory(requested_memory) - resource.errors.add(field, "exceeded for space #{policy_target.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight") - + resource.errors.add(field, + "exceeded for space #{policy_target.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight") end private From cecb2144ff49bf4f0de923b646bb14ced69cd38b Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Tue, 17 Jun 2025 17:58:42 +0000 Subject: [PATCH 03/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Only update the error message for rolling deployments based on code review --- app/actions/deployment_create.rb | 6 +++++- spec/unit/actions/deployment_create_spec.rb | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 8673a4442bb..a1607d07182 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -75,7 +75,11 @@ def create(app:, user_audit_info:, message:) deployment rescue RevisionResolver::NoUpdateRollback, Sequel::ValidationFailed, AppStart::InvalidApp => e - error = DeploymentCreate::Error.new(e.message) + if e.message.include?(:space_quota_exceeded.to_s) + error = DeploymentCreate::Error.new(e.message + " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") + else + error = DeploymentCreate::Error.new(e.message) + end error.set_backtrace(e.backtrace) raise error end diff --git a/spec/unit/actions/deployment_create_spec.rb b/spec/unit/actions/deployment_create_spec.rb index ab242555aa2..91c9a3ad709 100644 --- a/spec/unit/actions/deployment_create_spec.rb +++ b/spec/unit/actions/deployment_create_spec.rb @@ -598,11 +598,11 @@ module VCAP::CloudController context 'when the app fails to start' do before do - allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory quota_exceeded')) + allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory space_quota_exceeded')) end it 'raises a DeploymentCreate::Error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, 'memory quota_exceeded') + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, "memory space_quota_exceeded for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") end end end From 4e1f1caf50e44d181e0868756cf6a3cf2b0c944a Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Tue, 17 Jun 2025 18:11:21 +0000 Subject: [PATCH 04/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Revert changes that affect all actions since we only want to update rolling reployments --- app/models/runtime/constraints/max_memory_policy.rb | 3 +-- .../unit/models/runtime/constraints/max_memory_policy_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/runtime/constraints/max_memory_policy.rb b/app/models/runtime/constraints/max_memory_policy.rb index 0c3d920e802..5c59f75fa72 100644 --- a/app/models/runtime/constraints/max_memory_policy.rb +++ b/app/models/runtime/constraints/max_memory_policy.rb @@ -13,8 +13,7 @@ def validate return if policy_target.has_remaining_memory(requested_memory) - resource.errors.add(field, - "exceeded for space #{policy_target.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight") + resource.errors.add(field, error_name) end private diff --git a/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb b/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb index c276e0fc43f..112a9bcb184 100644 --- a/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb +++ b/spec/unit/models/runtime/constraints/max_memory_policy_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' RSpec.describe 'max memory policies' do - let(:org_or_space) { double(:org_or_space, has_remaining_memory: false, name: 'space1') } - let(:error_name) { "exceeded for space space1. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight" } + let(:org_or_space) { double(:org_or_space, has_remaining_memory: false) } + let(:error_name) { :random_memory_error } describe AppMaxMemoryPolicy do subject(:validator) { AppMaxMemoryPolicy.new(process, org_or_space, error_name) } From 56c3daff75cc36a1fcecd3cf050cb396b518df15 Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Tue, 17 Jun 2025 18:45:07 +0000 Subject: [PATCH 05/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix rubocop errors --- spec/unit/actions/deployment_create_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/unit/actions/deployment_create_spec.rb b/spec/unit/actions/deployment_create_spec.rb index 91c9a3ad709..b8161108967 100644 --- a/spec/unit/actions/deployment_create_spec.rb +++ b/spec/unit/actions/deployment_create_spec.rb @@ -602,7 +602,11 @@ module VCAP::CloudController end it 'raises a DeploymentCreate::Error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, "memory space_quota_exceeded for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") + expect do + DeploymentCreate.create(app:, message:, + user_audit_info:) + end.to raise_error(DeploymentCreate::Error, + "memory space_quota_exceeded for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") end end end From b016e37c2a0133fff8c4cfefb734a9b2099093cc Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Thu, 19 Jun 2025 02:04:24 +0000 Subject: [PATCH 06/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Update error message for space_app_instance_limit_exceeded --- app/actions/deployment_create.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index a1607d07182..3b013cd1dba 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -75,7 +75,8 @@ def create(app:, user_audit_info:, message:) deployment rescue RevisionResolver::NoUpdateRollback, Sequel::ValidationFailed, AppStart::InvalidApp => e - if e.message.include?(:space_quota_exceeded.to_s) + space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] + if space_quota_errors.any? { |substring| e.message.include?(substring) } error = DeploymentCreate::Error.new(e.message + " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") else error = DeploymentCreate::Error.new(e.message) From 5e9b4b7fdf186457c66ef9b594ceed986f931d3d Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Thu, 19 Jun 2025 16:48:18 +0000 Subject: [PATCH 07/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix Rubocop errors --- app/actions/deployment_create.rb | 3 ++- spec/unit/actions/deployment_create_spec.rb | 8 +++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 3b013cd1dba..1328bfee2c5 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -77,7 +77,8 @@ def create(app:, user_audit_info:, message:) rescue RevisionResolver::NoUpdateRollback, Sequel::ValidationFailed, AppStart::InvalidApp => e space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] if space_quota_errors.any? { |substring| e.message.include?(substring) } - error = DeploymentCreate::Error.new(e.message + " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") + error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." + error = DeploymentCreate::Error.new(e.message + error_msg) else error = DeploymentCreate::Error.new(e.message) end diff --git a/spec/unit/actions/deployment_create_spec.rb b/spec/unit/actions/deployment_create_spec.rb index b8161108967..332aeb5399c 100644 --- a/spec/unit/actions/deployment_create_spec.rb +++ b/spec/unit/actions/deployment_create_spec.rb @@ -602,11 +602,9 @@ module VCAP::CloudController end it 'raises a DeploymentCreate::Error' do - expect do - DeploymentCreate.create(app:, message:, - user_audit_info:) - end.to raise_error(DeploymentCreate::Error, - "memory space_quota_exceeded for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight.") + error_msg_1 = "memory space_quota_exceeded for space #{app.space.name}. " + error_msg_2 = "This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end end From aa2303221e9930b3170092157369c70cbd4225ac Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Thu, 19 Jun 2025 20:00:40 +0000 Subject: [PATCH 08/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Cleanup for Rubocop errors --- app/actions/deployment_create.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 1328bfee2c5..03879d599c0 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -75,6 +75,10 @@ def create(app:, user_audit_info:, message:) deployment rescue RevisionResolver::NoUpdateRollback, Sequel::ValidationFailed, AppStart::InvalidApp => e + raise handle_deployment_create_error(e, app) + end + + def handle_deployment_create_error(e, app) space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] if space_quota_errors.any? { |substring| e.message.include?(substring) } error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." @@ -83,7 +87,7 @@ def create(app:, user_audit_info:, message:) error = DeploymentCreate::Error.new(e.message) end error.set_backtrace(e.backtrace) - raise error + error end def create_deployment_process(app, deployment_guid, revision, process_instances) From 4e45544aeba1cb8aa1ace57992af4711f6284b50 Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Thu, 19 Jun 2025 21:36:39 +0000 Subject: [PATCH 09/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Update error message for org errors during rolling deployment --- app/actions/deployment_create.rb | 4 ++++ spec/unit/actions/deployment_create_spec.rb | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 03879d599c0..666c52b04b6 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -80,9 +80,13 @@ def create(app:, user_audit_info:, message:) def handle_deployment_create_error(e, app) space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] + org_quota_errors = [:quota_exceeded.to_s, :app_instance_limit_exceeded.to_s] if space_quota_errors.any? { |substring| e.message.include?(substring) } error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." error = DeploymentCreate::Error.new(e.message + error_msg) + elsif org_quota_errors.any? { |substring| e.message.include?(substring) } + error_msg = " for organization #{app.organization.name}. This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + error = DeploymentCreate::Error.new(e.message + error_msg) else error = DeploymentCreate::Error.new(e.message) end diff --git a/spec/unit/actions/deployment_create_spec.rb b/spec/unit/actions/deployment_create_spec.rb index 332aeb5399c..aca12be7593 100644 --- a/spec/unit/actions/deployment_create_spec.rb +++ b/spec/unit/actions/deployment_create_spec.rb @@ -596,7 +596,7 @@ module VCAP::CloudController end end - context 'when the app fails to start' do + context 'when the app fails to start due to space errors' do before do allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory space_quota_exceeded')) end @@ -607,6 +607,18 @@ module VCAP::CloudController expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end + + context 'when the app fails to start due to org errors' do + before do + allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory quota_exceeded')) + end + + it 'raises a DeploymentCreate::Error' do + error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " + error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) + end + end end end From aa44c5df0f7e72bf772f9f535c080d0e24feb2fa Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Fri, 20 Jun 2025 21:30:55 +0000 Subject: [PATCH 10/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix merge issues --- spec/unit/actions/deployment_create_spec.rb | 30 +++++++++------------ 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/spec/unit/actions/deployment_create_spec.rb b/spec/unit/actions/deployment_create_spec.rb index 36f0e324afc..0526d4bae4b 100644 --- a/spec/unit/actions/deployment_create_spec.rb +++ b/spec/unit/actions/deployment_create_spec.rb @@ -604,7 +604,7 @@ module VCAP::CloudController expect(deployment.max_in_flight).to eq(12) end end - + context 'when the app fails to start due to space errors' do before do allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory space_quota_exceeded')) @@ -649,7 +649,9 @@ module VCAP::CloudController let(:web_instances) { 11 } it 'throws an error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, 'memory quota_exceeded') + error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " + error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end @@ -695,7 +697,9 @@ module VCAP::CloudController let(:memory_in_mb) { 4000 } it 'throws an error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, 'memory quota_exceeded') + error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " + error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end @@ -729,18 +733,6 @@ module VCAP::CloudController expect(deployment.canary_steps).to eq([{ 'instance_weight' => 40 }, { 'instance_weight' => 80 }]) end end - - context 'when the app fails to start due to org errors' do - before do - allow(VCAP::CloudController::AppStart).to receive(:start).and_raise(VCAP::CloudController::AppStart::InvalidApp.new('memory quota_exceeded')) - end - - it 'raises a DeploymentCreate::Error' do - error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " - error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) - end - end end end @@ -894,7 +886,9 @@ module VCAP::CloudController let(:web_instances) { 11 } it 'throws an error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, 'memory quota_exceeded') + error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " + error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end @@ -949,7 +943,9 @@ module VCAP::CloudController let(:memory_in_mb) { 4000 } it 'throws an error' do - expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, 'memory quota_exceeded') + error_msg_1 = "memory quota_exceeded for organization #{app.organization.name}. " + error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + expect { DeploymentCreate.create(app:, message:, user_audit_info:) }.to raise_error(DeploymentCreate::Error, error_msg_1 + error_msg_2) end end From b22f3941e5fba7402a88f4dee895c230d5fc8e17 Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Fri, 20 Jun 2025 21:45:47 +0000 Subject: [PATCH 11/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix Rubocop error --- app/actions/deployment_create.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 26664d8a7a5..092aca72955 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -90,11 +90,12 @@ def handle_deployment_create_error(e, app) space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] org_quota_errors = [:quota_exceeded.to_s, :app_instance_limit_exceeded.to_s] if space_quota_errors.any? { |substring| e.message.include?(substring) } - error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." - error = DeploymentCreate::Error.new(e.message + error_msg) + space_error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." + error = DeploymentCreate::Error.new(e.message + space_error_msg) elsif org_quota_errors.any? { |substring| e.message.include?(substring) } - error_msg = " for organization #{app.organization.name}. This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." - error = DeploymentCreate::Error.new(e.message + error_msg) + org_error_msg_1 = " for organization #{app.organization.name}. " + org_error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + error = DeploymentCreate::Error.new(e.message + org_error_msg_1 + org_error_msg_2) else error = DeploymentCreate::Error.new(e.message) end From a9231ebb4bc010b5df6f46b75a03b688369de54a Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Fri, 27 Jun 2025 18:23:40 +0000 Subject: [PATCH 12/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Update from code review comments and cleanup --- app/actions/deployment_create.rb | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 092aca72955..95a7099260e 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -87,18 +87,21 @@ def create(app:, user_audit_info:, message:) end def handle_deployment_create_error(e, app) - space_quota_errors = [:space_quota_exceeded.to_s, :space_app_instance_limit_exceeded.to_s] - org_quota_errors = [:quota_exceeded.to_s, :app_instance_limit_exceeded.to_s] + space_quota_errors = %w(space_quota_exceeded space_app_instance_limit_exceeded) + org_quota_errors = %w(quota_exceeded app_instance_limit_exceeded) + space_error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." + org_error_msg_1 = " for organization #{app.organization.name}. " + org_error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." + org_error_msg = org_error_msg_1 + org_error_msg_2 + error_message = e.message + if space_quota_errors.any? { |substring| e.message.include?(substring) } - space_error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." - error = DeploymentCreate::Error.new(e.message + space_error_msg) + error_message += space_error_msg elsif org_quota_errors.any? { |substring| e.message.include?(substring) } - org_error_msg_1 = " for organization #{app.organization.name}. " - org_error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." - error = DeploymentCreate::Error.new(e.message + org_error_msg_1 + org_error_msg_2) - else - error = DeploymentCreate::Error.new(e.message) + error_message += org_error_msg end + + error = DeploymentCreate::Error.new(error_message) error.set_backtrace(e.backtrace) error end From 2b33179687bc8fb1914b603bf3dd7b37545b9cef Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Fri, 27 Jun 2025 18:35:14 +0000 Subject: [PATCH 13/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Revert unintended change --- app/actions/deployment_create.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 95a7099260e..17f84fd011b 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -103,7 +103,7 @@ def handle_deployment_create_error(e, app) error = DeploymentCreate::Error.new(error_message) error.set_backtrace(e.backtrace) - error + raise error end def create_deployment_process(app, deployment_guid, revision, process_instances) From 68211928c7c99df95a758f1b71e27e6dad2a605d Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Fri, 27 Jun 2025 19:58:16 +0000 Subject: [PATCH 14/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Fix rubocop errors --- app/actions/deployment_create.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index 17f84fd011b..d2b13e4481e 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -87,8 +87,8 @@ def create(app:, user_audit_info:, message:) end def handle_deployment_create_error(e, app) - space_quota_errors = %w(space_quota_exceeded space_app_instance_limit_exceeded) - org_quota_errors = %w(quota_exceeded app_instance_limit_exceeded) + space_quota_errors = %w[space_quota_exceeded space_app_instance_limit_exceeded] + org_quota_errors = %w[quota_exceeded app_instance_limit_exceeded] space_error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." org_error_msg_1 = " for organization #{app.organization.name}. " org_error_msg_2 = "This organization's quota may not be large enough to support rolling deployments or your configured max-in-flight." @@ -101,7 +101,7 @@ def handle_deployment_create_error(e, app) error_message += org_error_msg end - error = DeploymentCreate::Error.new(error_message) + error = DeploymentCreate::Error.new(error_message) error.set_backtrace(e.backtrace) raise error end From 702387d16a9cf85aca7049498df7e66d56996e0d Mon Sep 17 00:00:00 2001 From: Sriram Nookala Date: Mon, 30 Jun 2025 01:17:51 +0000 Subject: [PATCH 15/15] Improve error messaging for creating a Deployment that will violate quotas with high max-in-flight Rename method and remove unnecessary raise --- app/actions/deployment_create.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/actions/deployment_create.rb b/app/actions/deployment_create.rb index d2b13e4481e..a1fefb9db3a 100644 --- a/app/actions/deployment_create.rb +++ b/app/actions/deployment_create.rb @@ -83,10 +83,10 @@ def create(app:, user_audit_info:, message:) deployment rescue RevisionResolver::NoUpdateRollback, Sequel::ValidationFailed, AppStart::InvalidApp => e - raise handle_deployment_create_error(e, app) + raise enhanced_deployment_create_error(e, app) end - def handle_deployment_create_error(e, app) + def enhanced_deployment_create_error(e, app) space_quota_errors = %w[space_quota_exceeded space_app_instance_limit_exceeded] org_quota_errors = %w[quota_exceeded app_instance_limit_exceeded] space_error_msg = " for space #{app.space.name}. This space's quota may not be large enough to support rolling deployments or your configured max-in-flight." @@ -103,7 +103,7 @@ def handle_deployment_create_error(e, app) error = DeploymentCreate::Error.new(error_message) error.set_backtrace(e.backtrace) - raise error + error end def create_deployment_process(app, deployment_guid, revision, process_instances)