bunny 2.7.2 → 2.7.3
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 +4 -4
- data/.github/ISSUE_TEMPLATE.md +18 -0
- data/ChangeLog.md +33 -1
- data/README.md +18 -10
- data/lib/bunny/jruby/socket.rb +21 -5
- data/lib/bunny/reader_loop.rb +6 -5
- data/lib/bunny/session.rb +13 -1
- data/lib/bunny/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 919483301947c21f40cb3c6bdedfcc8808e365ee
|
4
|
+
data.tar.gz: 2b6c80010c62acd49f88abb90aad2ccd5b5baf01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecc98a8d2591d2093b186508324331337fdb20ac061774983613278174a2c694dbf74aa2788daa7bca5356407b8891494b42523dcb2288e185e4a4465cb83378
|
7
|
+
data.tar.gz: 40f9b12db88c3b533a207870c2dd72b3a06da36aa71cb92dc26ced282e08df06478f163ccc2e97a6e5322c8a75c19455d286eee3a9285d7f8e4dc53e654834f2
|
@@ -0,0 +1,18 @@
|
|
1
|
+
## Does This Really Belong to GitHub issues?
|
2
|
+
|
3
|
+
If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
|
4
|
+
or missing feature, please [file an
|
5
|
+
issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
|
6
|
+
|
7
|
+
Please use [Bunny's mailing list](http://groups.google.com/group/ruby-amqp) for questions,
|
8
|
+
investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
|
9
|
+
maintainers and contributors can work on.
|
10
|
+
|
11
|
+
When filing an issue, please specify
|
12
|
+
|
13
|
+
* Which Bunny and RabbitMQ versions are used
|
14
|
+
* Recent RabbitMQ log file contents
|
15
|
+
* Full exception stack traces
|
16
|
+
* Steps to reproduce or a failing test case
|
17
|
+
|
18
|
+
This would greatly help the maintainers help you.
|
data/ChangeLog.md
CHANGED
@@ -1,4 +1,36 @@
|
|
1
|
-
## Changes between Bunny 2.7.
|
1
|
+
## Changes between Bunny 2.7.3 and 2.7.4 (unreleased)
|
2
|
+
|
3
|
+
No changes yet.
|
4
|
+
|
5
|
+
|
6
|
+
## Changes between Bunny 2.7.2 and 2.7.3 (Dec 19th, 2017)
|
7
|
+
|
8
|
+
### JRuby 9K Compatibility
|
9
|
+
|
10
|
+
A JRuby 9K compatibility issue was corrected by Marian Posăceanu.
|
11
|
+
Note that JRuby users are recommended to use [March Hare](http://rubymarchhare.info/), a JRuby-oriented client, instead
|
12
|
+
of Bunny.
|
13
|
+
|
14
|
+
GitHub issue: [#529](https://github.com/ruby-amqp/bunny/pull/529)
|
15
|
+
|
16
|
+
### Connection Exceptions are Logged as Warning with Automatic Recovery
|
17
|
+
|
18
|
+
When automatic recovery is enabled, connection errors are now logged as warnings
|
19
|
+
and not errors.
|
20
|
+
|
21
|
+
Contributed by Merten Falk.
|
22
|
+
|
23
|
+
GitHub issue: [#531](https://github.com/ruby-amqp/bunny/pull/531)
|
24
|
+
|
25
|
+
|
26
|
+
## Changes between Bunny 2.7.1 and 2.7.2 (Nov 4th, 2017)
|
27
|
+
|
28
|
+
### Heartbeat Value Supports `:server` and `"server"`
|
29
|
+
|
30
|
+
Heartbeat value of `:server` now can be specified as a string.
|
31
|
+
|
32
|
+
Contributed by Tyrone.
|
33
|
+
|
2
34
|
|
3
35
|
### Reading a Frame without Payload Could Result in a `Bunny::NoFinalOctetError`
|
4
36
|
|
data/README.md
CHANGED
@@ -88,7 +88,7 @@ gem install bunny
|
|
88
88
|
To use Bunny in a project managed with Bundler:
|
89
89
|
|
90
90
|
``` ruby
|
91
|
-
gem "bunny", ">= 2.7.
|
91
|
+
gem "bunny", ">= 2.7.2"
|
92
92
|
```
|
93
93
|
|
94
94
|
|
@@ -154,8 +154,12 @@ Other documentation guides are available at [rubybunny.info](http://rubybunny.in
|
|
154
154
|
|
155
155
|
### Mailing List
|
156
156
|
|
157
|
-
[Bunny has a mailing list](http://groups.google.com/group/ruby-amqp).
|
158
|
-
|
157
|
+
[Bunny has a mailing list](http://groups.google.com/group/ruby-amqp). Please use it for all questions,
|
158
|
+
investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
|
159
|
+
maintainers and contributors can work on.
|
160
|
+
|
161
|
+
We encourage you to also join the [RabbitMQ mailing list](https://groups.google.com/forum/#!forum/rabbitmq-users)
|
162
|
+
mailing list. Feel free to ask any questions that you may have.
|
159
163
|
|
160
164
|
|
161
165
|
## Continuous Integration
|
@@ -172,13 +176,17 @@ More detailed announcements can be found in the [RabbitMQ Ruby clients blog](htt
|
|
172
176
|
|
173
177
|
### Reporting Issues
|
174
178
|
|
175
|
-
If you find a bug, poor default,
|
176
|
-
|
177
|
-
issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
179
|
+
If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
|
180
|
+
or missing feature, please [file an
|
181
|
+
issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
|
182
|
+
|
183
|
+
Please use [Bunny's mailing list](http://groups.google.com/group/ruby-amqp) for questions,
|
184
|
+
investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
|
185
|
+
maintainers and contributors can work on.
|
186
|
+
|
187
|
+
When filing an issue, please specify which Bunny and RabbitMQ versions you
|
188
|
+
are using, provide recent RabbitMQ log file contents, full exception stack traces,
|
189
|
+
and steps to reproduce (or failing test cases).
|
182
190
|
|
183
191
|
|
184
192
|
## Other Ruby RabbitMQ Clients
|
data/lib/bunny/jruby/socket.rb
CHANGED
@@ -8,6 +8,20 @@ module Bunny
|
|
8
8
|
module Socket
|
9
9
|
include Bunny::Socket
|
10
10
|
|
11
|
+
def self.open(host, port, options = {})
|
12
|
+
socket = ::Socket.tcp(host, port, nil, nil,
|
13
|
+
connect_timeout: options[:connect_timeout])
|
14
|
+
if ::Socket.constants.include?('TCP_NODELAY') || ::Socket.constants.include?(:TCP_NODELAY)
|
15
|
+
socket.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, true)
|
16
|
+
end
|
17
|
+
socket.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_KEEPALIVE, true) if options.fetch(:keepalive, true)
|
18
|
+
socket.extend self
|
19
|
+
socket.options = { :host => host, :port => port }.merge(options)
|
20
|
+
socket
|
21
|
+
rescue Errno::ETIMEDOUT
|
22
|
+
raise ClientTimeout
|
23
|
+
end
|
24
|
+
|
11
25
|
# Reads given number of bytes with an optional timeout
|
12
26
|
#
|
13
27
|
# @param [Integer] count How many bytes to read
|
@@ -16,17 +30,17 @@ module Bunny
|
|
16
30
|
# @return [String] Data read from the socket
|
17
31
|
# @api public
|
18
32
|
def read_fully(count, timeout = nil)
|
19
|
-
return nil if @__bunny_socket_eof_flag__
|
20
|
-
|
21
33
|
value = ''
|
34
|
+
|
22
35
|
begin
|
23
36
|
loop do
|
24
|
-
value <<
|
37
|
+
value << read_nonblock(count - value.bytesize)
|
25
38
|
break if value.bytesize >= count
|
26
39
|
end
|
27
40
|
rescue EOFError
|
28
|
-
#
|
29
|
-
|
41
|
+
# JRuby specific fix via https://github.com/jruby/jruby/issues/1694#issuecomment-54873532
|
42
|
+
IO.select([self], nil, nil, timeout)
|
43
|
+
retry
|
30
44
|
rescue *READ_RETRY_EXCEPTION_CLASSES
|
31
45
|
if IO.select([self], nil, nil, timeout)
|
32
46
|
retry
|
@@ -34,8 +48,10 @@ module Bunny
|
|
34
48
|
raise Timeout::Error, "IO timeout when reading #{count} bytes"
|
35
49
|
end
|
36
50
|
end
|
51
|
+
|
37
52
|
value
|
38
53
|
end # read_fully
|
54
|
+
|
39
55
|
end
|
40
56
|
end
|
41
57
|
end
|
data/lib/bunny/reader_loop.rb
CHANGED
@@ -36,11 +36,12 @@ module Bunny
|
|
36
36
|
rescue AMQ::Protocol::EmptyResponseError, IOError, SystemCallError, Timeout::Error => e
|
37
37
|
break if terminate? || @session.closing? || @session.closed?
|
38
38
|
|
39
|
-
log_exception(e)
|
40
39
|
@network_is_down = true
|
41
40
|
if @session.automatically_recover?
|
41
|
+
log_exception(e, level: :warn)
|
42
42
|
@session.handle_network_failure(e)
|
43
43
|
else
|
44
|
+
log_exception(e)
|
44
45
|
@session_thread.raise(Bunny::NetworkFailure.new("detected a network failure: #{e.message}", e))
|
45
46
|
end
|
46
47
|
rescue ShutdownSignal => _
|
@@ -122,12 +123,12 @@ module Bunny
|
|
122
123
|
|
123
124
|
protected
|
124
125
|
|
125
|
-
def log_exception(e)
|
126
|
+
def log_exception(e, level: :error)
|
126
127
|
if !(io_error?(e) && (@session.closing? || @session.closed?))
|
127
|
-
@logger.
|
128
|
-
@logger.
|
128
|
+
@logger.send level, "Exception in the reader loop: #{e.class.name}: #{e.message}"
|
129
|
+
@logger.send level, "Backtrace: "
|
129
130
|
e.backtrace.each do |line|
|
130
|
-
@logger.
|
131
|
+
@logger.send level, "\t#{line}"
|
131
132
|
end
|
132
133
|
end
|
133
134
|
end
|
data/lib/bunny/session.rb
CHANGED
@@ -191,7 +191,7 @@ module Bunny
|
|
191
191
|
|
192
192
|
client_props = opts[:properties] || opts[:client_properties] || {}
|
193
193
|
@client_properties = DEFAULT_CLIENT_PROPERTIES.merge(client_props)
|
194
|
-
@mechanism = opts.fetch(:auth_mechanism, "PLAIN")
|
194
|
+
@mechanism = normalize_auth_mechanism(opts.fetch(:auth_mechanism, "PLAIN"))
|
195
195
|
@credentials_encoder = credentials_encoder_for(@mechanism)
|
196
196
|
@locale = @opts.fetch(:locale, DEFAULT_LOCALE)
|
197
197
|
|
@@ -1383,6 +1383,7 @@ module Bunny
|
|
1383
1383
|
end
|
1384
1384
|
|
1385
1385
|
def normalize_client_channel_max(n)
|
1386
|
+
return CHANNEL_MAX_LIMIT if n.nil?
|
1386
1387
|
return CHANNEL_MAX_LIMIT if n > CHANNEL_MAX_LIMIT
|
1387
1388
|
|
1388
1389
|
case n
|
@@ -1393,6 +1394,17 @@ module Bunny
|
|
1393
1394
|
end
|
1394
1395
|
end
|
1395
1396
|
|
1397
|
+
def normalize_auth_mechanism(value)
|
1398
|
+
case value
|
1399
|
+
when [] then
|
1400
|
+
"PLAIN"
|
1401
|
+
when nil then
|
1402
|
+
"PLAIN"
|
1403
|
+
else
|
1404
|
+
value
|
1405
|
+
end
|
1406
|
+
end
|
1407
|
+
|
1396
1408
|
def ignoring_io_errors(&block)
|
1397
1409
|
begin
|
1398
1410
|
block.call
|
data/lib/bunny/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bunny
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Duncan
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2017-
|
15
|
+
date: 2017-12-19 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: amq-protocol
|
@@ -37,6 +37,7 @@ extensions: []
|
|
37
37
|
extra_rdoc_files:
|
38
38
|
- README.md
|
39
39
|
files:
|
40
|
+
- ".github/ISSUE_TEMPLATE.md"
|
40
41
|
- ".gitignore"
|
41
42
|
- ".rspec"
|
42
43
|
- ".travis.yml"
|