Skip to content

Commit d02025b

Browse files
author
shashidharatd
committed
Configurable file_descriptors limit for warden container
file_descriptors for a warden container is made configurable through deployment manifest. Currently the default is 16384 which is read from the database table and is not configurable. To configure, cf operator needs to add the following config variable under cc cc: default_app_file_descriptors: 4096 [#82011156]
1 parent cf61f10 commit d02025b

File tree

6 files changed

+30
-5
lines changed

6 files changed

+30
-5
lines changed

app/models/runtime/app.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ def after_initialize
4444
:state, :version, :command, :console, :debug, :staging_task_id,
4545
:package_state, :health_check_type, :health_check_timeout,
4646
:staging_failed_reason, :docker_image, :package_updated_at,
47-
:detected_start_command
47+
:detected_start_command, :file_descriptors
4848

4949
import_attributes :name, :production, :space_guid, :stack_guid, :buildpack,
5050
:detected_buildpack, :environment_json, :memory, :instances, :disk_quota,
5151
:state, :command, :console, :debug, :staging_task_id,
5252
:service_binding_guids, :route_guids, :health_check_type,
53-
:health_check_timeout, :docker_image, :app_guid
53+
:health_check_timeout, :docker_image, :app_guid, :file_descriptors
5454

5555
strip_attributes :name
5656

@@ -137,6 +137,9 @@ def before_save
137137
self.stack ||= Stack.default
138138
self.memory ||= Config.config[:default_app_memory]
139139
self.disk_quota ||= Config.config[:default_app_disk_in_mb]
140+
if Config.config[:default_app_file_descriptors]
141+
self.file_descriptors ||= Config.config[:default_app_file_descriptors]
142+
end
140143

141144
set_new_version if version_needs_to_be_updated?
142145

bosh-templates/cloud_controller_api.yml.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ billing_event_writing_enabled: <%= p("cc.billing_event_writing_enabled") %>
7272

7373
default_app_memory: <%= p("cc.default_app_memory") %>
7474
default_app_disk_in_mb: <%= p("cc.default_app_disk_in_mb") %>
75+
default_app_file_descriptors: <%= p("cc.default_app_file_descriptors") %>
7576
maximum_app_disk_in_mb: <%= p("cc.maximum_app_disk_in_mb") %>
7677

7778
request_timeout_in_seconds: <%= p("request_timeout_in_seconds") %>

bosh-templates/cloud_controller_clock.yml.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ billing_event_writing_enabled: <%= p("cc.billing_event_writing_enabled") %>
7676

7777
default_app_memory: <%= p("cc.default_app_memory") %>
7878
default_app_disk_in_mb: <%= p("cc.default_app_disk_in_mb") %>
79+
default_app_file_descriptors: <%= p("cc.default_app_file_descriptors") %>
7980
maximum_app_disk_in_mb: <%= p("cc.maximum_app_disk_in_mb") %>
8081

8182
request_timeout_in_seconds: <%= p("request_timeout_in_seconds") %>

bosh-templates/cloud_controller_worker.yml.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ billing_event_writing_enabled: <%= p("cc.billing_event_writing_enabled") %>
7272

7373
default_app_memory: <%= p("cc.default_app_memory") %>
7474
default_app_disk_in_mb: <%= p("cc.default_app_disk_in_mb") %>
75+
default_app_file_descriptors: <%= p("cc.default_app_file_descriptors") %>
7576
maximum_app_disk_in_mb: <%= p("cc.maximum_app_disk_in_mb") %>
7677

7778
request_timeout_in_seconds: <%= p("request_timeout_in_seconds") %>

lib/cloud_controller/config.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class Config < VCAP::Config
4141
optional(:billing_event_writing_enabled) => bool,
4242
:default_app_memory => Fixnum,
4343
:default_app_disk_in_mb => Fixnum,
44+
optional(:default_app_file_descriptors) => Fixnum,
4445
optional(:maximum_app_disk_in_mb) => Fixnum,
4546
:maximum_health_check_timeout => Fixnum,
4647

spec/unit/models/runtime/app_spec.rb

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,8 @@ def act_as_cf_admin(&block)
429429
:staging_failed_reason,
430430
:staging_task_id,
431431
:state,
432-
:version
432+
:version,
433+
:file_descriptors
433434
)
434435
}
435436

@@ -455,7 +456,8 @@ def act_as_cf_admin(&block)
455456
:space_guid,
456457
:stack_guid,
457458
:staging_task_id,
458-
:state
459+
:state,
460+
:file_descriptors
459461
)
460462
}
461463
end
@@ -1640,7 +1642,23 @@ def self.it_does_not_mark_for_re_staging
16401642
end
16411643
end
16421644

1643-
describe 'default disk_quota' do
1645+
describe "default_app_file_descriptors" do
1646+
before do
1647+
TestConfig.override({default_app_file_descriptors: 200})
1648+
end
1649+
1650+
it "uses the provided file descriptors limit" do
1651+
app = App.create_from_hash(name: "awesome app", space_guid: space.guid, file_descriptors: 100)
1652+
expect(app.file_descriptors).to eq(100)
1653+
end
1654+
1655+
it "uses the default_app_file_descriptors when none is provided" do
1656+
app = App.create_from_hash(name: "awesome app", space_guid: space.guid)
1657+
expect(app.file_descriptors).to eq(200)
1658+
end
1659+
end
1660+
1661+
describe "default disk_quota" do
16441662
before do
16451663
TestConfig.override({ default_app_disk_in_mb: 512 })
16461664
end

0 commit comments

Comments
 (0)