protobuf-nats 0.9.0.pre3 → 0.10.3.pre0

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
- SHA1:
3
- metadata.gz: 22955c5ba9df8f9ad52ea33c197fd740cdfe8434
4
- data.tar.gz: ff0dc5ef47d11178b7f8960030f025a389f2024c
2
+ SHA256:
3
+ metadata.gz: 3ff8c1cf794fd44ab13e6de90476890c29c083d242aa80a2f1e1072485c7bfe2
4
+ data.tar.gz: edba1e8c55228916e506e7840f4fae4b2118420b8ea1d2fc4879eac14169134c
5
5
  SHA512:
6
- metadata.gz: 9e75e969b3ce1561a4d402931147e5a8b4e52d09b47e36c3809694d3069b4f47c2d304771b5dd3167c44ab44e283af9000458aec6ddf6f018525f5b24dbeb70e
7
- data.tar.gz: 340adf7236b84ec9f1d9a519a03d64ef0e31dcacbbecdd5bfa856db078608c70bd4571b4a02569095a3243933bccf76ab8025e11519d5dc4f61e795401f750af
6
+ metadata.gz: a2284a77ebd58b47b6812d221554d3becc19f4a724b648fc3d101fdfb8f9ebf73194b4cf92557cbfab458ffaa99e998f8fc37092fe5dc03ce16781ff7c3d0c4d
7
+ data.tar.gz: 1e9894389ae24f8ec6288b0022234277a00f49a6ad2f816137bdc80e4c3423b75e289f98db9560b2d926cfc6d7e4cc7fab10ccdbd0960fff12fa2c3f16c920ef
@@ -1,8 +1,16 @@
1
1
  sudo: false
2
2
  language: ruby
3
+ jdk:
4
+ - openjdk8
3
5
  rvm:
4
6
  - 2.3.0
7
+ - 2.7.0
5
8
  - jruby-9.1.7.0
9
+ - jruby-9.2.13.0
6
10
  before_install:
7
- - gem install bundler -v 1.14.3
11
+ # Install and start gnatsd
12
+ - ./scripts/install_gnatsd.sh
13
+ - $HOME/nats-server/nats-server &
14
+ # Install deps for project
15
+ - gem install bundler
8
16
  - gem update --system
data/README.md CHANGED
@@ -154,6 +154,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
154
154
 
155
155
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
156
156
 
157
+ The java-nats client is temporarily forked to support jruby > 9.2.10.0. The living branch for that is here: https://github.com/film42/java-nats/tree/jruby-compat. This will be removed when we upgrade to the new nats.java client.
158
+
157
159
  ## Contributing
158
160
 
159
161
  Bug reports and pull requests are welcome on GitHub at https://github.com/abrandoned/protobuf-nats.
@@ -78,11 +78,10 @@ module Protobuf
78
78
  end
79
79
 
80
80
  def self.start_client_nats_connection
81
- return true if @start_client_nats_connection && @client_nats_connection
81
+ return true if @client_nats_connection
82
82
 
83
83
  GET_CONNECTED_MUTEX.synchronize do
84
84
  break true if @client_nats_connection
85
- break true if @start_client_nats_connection
86
85
 
87
86
  # Disable publisher pending buffer on reconnect
88
87
  options = config.connection_options.merge(:disable_reconnect_buffer => true)
@@ -151,12 +151,12 @@ module Protobuf
151
151
  when :ack_timeout
152
152
  ::ActiveSupport::Notifications.instrument "client.request_timeout.protobuf-nats"
153
153
  next if (retries -= 1) > 0
154
- raise ::Protobuf::Nats::Errors::RequestTimeout
154
+ raise ::Protobuf::Nats::Errors::RequestTimeout, formatted_service_and_method_name
155
155
  when :nack
156
156
  ::ActiveSupport::Notifications.instrument "client.request_nack.protobuf-nats"
157
157
  interval = nack_backoff_intervals[nack_retry]
158
158
  nack_retry += 1
159
- raise ::Protobuf::Nats::Errors::RequestTimeout if interval.nil?
159
+ raise ::Protobuf::Nats::Errors::RequestTimeout, formatted_service_and_method_name if interval.nil?
160
160
  sleep((interval + nack_backoff_splay)/1000.0)
161
161
  next
162
162
  end
@@ -186,6 +186,12 @@ module Protobuf
186
186
  end
187
187
  end
188
188
 
189
+ def formatted_service_and_method_name
190
+ klass = @options[:service]
191
+ method_name = @options[:method]
192
+ "#{klass}##{method_name}"
193
+ end
194
+
189
195
  # The Java nats client offers better message queueing so we're going to use
190
196
  # that over locking ourselves. This split in code isn't great, but we can
191
197
  # refactor this later.
@@ -231,7 +237,7 @@ module Protobuf
231
237
  else return :ack_timeout
232
238
  end
233
239
 
234
- fail(::Protobuf::Nats::Errors::ResponseTimeout, subject) unless response
240
+ fail(::Protobuf::Nats::Errors::ResponseTimeout, formatted_service_and_method_name) unless response
235
241
 
236
242
  completed_request = true
