protobuf 3.0.1 → 3.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: 53cdf77e2265a06c69501d39f521807dfc6612cf
4
- data.tar.gz: 7312c52a61ba96d35cae01be21250d417c4b72fb
3
+ metadata.gz: 9f6c3acaf286282c387182a22e85ed017b07689e
4
+ data.tar.gz: dfbd232feef940d2fe05f7c2985437c853c2b4c0
5
5
  SHA512:
6
- metadata.gz: ec453a6e9a3702229c4f5f2fcdb4ee49d54c67713ca4b3b30d08201e4e93957446d12d9b6cd4fa59ac14e6e8a0e5ca52d21264f7a2df8b235fb51b5ba6a714ea
7
- data.tar.gz: f1c900b5a393eaa9141ccd18c139d310f175ce5b28f152fe318b042e90c4f8c2a2b6abc12544afa4e0a297d956ed5cd36bc1ccb861e0d8465eae741a5bb9646a
6
+ metadata.gz: 4016076f1cb790f97ac9587cc94785fd896e6c9487a3f5a6ab38548648eb9388a90ad76d00dc94b1bee02691b384d98e8dbd16561b559d66311ded536a5afa3f
7
+ data.tar.gz: be1ec665261e4673fef18d6880719cfa7e629cc9ba628fd49527f720b0774cd11012cae1620b2f40ad3601aeedf7efc601b97331fe34016fb749b691922a558a
data/CHANGES.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Stable (3.x)
2
2
 
3
+ 3.0.2
4
+ ---------
5
+
6
+ - Queue requests at the broker when concurrent requests hit the ZMQ server, distribute to
7
+ worker threads on each turn of the read poll loop. [#189, @abrandoned, @liveh2o]
8
+
3
9
  3.0.1
4
10
  ---------
5
11
 
@@ -1,13 +1,18 @@
1
+ require 'thread'
2
+
1
3
  module Protobuf
2
4
  module Rpc
3
5
  module Zmq
4
6
  class Broker
5
7
  include ::Protobuf::Rpc::Zmq::Util
6
8
 
9
+ attr_reader :local_queue
10
+
7
11
  def initialize(server)
8
12
  @server = server
9
13
 
10
14
  init_zmq_context
15
+ init_local_queue
11
16
  init_backend_socket
12
17
  init_frontend_socket
13
18
  init_poller
@@ -20,6 +25,10 @@ module Protobuf
20
25
  @idle_workers = []
21
26
 
22
27
  loop do
28
+ unless local_queue.empty?
29
+ process_local_queue
30
+ end
31
+
23
32
  rc = @poller.poll(500)
24
33
 
25
34
  # The server was shutdown and no requests are pending
@@ -57,6 +66,10 @@ module Protobuf
57
66
  zmq_error_check(@frontend_socket.bind(@server.frontend_uri))
58
67
  end
59
68
 
69
+ def init_local_queue
70
+ @local_queue = ::Queue.new
71
+ end
72
+
60
73
  def init_poller
61
74
  @poller = ZMQ::Poller.new
62
75
  @poller.register_readable(@frontend_socket)
@@ -89,16 +102,28 @@ module Protobuf
89
102
  address, _, message, *frames = read_from_frontend
90
103
 
91
104
  if message == ::Protobuf::Rpc::Zmq::CHECK_AVAILABLE_MESSAGE
92
- if @idle_workers.any?
105
+ if @idle_workers.any? || local_queue.empty?
93
106
  write_to_frontend([address, "", ::Protobuf::Rpc::Zmq::WORKERS_AVAILABLE])
94
107
  else
95
108
  write_to_frontend([address, "", ::Protobuf::Rpc::Zmq::NO_WORKERS_AVAILABLE])
96
109
  end
97
110
  else
98
- write_to_backend([@idle_workers.shift, ""] + [address, "", message ] + frames)
111
+ if @idle_workers.any?
112
+ write_to_backend([@idle_workers.shift, ""] + [address, "", message ] + frames)
113
+ else
114
+ local_queue.push([address, "", message ] + frames)
115
+ end
99
116
  end
100
117
  end
101
118
 
119
+ def process_local_queue
120
+ return if local_queue.empty?
121
+ return if @idle_workers.empty?
122
+
123
+ write_to_backend([@idle_workers.shift, ""] + local_queue.pop)
124
+ process_local_queue
125
+ end
126
+
102
127
  def read_from_backend
103
128
  frames = []
104
129
  zmq_error_check(@backend_socket.recv_strings(frames))
@@ -1,3 +1,3 @@
1
1
  module Protobuf
2
- VERSION = '3.0.1'
2
+ VERSION = '3.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - BJ Neilsen
@@ -11,174 +11,174 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-02-26 00:00:00.000000000 Z
14
+ date: 2014-03-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '3.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.2'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: middleware
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: '0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - '>='
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: multi_json
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - '>='
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: thor
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - '>='
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - '>='
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: ffi-rzmq
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - '>='
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: pry-nav
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - '>='
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: '0'
93
93
  type: :development
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - '>='
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: rake
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - '>='
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0'
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - '>='
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0'
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rspec
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - '>='
118
+ - - ">="
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: simplecov
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - '>='
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: yard
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - '>='
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '0'
149
149
  type: :development
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - '>='
153
+ - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
156
  - !ruby/object:Gem::Dependency
157
157
  name: timecop
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - '>='
160
+ - - ">="
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0'
163
163
  type: :development
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - '>='
167
+ - - ">="
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  - !ruby/object:Gem::Dependency
171
171
  name: perftools.rb
172
172
  requirement: !ruby/object:Gem::Requirement
173
173
  requirements:
174
- - - '>='
174
+ - - ">="
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0'
177
177
  type: :development
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
- - - '>='
181
+ - - ">="
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0'
184
184
  description: Google Protocol Buffers serialization and RPC implementation for Ruby.
@@ -193,9 +193,9 @@ executables:
193
193
  extensions: []
194
194
  extra_rdoc_files: []
195
195
  files:
196
- - .gitignore
197
- - .travis.yml
198
- - .yardopts
196
+ - ".gitignore"
197
+ - ".travis.yml"
198
+ - ".yardopts"
199
199
  - CHANGES.md
200
200
  - CONTRIBUTING.md
201
201
  - Gemfile
@@ -378,17 +378,17 @@ require_paths:
378
378
  - lib
379
379
  required_ruby_version: !ruby/object:Gem::Requirement
380
380
  requirements:
381
- - - '>='
381
+ - - ">="
382
382
  - !ruby/object:Gem::Version
383
383
  version: '0'
384
384
  required_rubygems_version: !ruby/object:Gem::Requirement
385
385
  requirements:
386
- - - '>='
386
+ - - ">="
387
387
  - !ruby/object:Gem::Version
388
388
  version: '0'
389
389
  requirements: []
390
390
  rubyforge_project:
391
- rubygems_version: 2.1.2
391
+ rubygems_version: 2.2.2
392
392
  signing_key:
393
393
  specification_version: 4
394
394
  summary: Google Protocol Buffers serialization and RPC implementation for Ruby.