Skip to content

Commit 551429d

Browse files
authored
Remove "Thin" webserver (#4670)
* Remove EventMachine from Puma * preparation for Thin removal * replace EventMachine with Concurrent::TimerTask * remove "thread_info_event_machine" metrics * Remove Thin webserver * Update metrics_spec.rb test * explicitly start and stop MetricsWebserver with Prometheus middleware * Fix Rack response for Puma webserver * Rack expects an enumerable. An empty string doesn't work (it worked for Thin, though). * Fix CORS unit test * Shutdown metrics_webserver after each test * Simplify specs (remove redundancies) * Remove "threadpool_size" config parameter * was only used for Thin/EventMachine * Simplify spec: Extract duplicate double(:server) setup
1 parent 14038c1 commit 551429d

File tree

25 files changed

+70
-432
lines changed

25 files changed

+70
-432
lines changed

Gemfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ gem 'clockwork', require: false
66
gem 'cloudfront-signer'
77
gem 'concurrent-ruby'
88
gem 'digest-xxhash'
9-
gem 'eventmachine', '~> 1.2.7'
109
gem 'fluent-logger'
1110
gem 'googleapis-common-protos', '>= 1.8.0'
1211
gem 'hashdiff'
@@ -37,7 +36,6 @@ gem 'sinatra-contrib'
3736
gem 'statsd-ruby', '~> 1.5.0'
3837
gem 'steno'
3938
gem 'talentbox-delayed_job_sequel', '~> 4.3.0'
40-
gem 'thin'
4139
gem 'uri', '~> 1.1'
4240
gem 'vmstat', '~> 2.3'
4341

Gemfile.lock

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ GEM
129129
bigdecimal
130130
rexml
131131
crass (1.0.6)
132-
daemons (1.4.1)
133132
date (3.5.0)
134133
debug (1.11.0)
135134
irb (~> 1.10)
@@ -144,7 +143,6 @@ GEM
144143
drb (2.2.3)
145144
erb (5.1.3)
146145
erubi (1.13.1)
147-
eventmachine (1.2.7)
148146
excon (1.3.0)
149147
logger
150148
faraday (0.17.6)
@@ -567,11 +565,6 @@ GEM
567565
delayed_job (~> 4.1.0)
568566
sequel (>= 3.38, < 6.0)
569567
tzinfo
570-
thin (2.0.1)
571-
daemons (~> 1.0, >= 1.0.9)
572-
eventmachine (~> 1.0, >= 1.0.4)
573-
logger
574-
rack (>= 1, < 4)
575568
thor (1.4.0)
576569
tilt (2.6.1)
577570
timecop (0.9.10)
@@ -624,7 +617,6 @@ DEPENDENCIES
624617
concurrent-ruby
625618
debug (~> 1.11)
626619
digest-xxhash
627-
eventmachine (~> 1.2.7)
628620
fluent-logger
629621
fog-aliyun
630622
fog-aws
@@ -690,7 +682,6 @@ DEPENDENCIES
690682
statsd-ruby (~> 1.5.0)
691683
steno
692684
talentbox-delayed_job_sequel (~> 4.3.0)
693-
thin
694685
timecop
695686
uri (~> 1.1)
696687
vmstat (~> 2.3)

app/controllers/internal/metrics_controller.rb

Lines changed: 0 additions & 18 deletions
This file was deleted.

config/bosh-lite.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,5 +268,3 @@ diego:
268268
pid_limit: 1024
269269

270270
shared_isolation_segment_name: shared
271-
272-
threadpool_size: 20

config/cloud_controller.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,7 @@ locket:
394394
cert_file: 'spec/fixtures/certs/bbs_client.crt'
395395
key_file: 'spec/fixtures/certs/bbs_client.key'
396396

397-
threadpool_size: 20
398-
webserver: thin
397+
webserver: puma
399398
default_app_lifecycle: buildpack
400399
custom_metric_tag_prefix_list: ["metric.tag.cloudfoundry.org"]
401400

lib/cloud_controller.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
require 'sinatra'
22
require 'sequel'
3-
require 'thin'
43
require 'oj'
54
require 'delayed_job'
65

lib/cloud_controller/config_schemas/api_schema.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,10 +315,9 @@ class ApiSchema < VCAP::Config
315315
},
316316

317317
request_timeout_in_seconds: Integer,
318-
threadpool_size: Integer,
319318
skip_cert_verify: bool,
320319

321-
webserver: String, # thin or puma
320+
webserver: String, # currently only puma
322321
optional(:puma) => {
323322
automatic_worker_count: bool,
324323
workers: Integer,

lib/cloud_controller/metrics_webserver.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,19 @@ def initialize
1111
end
1212

1313
def start(config)
14-
server = Puma::Server.new(@app)
14+
@server = Puma::Server.new(@app)
1515

1616
if config.get(:nginx, :metrics_socket).nil? || config.get(:nginx, :metrics_socket).empty?
17-
server.add_tcp_listener('127.0.0.1', 9395)
17+
@server.add_tcp_listener('127.0.0.1', 9395)
1818
else
19-
server.add_unix_listener(config.get(:nginx, :metrics_socket))
19+
@server.add_unix_listener(config.get(:nginx, :metrics_socket))
2020
end
2121

22-
server.run
22+
@server.run
23+
end
24+
25+
def stop
26+
@server.stop(true)
2327
end
2428

2529
private

lib/cloud_controller/runner.rb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
require 'cloud_controller/logs/request_logs'
1212
require 'cloud_controller/telemetry_logger'
1313
require 'cloud_controller/secrets_fetcher'
14-
require 'cloud_controller/runners/thin_runner'
1514
require 'cloud_controller/runners/puma_runner'
1615
require 'cloud_controller/metrics_webserver'
1716
require 'prometheus/client/data_stores/direct_file_store'
@@ -33,7 +32,7 @@ def initialize(argv)
3332

3433
# DB connection metrics have a label to determine whether the process accessing the connection is the
3534
# main or a worker process. We need to set this env variable before `setup_db` otherwise the main process
36-
# will show up twice in the metrics as main and worker. Thin metrics will be labeled with main as well.
35+
# will show up twice in the metrics as main and worker.
3736
ENV['PROCESS_TYPE'] = 'main'
3837

3938
setup_cloud_controller
@@ -45,11 +44,7 @@ def initialize(argv)
4544
builder = RackAppBuilder.new
4645
app = builder.build(@config, request_metrics, request_logs)
4746

48-
@server = if @config.get(:webserver) == 'puma'
49-
VCAP::CloudController::PumaRunner.new(@config, app, logger, periodic_updater, request_logs)
50-
else
51-
VCAP::CloudController::ThinRunner.new(@config, app, logger, periodic_updater, request_logs)
52-
end
47+
@server = VCAP::CloudController::PumaRunner.new(@config, app, logger, periodic_updater, request_logs)
5348
end
5449

5550
def logger

lib/cloud_controller/runners/thin_runner.rb

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)