237
243
  response
@@ -287,7 +293,7 @@ module Protobuf
287
293
  else return :ack_timeout
288
294
  end
289
295
 
290
- fail(::Protobuf::Nats::Errors::ResponseTimeout, subject) unless response
296
+ fail(::Protobuf::Nats::Errors::ResponseTimeout, formatted_service_and_method_name) unless response
291
297
 
292
298
  response
293
299
  ensure
@@ -1,13 +1,13 @@
1
1
  module Protobuf
2
2
  module Nats
3
3
  module Errors
4
- class Base < ::StandardError
4
+ class ClientError < ::StandardError
5
5
  end
6
6
 
7
- class RequestTimeout < Base
7
+ class RequestTimeout < ClientError
8
8
  end
9
9
 
10
- class ResponseTimeout < Base
10
+ class ResponseTimeout < ClientError
11
11
  end
12
12
 
13
13
  class MriIOException < ::StandardError
@@ -5,11 +5,6 @@ require ::File.join(ext_base, "jars/slf4j-simple-1.7.25.jar")
5
5
  require ::File.join(ext_base, "jars/gson-2.6.2.jar")
6
6
  require ::File.join(ext_base, "jars/jnats-1.1-SNAPSHOT.jar")
7
7
 
8
- # Set field accessors so we can access the member variables directly.
9
- class Java::IoNatsClient::SubscriptionImpl
10
- field_accessor :pMsgs, :pBytes, :delivered
11
- end
12
-
13
8
  module Protobuf
14
9
  module Nats
15
10
  class JNats
@@ -190,9 +185,9 @@ module Protobuf
190
185
  # We have to update the subscription stats so we're not considered a slow consumer.
191
186
  begin
192
187
  sub.lock
193
- sub.pMsgs -= 1
194
- sub.pBytes -= message.getData.length if message.getData
195
- sub.delivered += 1 unless sub.isClosed
188
+ sub.incrPMsgs(-1)
189
+ sub.incrPBytes(-message.getData.length) if message.getData
190
+ sub.incrDelivered(1) unless sub.isClosed
196
191
  ensure
197
192
  sub.unlock
198
193
  end
@@ -12,6 +12,8 @@ module Protobuf
12
12
 
13
13
  attr_reader :nats, :thread_pool, :subscriptions
14
14
 
15
+ MILLISECOND = 1000
16
+
15
17
  def initialize(options)
16
18
  @options = options
17
19
  @processing_requests = true
@@ -52,7 +54,7 @@ module Protobuf
52
54
  # Instrument the thread pool time-to-execute duration.
53
55
  processed_at = ::Time.now
54
56
  ::ActiveSupport::Notifications.instrument("server.thread_pool_execution_delay.protobuf-nats",
55
- (processed_at - enqueued_at))
57
+ (processed_at - enqueued_at) * MILLISECOND)
56
58
 
57
59
  # Process request.
58
60
  response_data = handle_request(request_data, 'server' => @server)
@@ -64,7 +66,7 @@ module Protobuf
64
66
  # Instrument the request duration.
65
67
  completed_at = ::Time.now
66
68
  ::ActiveSupport::Notifications.instrument("server.request_duration.protobuf-nats",
67
- (completed_at - enqueued_at))
69
+ (completed_at - enqueued_at) * MILLISECOND)
68
70
  end
69
71
  end
70
72
 
@@ -1,5 +1,5 @@
1
1
  module Protobuf
2
2
  module Nats
3
- VERSION = "0.9.0.pre3"
3
+ VERSION = "0.10.3.pre0"
4
4
  end
5
5
  end
@@ -33,9 +33,9 @@ Gem::Specification.new do |spec|
33
33
  spec.add_runtime_dependency "activesupport", ">= 3.2"
34
34
  spec.add_runtime_dependency "connection_pool"
35
35
  spec.add_runtime_dependency "protobuf", "~> 3.7", ">= 3.7.2"
36
- spec.add_runtime_dependency "nats-pure"
36
+ spec.add_runtime_dependency "nats-pure", "~> 0.3", "< 0.4"
37
37
 
38
- spec.add_development_dependency "bundler", "~> 1.14"
38
+ spec.add_development_dependency "bundler"
39
39
  spec.add_development_dependency "rake", "~> 10.0"
40
40
  spec.add_development_dependency "rspec"
41
41
  spec.add_development_dependency "benchmark-ips"
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ export DEFAULT_NATS_SERVER_VERSION=v2.0.0
6
+
7
+ export NATS_SERVER_VERSION="${NATS_SERVER_VERSION:=$DEFAULT_NATS_SERVER_VERSION}"
8
+
9
+ # check to see if nats-server folder is empty
10
+ if [ ! "$(ls -A $HOME/nats-server)" ]; then
11
+ (
12
+ mkdir -p $HOME/nats-server
13
+ cd $HOME/nats-server
14
+ wget https://github.com/nats-io/nats-server/releases/download/$NATS_SERVER_VERSION/nats-server-$NATS_SERVER_VERSION-linux-amd64.zip -O nats-server.zip
15
+ unzip nats-server.zip
16
+ cp nats-server-$NATS_SERVER_VERSION-linux-amd64/nats-server $HOME/nats-server/nats-server
17
+ )
18
+ else
19
+ echo 'Using cached directory.';
20
+ fi
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf-nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.pre3
4
+ version: 0.10.3.pre0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Dewitt
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-07 00:00:00.000000000 Z
11
+ date: 2020-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: '3.2'
19
+ name: activesupport
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -25,12 +25,12 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: connection_pool
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
32
  version: '0'
