canvas_statsd 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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