Skip to content

Commit 8b2dbb5

Browse files
authored
Remove deprecated Thin and Redis config parameters (#591)
* default configuration is now Puma as webserver and Redis/Valkey as cache * leave threadpool_size for the moment to not break ccng config validation
1 parent ea9797b commit 8b2dbb5

File tree

10 files changed

+19
-407
lines changed

10 files changed

+19
-407
lines changed

jobs/cloud_controller_ng/spec

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,9 @@ provides:
231231
- ssl.skip_cert_verify
232232
- system_domain
233233
- uaa.clients.cc_routing.secret
234-
- cc.experimental.use_puma_webserver
235-
- cc.experimental.use_redis
236234
- cc.app_log_revision
237235
- cc.app_instance_stopping_state
238236
- cc.deprecated_stacks
239-
- cc.temporary_enable_deprecated_thin_webserver
240237
- cc.custom_root_links
241238
- cc.feature_flag_overrides
242239
- cc.resource_pool.connection_config
@@ -1315,18 +1312,10 @@ properties:
13151312
default: true
13161313
description: "Log audit events"
13171314

1318-
cc.experimental.thin_server.thread_pool_size:
1319-
description: "How many threads a single cloud controller instance's thin server will attempt to use. Alter at your own peril."
1320-
default: 20 # inherited from default in Thin/EventMachine
1321-
13221315
cc.experimental.use_yjit_compiler:
13231316
description: "Use Ruby's YJIT compiler when running Cloud Controller API servers and workers. This feature is experimental and not recommended. Please review the drawbacks and benefits of YJIT before enabling."
13241317
default: false
13251318

1326-
cc.experimental.use_redis:
1327-
description: "Use co-deployed Valkey (Redis fork) for rate limiting and metrics. If the Puma webserver is enabled, Valkey will automatically be used."
1328-
default: false
1329-
13301319
cc.puma.automatic_worker_count:
13311320
description: "Sets the number of Puma workers to the number of detected cores. See https://github.com/puma/puma?tab=readme-ov-file#clustered-mode for information on how cores are detected. If set to 'true', the value set for `cc.puma.workers` will be ignored."
13321321
default: false
@@ -1351,10 +1340,6 @@ properties:
13511340
description: "Enable legacy MD5 buildpack paths. If disabled, xxhash64 is used for calculating paths in buildpack image layers."
13521341
default: false
13531342

1354-
cc.temporary_enable_deprecated_thin_webserver:
1355-
description: "Use deprecated Thin webserver. Please note that when using Thin instead of Puma you miss out on the following benefits: Better resource utilization, well maintained and more performant. Thin will be removed in a future release. `cc.experimental.use_puma_webserver` takes precedence over this."
1356-
default: false
1357-
13581343
cc.allow_user_creation_by_org_manager:
13591344
description: "Allow org managers to explicitly create UAA shadow users through /v3/users and implicitly through /v3/roles. `uaa.clients.cloud_controller_shadow_user_creation.secret` must be set."
13601345

@@ -1368,8 +1353,3 @@ properties:
13681353
cc.feature_flag_overrides:
13691354
description: "Feature flag key-value pairs to override default feature flags"
13701355
default: {}
1371-
1372-
# deprecated configuration
1373-
1374-
cc.experimental.use_puma_webserver:
1375-
description: "Deprecated as Puma is now the default. This config flag will be removed in the future. Currently it takes precedence over `cc.temporary_enable_deprecated_thin_webserver` i.e. when set to false Thin will be used."

jobs/cloud_controller_ng/templates/bpm.yml.erb

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,12 @@ def mount_nfs_volume!(config)
1212
end
1313
end
1414

15-
def thin_webserver_enabled?
16-
if_p('cc.experimental.use_puma_webserver') do |prop|
17-
return !prop
18-
end
19-
20-
p('cc.temporary_enable_deprecated_thin_webserver')
21-
end
22-
2315
def mount_valkey_volume!(config)
24-
unless thin_webserver_enabled? && !p("cc.experimental.use_redis")
25-
config['additional_volumes'] = [] unless config.key?('additional_volumes')
26-
config['additional_volumes'] << {
27-
"path" => "/var/vcap/data/valkey",
28-
"mount_only" => true,
29-
}
30-
end
16+
config['additional_volumes'] = [] unless config.key?('additional_volumes')
17+
config['additional_volumes'] << {
18+
"path" => "/var/vcap/data/valkey",
19+
"mount_only" => true,
20+
}
3121
end
3222

3323
def enable_fog_debugging!(config)

jobs/cloud_controller_ng/templates/ccng_monit_http_healthcheck.sh.erb

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,7 @@ function log_failure {
2828
echo $(date --rfc-3339=ns) 'Will restart CC over on repeated failures'
2929
trap log_failure EXIT
3030

31-
<%
32-
def thin_webserver_enabled?
33-
if_p('cc.experimental.use_puma_webserver') do |prop|
34-
return !prop
35-
end
36-
37-
p('cc.temporary_enable_deprecated_thin_webserver')
38-
end
39-
-%>
40-
41-
<% if !thin_webserver_enabled? && p('cc.use_status_check') %>
31+
<% if p('cc.use_status_check') %>
4232
# Use /internal/v4/status readiness endpoint
4333
HOST=<%= p('cc.nginx.ip').empty? ? discover_external_ip : p('cc.nginx.ip') %>
4434
PORT=9021

jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,6 @@
4242
end
4343
raise "Error for database_encryption: #{active_keys.length} were marked active. Only one key may be active"
4444
end
45-
46-
def thin_webserver_enabled?
47-
if_p('cc.experimental.use_puma_webserver') do |prop|
48-
return !prop
49-
end
50-
51-
p('cc.temporary_enable_deprecated_thin_webserver')
52-
end
5345
%>
5446
---
5547
#Actually NGX host and port
@@ -61,7 +53,7 @@ local_route: <%= p('cc.nginx.ip') %>
6153
external_port: <%= p("cc.external_port") %>
6254
tls_port: <%= p("cc.tls_port") %>
6355
internal_service_hostname: <%= p("cc.internal_service_hostname") %>
64-
webserver: <%= thin_webserver_enabled? ? 'thin' : 'puma' %>
56+
webserver: puma
6557
puma:
6658
automatic_worker_count: <%= p("cc.puma.automatic_worker_count") %>
6759
workers: <%= p("cc.puma.workers") %>
@@ -526,10 +518,8 @@ rate_limiter_v2_api:
526518

527519
temporary_enable_v2: <%= p("cc.temporary_enable_v2") %>
528520

529-
<% unless thin_webserver_enabled? && !p("cc.experimental.use_redis") %>
530521
redis:
531522
socket: "/var/vcap/data/valkey/valkey.sock"
532-
<% end %>
533523

534524
<%
535525
cc_uploader_url = nil
@@ -575,7 +565,7 @@ max_service_credential_bindings_per_app_service_instance: <%= p("cc.max_service_
575565
max_labels_per_resource: <%= p("cc.max_labels_per_resource") %>
576566
max_annotations_per_resource: <%= p("cc.max_annotations_per_resource") %>
577567

578-
threadpool_size: <%= p("cc.experimental.thin_server.thread_pool_size") %>
568+
threadpool_size: 20
579569

580570
default_app_lifecycle: <%= p("cc.default_app_lifecycle") %>
581571
custom_metric_tag_prefix_list: <%= p("cc.custom_metric_tag_prefix_list") %>

jobs/cloud_controller_ng/templates/nginx.conf.erb

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,9 @@ limit_req_zone $http_authorization zone=<%= zone['name'] %>:10m rate=<%= zone['l
5454
server unix:/var/vcap/data/cloud_controller_ng/cloud_controller.sock;
5555
}
5656

57-
<%
58-
def thin_webserver_enabled?
59-
if_p('cc.experimental.use_puma_webserver') do |prop|
60-
return !prop
61-
end
62-
63-
p('cc.temporary_enable_deprecated_thin_webserver')
64-
end
65-
-%>
66-
67-
<% unless thin_webserver_enabled? -%>
6857
upstream cloud_controller_metrics {
6958
server unix:/var/vcap/data/cloud_controller_ng/cloud_controller_metrics.sock;
7059
}
71-
<% end -%>
7260

7361
# This block ensures the endpoints it serves are handled by mutual TLS.
7462
# Refer to the 'return 403' statement in the http block to see how we secure those endpoints.
@@ -153,11 +141,8 @@ end
153141
proxy_connect_timeout 10;
154142

155143
location /internal/v4/metrics {
156-
<%- if thin_webserver_enabled? -%>
157-
proxy_pass http://cloud_controller;
158-
<%- else -%>
159-
proxy_pass http://cloud_controller_metrics;
160-
<%- end -%>
144+
145+
proxy_pass http://cloud_controller_metrics;
161146
}
162147
}
163148
<% end -%>
@@ -200,7 +185,7 @@ end
200185
}
201186
<% end %>
202187

203-
<% if !thin_webserver_enabled? && p('cc.use_status_check') %>
188+
<% if p('cc.use_status_check') %>
204189
# This block handles the /internal/v4/status endpoint for health checks, which is called by ccng_monit_http_healthcheck.
205190
server {
206191
listen 9021;

jobs/valkey/monit

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,5 @@
1-
<%
2-
def thin_webserver_enabled?(link)
3-
link.if_p('cc.experimental.use_puma_webserver') do |prop|
4-
return !prop
5-
end
6-
7-
link.p('cc.temporary_enable_deprecated_thin_webserver')
8-
end
9-
10-
cloud_controller_internal = link("cloud_controller_internal")
11-
unless thin_webserver_enabled?(cloud_controller_internal) && !cloud_controller_internal.p("cc.experimental.use_redis")
12-
%>
13-
141
check process valkey
152
with pidfile /var/vcap/sys/run/bpm/valkey/valkey.pid
163
start program "/var/vcap/jobs/bpm/bin/bpm start valkey"
174
stop program "/var/vcap/jobs/bpm/bin/bpm stop valkey"
185
group vcap
19-
20-
<%
21-
end
22-
%>

spec/cloud_controller_ng/bpm_spec.rb

Lines changed: 5 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -113,86 +113,12 @@ def valkey_volume_mounted?(process)
113113
end
114114

115115
describe 'valkey config' do
116-
context 'when the puma webserver is used by default' do
117-
it 'mounts the valkey volume into the ccng job container' do
118-
template_hash = YAML.safe_load(template.render({}, consumes: {}))
119-
120-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
121-
expect(results.length).to eq(1)
122-
expect(valkey_volume_mounted?(results[0])).to be_truthy
123-
end
124-
end
125-
126-
context 'when the puma webserver is enabled by deprecated config' do
127-
it 'mounts the valkey volume into the ccng job container' do
128-
template_hash = YAML.safe_load(template.render({ 'cc' => { 'experimental' => { 'use_puma_webserver' => true } } }, consumes: {}))
129-
130-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
131-
expect(results.length).to eq(1)
132-
expect(valkey_volume_mounted?(results[0])).to be_truthy
133-
end
134-
135-
context 'when `cc.temporary_enable_deprecated_thin_webserver` is also enabled' do
136-
it 'still uses Puma and mounts the valkey volume into the ccng job container' do
137-
template_hash = YAML.safe_load(template.render(
138-
{ 'cc' => { 'experimental' => { 'use_puma_webserver' => true },
139-
'temporary_enable_deprecated_thin_webserver' => true } }, consumes: {}
140-
))
141-
142-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
143-
expect(results.length).to eq(1)
144-
expect(valkey_volume_mounted?(results[0])).to be_truthy
145-
end
146-
end
147-
end
116+
it 'mounts the valkey volume into the ccng job container' do
117+
template_hash = YAML.safe_load(template.render({}, consumes: {}))
148118

149-
context 'when thin webserver is explicitly enabled' do
150-
context "when 'cc.experimental.use_redis' is set to 'true'" do
151-
it 'mounts the valkey volume into the ccng job container' do
152-
template_hash = YAML.safe_load(
153-
template.render({ 'cc' => { 'temporary_enable_deprecated_thin_webserver' => true,
154-
'experimental' => { 'use_redis' => true } } }, consumes: {})
155-
)
156-
157-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
158-
expect(results.length).to eq(1)
159-
expect(valkey_volume_mounted?(results[0])).to be_truthy
160-
end
161-
end
162-
163-
context "when 'cc.experimental.use_redis' is not set'" do
164-
it 'mounts the valkey volume into the ccng job container' do
165-
template_hash = YAML.safe_load(template.render({ 'cc' => { 'temporary_enable_deprecated_thin_webserver' => true } }, consumes: {}))
166-
167-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
168-
expect(results.length).to eq(1)
169-
expect(valkey_volume_mounted?(results[0])).to be_falsey
170-
end
171-
end
172-
end
173-
174-
context 'when thin webserver is implicitly enabled through `cc.experimental.use_puma_webserver` => false' do
175-
context "when 'cc.experimental.use_redis' is set to 'true'" do
176-
it 'mounts the valkey volume into the ccng job container' do
177-
template_hash = YAML.safe_load(
178-
template.render({ 'cc' => { 'experimental' => { 'use_puma_webserver' => false, 'use_redis' => true } } }, consumes: {})
179-
)
180-
181-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
182-
expect(results.length).to eq(1)
183-
expect(valkey_volume_mounted?(results[0])).to be_truthy
184-
end
185-
end
186-
187-
context "when 'cc.experimental.use_redis' is not set'" do
188-
it 'mounts the valkey volume into the ccng job container' do
189-
template_hash = YAML.safe_load(template.render({ 'cc' => { 'temporary_enable_deprecated_thin_webserver' => true } }, consumes: {}))
190-
191-
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
192-
expect(results.length).to eq(1)
193-
expect(valkey_volume_mounted?(results[0])).to be_falsey
194-
end
195-
end
119+
results = template_hash['processes'].select { |p| p['name'].include?('cloud_controller_ng') }
120+
expect(results.length).to eq(1)
121+
expect(valkey_volume_mounted?(results[0])).to be_truthy
196122
end
197123
end
198124
end

0 commit comments

Comments
 (0)