33
+ name: connection_pool
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -39,7 +39,6 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: protobuf
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
@@ -48,6 +47,7 @@ dependencies:
48
47
  - - ">="
49
48
  - !ruby/object:Gem::Version
50
49
  version: 3.7.2
50
+ name: protobuf
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,40 +59,46 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: 3.7.2
61
61
  - !ruby/object:Gem::Dependency
62
- name: nats-pure
63
62
  requirement: !ruby/object:Gem::Requirement
64
63
  requirements:
65
- - - ">="
64
+ - - "~>"
66
65
  - !ruby/object:Gem::Version
67
- version: '0'
66
+ version: '0.3'
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.4'
70
+ name: nats-pure
68
71
  type: :runtime
69
72
  prerelease: false
70
73
  version_requirements: !ruby/object:Gem::Requirement
71
74
  requirements:
72
- - - ">="
75
+ - - "~>"
73
76
  - !ruby/object:Gem::Version
74
- version: '0'
77
+ version: '0.3'
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.4'
75
81
  - !ruby/object:Gem::Dependency
76
- name: bundler
77
82
  requirement: !ruby/object:Gem::Requirement
78
83
  requirements:
79
- - - "~>"
84
+ - - ">="
80
85
  - !ruby/object:Gem::Version
81
- version: '1.14'
86
+ version: '0'
87
+ name: bundler
82
88
  type: :development
83
89
  prerelease: false
84
90
  version_requirements: !ruby/object:Gem::Requirement
85
91
  requirements:
86
- - - "~>"
92
+ - - ">="
87
93
  - !ruby/object:Gem::Version
88
- version: '1.14'
94
+ version: '0'
89
95
  - !ruby/object:Gem::Dependency
90
- name: rake
91
96
  requirement: !ruby/object:Gem::Requirement
92
97
  requirements:
93
98
  - - "~>"
94
99
  - !ruby/object:Gem::Version
95
100
  version: '10.0'
101
+ name: rake
96
102
  type: :development
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -101,12 +107,12 @@ dependencies:
101
107
  - !ruby/object:Gem::Version
102
108
  version: '10.0'
103
109
  - !ruby/object:Gem::Dependency
104
- name: rspec
105
110
  requirement: !ruby/object:Gem::Requirement
106
111
  requirements:
107
112
  - - ">="
108
113
  - !ruby/object:Gem::Version
109
114
  version: '0'
115
+ name: rspec
110
116
  type: :development
111
117
  prerelease: false
112
118
  version_requirements: !ruby/object:Gem::Requirement
@@ -115,12 +121,12 @@ dependencies:
115
121
  - !ruby/object:Gem::Version
116
122
  version: '0'
117
123
  - !ruby/object:Gem::Dependency
118
- name: benchmark-ips
119
124
  requirement: !ruby/object:Gem::Requirement
120
125
  requirements:
121
126
  - - ">="
122
127
  - !ruby/object:Gem::Version
123
128
  version: '0'
129
+ name: benchmark-ips
124
130
  type: :development
125
131
  prerelease: false
126
132
  version_requirements: !ruby/object:Gem::Requirement
@@ -129,12 +135,12 @@ dependencies:
129
135
  - !ruby/object:Gem::Version
130
136
  version: '0'
131
137
  - !ruby/object:Gem::Dependency
132
- name: pry
133
138
  requirement: !ruby/object:Gem::Requirement
134
139
  requirements:
135
140
  - - ">="
136
141
  - !ruby/object:Gem::Version
137
142
  version: '0'
143
+ name: pry
138
144
  type: :development
139
145
  prerelease: false
140
146
  version_requirements: !ruby/object:Gem::Requirement
@@ -178,12 +184,13 @@ files:
178
184
  - lib/protobuf/nats/thread_pool.rb
179
185
  - lib/protobuf/nats/version.rb
180
186
  - protobuf-nats.gemspec
181
- homepage:
187
+ - scripts/install_gnatsd.sh
188
+ homepage:
182
189
  licenses:
183
190
  - MIT
184
191
  metadata:
185
192
  allowed_push_host: https://rubygems.org
186
- post_install_message:
193
+ post_install_message:
187
194
  rdoc_options: []
188
195
  require_paths:
189
196
  - lib
@@ -198,9 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
205
  - !ruby/object:Gem::Version
199
206
  version: 1.3.1
200
207
  requirements: []
201
- rubyforge_project:
202
- rubygems_version: 2.6.13
203
- signing_key:
208
+ rubygems_version: 3.0.6
209
+ signing_key:
204
210
  specification_version: 4
205
211
  summary: ruby-protobuf client/server for nats
206
212
  test_files: []