dogstatsd-ruby 3.0.0 → 3.1.0
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 +5 -5
- data/lib/datadog/statsd.rb +40 -20
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a9743c7a429c0b5932a6f592d55a362582ec6de74fbdca658143e9248c45f2aa
|
4
|
+
data.tar.gz: 0cd22bc62deaf61fe5af0a26f607f92e347f2068ae5d12045248c5a3bcccc302
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7f35978f04e268613833a79464b827c71a3a0340840621e4b426fca0242a0a718be518ecc64936ed94e16b80a55e3bc40c11eeb21e365565380d9cbbb3d2ab4
|
7
|
+
data.tar.gz: 9c01c4abeac5f00a8f5eb8936a54c7e09cc903fcafa33115e10a3f9f8fd36e098d7c7d0b0ef5bb2c038eb527ca44011ea304beb8e960f71e3fbc81415db4e5a8
|
data/lib/datadog/statsd.rb
CHANGED
@@ -61,13 +61,12 @@ module Datadog
|
|
61
61
|
# StatsD port. Defaults to 8125.
|
62
62
|
attr_reader :port
|
63
63
|
|
64
|
+
# DogStatsd unix socket path. Not used by default.
|
65
|
+
attr_reader :socket_path
|
66
|
+
|
64
67
|
# Global tags to be added to every statsd call. Defaults to no tags.
|
65
68
|
attr_reader :tags
|
66
69
|
|
67
|
-
# True if we should batch up data before sending it, or false if we
|
68
|
-
# want to send data immediately.
|
69
|
-
attr_reader :should_batch
|
70
|
-
|
71
70
|
# Buffer containing the statsd message before they are sent in batch
|
72
71
|
attr_reader :buffer
|
73
72
|
|
@@ -81,7 +80,7 @@ module Datadog
|
|
81
80
|
|
82
81
|
# Return the current version of the library.
|
83
82
|
def self.VERSION
|
84
|
-
"3.
|
83
|
+
"3.1.0"
|
85
84
|
end
|
86
85
|
|
87
86
|
# @param [String] host your statsd host
|
@@ -90,13 +89,14 @@ module Datadog
|
|
90
89
|
# @option opts [Array<String>] :tags tags to be added to every metric
|
91
90
|
def initialize(host = DEFAULT_HOST, port = DEFAULT_PORT, opts = {}, max_buffer_size=50)
|
92
91
|
self.host, self.port = host, port
|
92
|
+
@socket_path = opts[:socket_path]
|
93
93
|
@prefix = nil
|
94
|
-
@socket = connect_to_socket
|
94
|
+
@socket = connect_to_socket if @socket_path.nil?
|
95
95
|
self.namespace = opts[:namespace]
|
96
96
|
self.tags = opts[:tags]
|
97
97
|
@buffer = Array.new
|
98
98
|
self.max_buffer_size = max_buffer_size
|
99
|
-
@
|
99
|
+
@batch_nesting_depth = 0
|
100
100
|
end
|
101
101
|
|
102
102
|
def namespace=(namespace) #:nodoc:
|
@@ -114,7 +114,7 @@ module Datadog
|
|
114
114
|
|
115
115
|
def tags=(tags) #:nodoc:
|
116
116
|
raise ArgumentError, 'tags must be a Array<String>' unless tags.nil? or tags.is_a? Array
|
117
|
-
@tags = (tags || []).map {|tag| escape_tag_content(tag)}
|
117
|
+
@tags = (tags || []).compact.map! {|tag| escape_tag_content(tag)}
|
118
118
|
end
|
119
119
|
|
120
120
|
# Sends an increment (count = 1) for the given stat to the statsd server.
|
@@ -303,11 +303,11 @@ module Datadog
|
|
303
303
|
# s.increment('page.views')
|
304
304
|
# end
|
305
305
|
def batch()
|
306
|
-
@
|
306
|
+
@batch_nesting_depth += 1
|
307
307
|
yield self
|
308
|
-
flush_buffer
|
309
308
|
ensure
|
310
|
-
@
|
309
|
+
@batch_nesting_depth -= 1
|
310
|
+
flush_buffer if @batch_nesting_depth == 0
|
311
311
|
end
|
312
312
|
|
313
313
|
def format_event(title, text, opts={})
|
@@ -358,10 +358,11 @@ module Datadog
|
|
358
358
|
end
|
359
359
|
|
360
360
|
def escape_tag_content(tag)
|
361
|
-
remove_pipes(tag).gsub COMMA, BLANK
|
361
|
+
remove_pipes(tag.to_s).gsub COMMA, BLANK
|
362
362
|
end
|
363
363
|
|
364
364
|
def escape_tag_content!(tag)
|
365
|
+
tag = tag.to_s
|
365
366
|
tag.gsub!(PIPE, BLANK)
|
366
367
|
tag.gsub!(COMMA, BLANK)
|
367
368
|
tag
|
@@ -411,7 +412,7 @@ module Datadog
|
|
411
412
|
|
412
413
|
|
413
414
|
tag_arr = opts[:tags].to_a
|
414
|
-
tag_arr.map! { |tag| t = tag.dup; escape_tag_content!(t); t }
|
415
|
+
tag_arr.map! { |tag| t = tag.to_s.dup; escape_tag_content!(t); t }
|
415
416
|
ts = tags.to_a + tag_arr
|
416
417
|
unless ts.empty?
|
417
418
|
full_stat << PIPE
|
@@ -424,7 +425,7 @@ module Datadog
|
|
424
425
|
end
|
425
426
|
|
426
427
|
def send_stat(message)
|
427
|
-
if @
|
428
|
+
if @batch_nesting_depth > 0
|
428
429
|
@buffer << message
|
429
430
|
flush_buffer if @buffer.length >= @max_buffer_size
|
430
431
|
else
|
@@ -432,27 +433,46 @@ module Datadog
|
|
432
433
|
end
|
433
434
|
end
|
434
435
|
|
435
|
-
def flush_buffer
|
436
|
+
def flush_buffer
|
437
|
+
return @buffer if @buffer.empty?
|
436
438
|
send_to_socket(@buffer.join(NEW_LINE))
|
437
439
|
@buffer = Array.new
|
438
440
|
end
|
439
441
|
|
440
|
-
def connect_to_socket
|
441
|
-
|
442
|
-
|
442
|
+
def connect_to_socket
|
443
|
+
if !@socket_path.nil?
|
444
|
+
socket = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM)
|
445
|
+
socket.connect(Socket.pack_sockaddr_un(@socket_path))
|
446
|
+
else
|
447
|
+
socket = UDPSocket.new
|
448
|
+
socket.connect(@host, @port)
|
449
|
+
end
|
443
450
|
socket
|
444
451
|
end
|
445
452
|
|
453
|
+
def sock
|
454
|
+
@socket ||= connect_to_socket
|
455
|
+
end
|
456
|
+
|
446
457
|
def send_to_socket(message)
|
447
458
|
self.class.logger.debug { "Statsd: #{message}" } if self.class.logger
|
448
|
-
@
|
459
|
+
if @socket_path.nil?
|
460
|
+
sock.send(message, 0)
|
461
|
+
else
|
462
|
+
sock.sendmsg_nonblock(message)
|
463
|
+
end
|
449
464
|
rescue => boom
|
465
|
+
if @socket_path && (boom.is_a?(Errno::ECONNREFUSED) ||
|
466
|
+
boom.is_a?(Errno::ECONNRESET) ||
|
467
|
+
boom.is_a?(Errno::ENOENT))
|
468
|
+
return @socket = nil
|
469
|
+
end
|
450
470
|
# Try once to reconnect if the socket has been closed
|
451
471
|
retries ||= 1
|
452
472
|
if retries <= 1 && boom.is_a?(IOError) && boom.message =~ /closed stream/i
|
453
473
|
retries += 1
|
454
474
|
begin
|
455
|
-
@socket = connect_to_socket
|
475
|
+
@socket = connect_to_socket
|
456
476
|
retry
|
457
477
|
rescue => e
|
458
478
|
boom = e
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dogstatsd-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rein Henrichs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -97,9 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
version: '0'
|
98
98
|
requirements: []
|
99
99
|
rubyforge_project:
|
100
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.7.1
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: A Ruby DogStatsd client
|
104
104
|
test_files: []
|
105
|
-
has_rdoc:
|