trashed 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
- metadata.gz: 8a76c1137b987b5c2e00ce832d90a32ed952d72b
4
- data.tar.gz: 0530e17d53650ef1da7787f8f658b2eb93ecbaf0
3
+ metadata.gz: fc92cf23f413c7dbc13b7e974f0ff667050296dd
4
+ data.tar.gz: 83a9dacf210062f9aec4d1632095989ec20be08b
5
5
  SHA512:
6
- metadata.gz: 1e39ad89bdd197f0fffaf9367778d32c48fe2bfa55e70fc11c648837979eadccc94014d5bc0a237ed97b68bc7901460bad8d166caf915a84880638d47b28e1a3
7
- data.tar.gz: b1d891fe71584f900ba80adcd3d0a4a73472b1b3a46173341a10c678fa546eb21c314ed4581c8574000ffb621cfff5c096181f5594a12d9ac9436b4799eb5ed1
6
+ metadata.gz: a13685415df07c31c6b3a95afc25ac2b22c18325b8b799c9b3eb4fca7a4bf805bc0c5bf4acb5f787f4a401214b3c79e05f5d5464deb33936cc5488fbe5934d2f
7
+ data.tar.gz: ad71d73f6ded5cd28c032b54b45ccec80eccbd2cf129c50582740b0d187331fa8af13db2384e26312b4ba8721f37ee11a098c6fa886280e2b03d7e48e3d71ea3
data/lib/trashed/rack.rb CHANGED
@@ -7,14 +7,7 @@ module Trashed
7
7
  def initialize(app, reporter, options = {})
8
8
  @reporter = reporter
9
9
  @meters = Array(options.fetch(:meters, [ResourceUsage]))
10
- @logger, @statsd, @sample_rate = options.values_at(:logger, :statsd_instance, :sample_rate)
11
- @sample_rate ||= 1.0
12
-
13
- @request_namespaces = options[:statsd_request_namespaces]
14
- @sampler_namespaces = options[:statsd_sampler_namespaces]
15
-
16
- # Wrap the app up in the meters.
17
- @app = build_instrumented_app(app, @meters)
10
+ @app = build_sampled_instrumented_app(app, @meters)
18
11
  end
19
12
 
20
13
  def call(env)
@@ -26,6 +19,20 @@ module Trashed
26
19
  end
27
20
 
28
21
  private
22
+ def build_sampled_instrumented_app(app, meters)
23
+ build_sampled_app app, build_instrumented_app(app, meters)
24
+ end
25
+
26
+ def build_sampled_app(app, instrumented)
27
+ lambda do |env|
28
+ if @reporter.sample? env
29
+ instrumented.call env
30
+ else
31
+ app.call env
32
+ end
33
+ end
34
+ end
35
+
29
36
  def build_instrumented_app(app, meters)
30
37
  meters.inject app do |wrapped, meter|
31
38
  lambda do |env|
@@ -15,17 +15,24 @@ module Trashed
15
15
  @gauge_dimensions = ->(env) { DEFAULT_DIMENSIONS }
16
16
  end
17
17
 
18
+ # Override in subclasses. Be sure to `super && ...` if you want to rely
19
+ # on the sample_rate.
20
+ def sample?(env = nil)
21
+ random_sample?
22
+ end
23
+
24
+ def random_sample?
25
+ @sample_rate == 1 or rand < @sample_rate
26
+ end
27
+
18
28
  def report(env)
19
29
  report_logger env if @logger
20
30
  report_statsd env if @statsd
21
31
  end
22
32
 
23
33
  def report_logger(env)
24
- elapsed = env[Trashed::Rack::TIMINGS].assoc(:'Time.wall')
25
- gc_runs = env[Trashed::Rack::TIMINGS].assoc(:'GC.count')
26
- if elapsed && gc_runs
27
- @logger.info "Rack handled in %dms (GC runs: %d)" % [elapsed[1], gc_runs[1]]
28
- end
34
+ timings = env[Trashed::Rack::TIMINGS]
35
+ @logger.info "Rack handled in %dms (GC runs: %d)" % timings.values_at(:'Time.wall', :'GC.count')
29
36
  end
30
37
 
31
38
  def report_statsd(env)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trashed
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Kemper