microphite 0.5.0 → 0.5.1
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 +15 -0
- data/.gitignore +3 -0
- data/CHANGELOG.md +4 -0
- data/lib/microphite/client/base.rb +17 -25
- data/lib/microphite/version.rb +1 -1
- data/spec/support/single_serve_helper.rb +22 -17
- metadata +22 -28
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODAzYWUzYjZkMDA2NjhmNjkxOGYwYTRmZTEwMGQwMDkyZTU3ZGNmZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NDJkY2NlNDViYzk0ODZlM2MyZDQwODYwZmYwN2FhOGEwYTM2OTYwOQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
N2U2Zjk4ZjlmNzMyNWM1ZDM0YjZlYWQxZDU1ODI5MTc0N2FjZjdhOGY1OGFi
|
10
|
+
MGE0Yzg1NTI0ZmUxZDU4ZDAwOTgwZDZlNDEzYTkwNTJlMzUyZjQ2MGU0MTE0
|
11
|
+
ZTJlYWM2ZGUwNmFlMmExMjQwODFhNTJhYzc5NTUxNjA1MzY4ODg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OGZlZWY2OGUxNzJmMGZjY2I3MzU4ZTM1NmUyNDUwNTgzYzc4ZTgxMmFmOWVk
|
14
|
+
MTQyMDZkNjkwYmQ2ZTM2M2YzODRiYzAyZDVjMTFjZDc0OWYyNjQ0Y2RjNjAx
|
15
|
+
OGMwNjExODNiMjIwMDM3YTVkZDViZGQyZjVmNmJmZjk2YjQ2Mjc=
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -21,8 +21,8 @@ module Microphite
|
|
21
21
|
|
22
22
|
# Shared state
|
23
23
|
@status = :running
|
24
|
-
@
|
25
|
-
@
|
24
|
+
@gather_queue = Queue.new
|
25
|
+
@write_queue = Queue.new
|
26
26
|
|
27
27
|
# Worker state
|
28
28
|
@accumulating = {}
|
@@ -45,11 +45,11 @@ module Microphite
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def write(metrics)
|
48
|
-
push(@
|
48
|
+
push(@write_queue, metrics.clone)
|
49
49
|
end
|
50
50
|
|
51
51
|
def gather(metrics)
|
52
|
-
push(@
|
52
|
+
push(@gather_queue, metrics.clone)
|
53
53
|
end
|
54
54
|
|
55
55
|
def prefix(prefix, &block)
|
@@ -106,11 +106,8 @@ module Microphite
|
|
106
106
|
def worker_loop
|
107
107
|
loop do
|
108
108
|
wrap_errors do
|
109
|
-
writes = nil
|
110
|
-
gathers = nil
|
111
|
-
|
112
109
|
@lock.synchronize do
|
113
|
-
if @
|
110
|
+
if @write_queue.empty? and @gather_queue.empty?
|
114
111
|
case @status
|
115
112
|
when :running
|
116
113
|
wait_time = @next_flush - now
|
@@ -132,37 +129,32 @@ module Microphite
|
|
132
129
|
Thread.exit
|
133
130
|
end
|
134
131
|
end
|
135
|
-
|
136
|
-
# Swap existing stacks with new ones
|
137
|
-
writes, @write_stack = @write_stack, []
|
138
|
-
gathers, @gather_stack = @gather_stack, []
|
139
132
|
end
|
140
133
|
|
141
|
-
unwind(
|
142
|
-
unwind(
|
134
|
+
unwind(@write_queue).each { |m| write_metric m }
|
135
|
+
unwind(@gather_queue).each { |m| accumulate m }
|
143
136
|
flush_accumulating if should_flush?
|
144
137
|
end
|
145
138
|
end
|
146
139
|
end
|
147
140
|
|
148
|
-
def push(
|
149
|
-
timestamp = now
|
150
|
-
pushed = false
|
141
|
+
def push(queue, value)
|
151
142
|
@lock.synchronize do
|
152
|
-
if
|
153
|
-
|
154
|
-
pushed = true
|
143
|
+
if queue.length <= @limit and @status == :running
|
144
|
+
queue.push [now, value]
|
155
145
|
@worker_event.signal
|
146
|
+
true
|
147
|
+
else
|
148
|
+
false
|
156
149
|
end
|
157
150
|
end
|
158
|
-
pushed
|
159
151
|
end
|
160
152
|
|
161
|
-
def unwind(
|
153
|
+
def unwind(queue)
|
162
154
|
metrics = []
|
163
|
-
until
|
164
|
-
|
165
|
-
timestamp =
|
155
|
+
until queue.empty?
|
156
|
+
tuple = queue.pop
|
157
|
+
timestamp, value = tuple[0], tuple[1]
|
166
158
|
wrap_errors do
|
167
159
|
case value
|
168
160
|
when Hash
|
data/lib/microphite/version.rb
CHANGED
@@ -46,35 +46,40 @@ module Helpers
|
|
46
46
|
|
47
47
|
def tcp_loop
|
48
48
|
client_socket = @socket.accept
|
49
|
-
read_fully client_socket
|
50
|
-
@bytes
|
51
|
-
end
|
52
|
-
|
53
|
-
def udp_loop
|
54
|
-
read_fully @socket
|
55
|
-
@bytes
|
56
|
-
end
|
57
|
-
|
58
|
-
def read_fully(socket)
|
59
49
|
loop do
|
60
|
-
readable = select([
|
50
|
+
readable = select([client_socket])[0]
|
61
51
|
if readable.empty?
|
62
|
-
|
52
|
+
break
|
63
53
|
else
|
64
54
|
begin
|
65
55
|
buffer = ''
|
66
|
-
|
56
|
+
client_socket.readpartial(4096, buffer)
|
67
57
|
@bytes << buffer
|
68
|
-
if @bytes.end_with? CLOSE_MAGIC
|
69
|
-
@bytes.chomp! CLOSE_MAGIC
|
70
|
-
return
|
71
|
-
end
|
72
58
|
rescue EOFError
|
73
59
|
@bytes << buffer
|
74
60
|
return
|
75
61
|
end
|
76
62
|
end
|
77
63
|
end
|
64
|
+
@bytes
|
78
65
|
end
|
66
|
+
|
67
|
+
def udp_loop
|
68
|
+
client_socket = @socket
|
69
|
+
loop do
|
70
|
+
readable = select([client_socket])[0]
|
71
|
+
if readable.empty?
|
72
|
+
break
|
73
|
+
else
|
74
|
+
@bytes << client_socket.recvfrom_nonblock(4096)[0]
|
75
|
+
if @bytes.end_with? CLOSE_MAGIC
|
76
|
+
@bytes.chomp! CLOSE_MAGIC
|
77
|
+
break
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
@bytes
|
82
|
+
end
|
83
|
+
|
79
84
|
end
|
80
85
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microphite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bob
|
@@ -13,37 +12,37 @@ cert_chain: []
|
|
13
12
|
date: 2013-11-20 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name: rake
|
17
15
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
16
|
requirements:
|
20
17
|
- - ! '>='
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
-
|
24
|
-
prerelease: false
|
19
|
+
version: !binary |-
|
20
|
+
MA==
|
25
21
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
22
|
requirements:
|
28
23
|
- - ! '>='
|
29
24
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
25
|
+
version: !binary |-
|
26
|
+
MA==
|
27
|
+
name: rake
|
28
|
+
type: :development
|
29
|
+
prerelease: false
|
31
30
|
- !ruby/object:Gem::Dependency
|
32
|
-
name: rspec
|
33
31
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
32
|
requirements:
|
36
33
|
- - ! '>='
|
37
34
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
-
|
40
|
-
prerelease: false
|
35
|
+
version: !binary |-
|
36
|
+
MA==
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
41
|
+
version: !binary |-
|
42
|
+
MA==
|
43
|
+
name: rspec
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
47
46
|
description: A blazing fast, thread-safe graphite client
|
48
47
|
email:
|
49
48
|
- bob@bz-technology.com
|
@@ -77,33 +76,28 @@ files:
|
|
77
76
|
- tasks/test.rake
|
78
77
|
homepage: https://github.com/bz-technology/microphite
|
79
78
|
licenses: []
|
79
|
+
metadata: {}
|
80
80
|
post_install_message:
|
81
81
|
rdoc_options: []
|
82
82
|
require_paths:
|
83
83
|
- lib
|
84
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
85
|
requirements:
|
87
86
|
- - ! '>='
|
88
87
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
|
91
|
-
- 0
|
92
|
-
hash: 800344433168954481
|
88
|
+
version: !binary |-
|
89
|
+
MA==
|
93
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
91
|
requirements:
|
96
92
|
- - ! '>='
|
97
93
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
99
|
-
|
100
|
-
- 0
|
101
|
-
hash: 800344433168954481
|
94
|
+
version: !binary |-
|
95
|
+
MA==
|
102
96
|
requirements: []
|
103
97
|
rubyforge_project:
|
104
|
-
rubygems_version:
|
98
|
+
rubygems_version: 2.0.6
|
105
99
|
signing_key:
|
106
|
-
specification_version:
|
100
|
+
specification_version: 4
|
107
101
|
summary: A blazing fast, thread-safe graphite client
|
108
102
|
test_files:
|
109
103
|
- spec/client/noop_spec.rb
|