canvas_statsd 2.0.1 → 2.0.2

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
  SHA1:
3
- metadata.gz: b2c54cdb899ff21986ae486d9267df47635acf60
4
- data.tar.gz: 4d5c68e5e2d059c4aeb68e4776166d7871bb2c5e
3
+ metadata.gz: b8d208dec2b9d9e15929242060b633ddc26604e4
4
+ data.tar.gz: 64dd9bbc70f94f50e825f956fb5d8487aa7d70ac
5
5
  SHA512:
6
- metadata.gz: 2a70d652c80696b6bf79814fd0e64ad4fdd442792a902f088b7847297159cde5a03de20b50ce071ab5a6feb24ff5bc430e4ef36f1dc36fa6c6eab99b5b42b4dd
7
- data.tar.gz: 03f015d44447c96b8b107db4a756c05cf83a53df5258e9e6350d09020dff12cc2fb24010b58d80ee1263a4bafd75ca341d2dd0565d801a6176057abe870cb586
6
+ metadata.gz: 9cc72278306b28823f791c6caa32788f62f9462146269ce6b9bbcf448b00bb5215bc4178955638fa217b031a8c2a1e600be96535f0020c0d2d7f909434c07cb2
7
+ data.tar.gz: c43c0b295a7181af427f02710b269060afe83860df65df94e3e4bbffacd97d4b3983dc022ab4b07cc07dfaf63e5b3c8007ca31cb98d4e12384145ce5cbfe827e
@@ -77,7 +77,20 @@ module CanvasStatsd
77
77
  result
78
78
  end
79
79
 
80
+ def self.batch
81
+ return yield unless (old_instance = instance)
82
+ old_instance.batch do |batch|
83
+ Thread.current[:canvas_statsd] = batch
84
+ yield
85
+ end
86
+ ensure
87
+ Thread.current[:canvas_statsd] = old_instance
88
+ end
89
+
80
90
  def self.instance
91
+ thread_statsd = Thread.current[:canvas_statsd]
92
+ return thread_statsd if thread_statsd
93
+
81
94
  if !defined?(@statsd)
82
95
  statsd_settings = CanvasStatsd.settings
83
96
 
@@ -85,6 +98,7 @@ module CanvasStatsd
85
98
  @statsd = ::Statsd.new(statsd_settings[:host])
86
99
  @statsd.port = statsd_settings[:port] if statsd_settings[:port]
87
100
  @statsd.namespace = statsd_settings[:namespace] if statsd_settings[:namespace]
101
+ @statsd.batch_size = statsd_settings[:batch_size] if statsd_settings[:batch_size]
88
102
  @append_hostname = !statsd_settings.key?(:append_hostname) || !!statsd_settings[:append_hostname]
89
103
  else
90
104
  @statsd = nil
@@ -99,6 +113,7 @@ module CanvasStatsd
99
113
 
100
114
  def self.reset_instance
101
115
  remove_instance_variable(:@statsd) if defined?(@statsd)
116
+ Thread.current[:canvas_statsd] = nil
102
117
  end
103
118
  end
104
119
  end
@@ -73,6 +73,27 @@ describe CanvasStatsd::Statsd do
73
73
  expect(instance.namespace).to eq "test"
74
74
  end
75
75
 
76
+ describe ".batch" do
77
+ it "is properly reentrant" do
78
+ CanvasStatsd.settings = { :host => "localhost", :namespace => "test", :port => 1234 }
79
+ CanvasStatsd::Statsd.reset_instance
80
+
81
+ statsd = CanvasStatsd::Statsd.instance
82
+ CanvasStatsd::Statsd.batch do
83
+ batch1 = CanvasStatsd::Statsd.instance
84
+ CanvasStatsd::Statsd.batch do
85
+ batch2 = CanvasStatsd::Statsd.instance
86
+ expect(statsd).to be_a ::Statsd
87
+ expect(batch1).to be_a ::Statsd::Batch
88
+ expect(batch2).to be_a ::Statsd::Batch
89
+ expect(batch1).not_to eq batch2
90
+ end
91
+ expect(CanvasStatsd::Statsd.instance).to eq batch1
92
+ end
93
+ expect(CanvasStatsd::Statsd.instance).to eq statsd
94
+ end
95
+ end
96
+
76
97
  describe ".escape" do
77
98
  it "replaces any dots in str with a _ when no replacment given" do
78
99
  result = CanvasStatsd::Statsd.escape("lots.of.dots")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Cloward
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-27 00:00:00.000000000 Z
12
+ date: 2017-03-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: statsd-ruby