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 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
@@ -11,3 +11,6 @@
11
11
  /.ruby-gemset
12
12
  /.ruby-version
13
13
  /Gemfile.lock
14
+
15
+ # Packaged gems
16
+ /pkg
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  Microphite CHANGELOG
2
2
  ====================
3
3
 
4
+ v0.5.1
5
+ ------
6
+ - Simplify Client::Base and work-around jruby weirdness in test suite
7
+
4
8
  v0.5.0
5
9
  ------
6
10
  - Initial public release.
@@ -21,8 +21,8 @@ module Microphite
21
21
 
22
22
  # Shared state
23
23
  @status = :running
24
- @gather_stack = []
25
- @write_stack = []
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(@write_stack, metrics.clone)
48
+ push(@write_queue, metrics.clone)
49
49
  end
50
50
 
51
51
  def gather(metrics)
52
- push(@gather_stack, metrics.clone)
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 @write_stack.empty? and @gather_stack.empty?
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(writes).each { |m| write_metric m }
142
- unwind(gathers).each { |m| accumulate m }
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(stack, value)
149
- timestamp = now
150
- pushed = false
141
+ def push(queue, value)
151
142
  @lock.synchronize do
152
- if stack.length <= @limit and @status == :running
153
- stack << timestamp << value
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(stack)
153
+ def unwind(queue)
162
154
  metrics = []
163
- until stack.empty?
164
- value = stack.pop
165
- timestamp = stack.pop
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
@@ -1,3 +1,3 @@
1
1
  module Microphite
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
@@ -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([socket])[0]
50
+ readable = select([client_socket])[0]
61
51
  if readable.empty?
62
- return
52
+ break
63
53
  else
64
54
  begin
65
55
  buffer = ''
66
- socket.readpartial(4096, buffer)
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.0
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: '0'
23
- type: :development
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: '0'
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: '0'
39
- type: :development
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: '0'
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: '0'
90
- segments:
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: '0'
99
- segments:
100
- - 0
101
- hash: 800344433168954481
94
+ version: !binary |-
95
+ MA==
102
96
  requirements: []
103
97
  rubyforge_project:
104
- rubygems_version: 1.8.23
98
+ rubygems_version: 2.0.6
105
99
  signing_key:
106
- specification_version: 3
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