bunny 2.14.2 → 2.14.4
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/.travis.yml +5 -4
- data/ChangeLog.md +33 -2
- data/README.md +1 -1
- data/docker/Dockerfile +8 -4
- data/docker/docker-entrypoint.sh +2 -2
- data/lib/bunny/cruby/socket.rb +3 -0
- data/lib/bunny/reader_loop.rb +10 -2
- data/lib/bunny/session.rb +2 -0
- data/lib/bunny/version.rb +1 -1
- data/repl +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cf0bcb6bc92f6092788f0eeffed76f438be49f1341857a6e5a94254544cf44e3
|
|
4
|
+
data.tar.gz: 317240a20f888087e959999b7cbe10d57fe423316032bc6fa6f2a6733e8dd50c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d0c159c08871fdf203a322543489d9c563d45c855f407f9e069adc6f3f0d97f7b0fb8d7ac90a5280dfdc2cea81dbef53e0c2b217be2064373432d0ca0d889626
|
|
7
|
+
data.tar.gz: 4d8a071b4d8494ad3976d842a705cf3d8323d8c14c61a0c147c309cc07ebc77bf6420243a597c68a3cde9b4b7a6cb5f17e25bab7972cf607f1d1d55b8bd88cdb
|
data/.travis.yml
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
dist: bionic
|
|
1
2
|
language: ruby
|
|
2
3
|
bundler_args: --without development
|
|
3
4
|
cache: bundler
|
|
@@ -10,10 +11,10 @@ before_script:
|
|
|
10
11
|
script: "bundle exec rake integration_without_recovery"
|
|
11
12
|
rvm:
|
|
12
13
|
- ruby-head
|
|
13
|
-
- "2.6.
|
|
14
|
-
- "2.5.
|
|
15
|
-
- "2.4.
|
|
16
|
-
- "2.3.
|
|
14
|
+
- "2.6.3"
|
|
15
|
+
- "2.5.5"
|
|
16
|
+
- "2.4.5"
|
|
17
|
+
- "2.3.8"
|
|
17
18
|
notifications:
|
|
18
19
|
email: michael@rabbitmq.com
|
|
19
20
|
services:
|
data/ChangeLog.md
CHANGED
|
@@ -1,6 +1,37 @@
|
|
|
1
|
-
## Changes between Bunny 2.14.
|
|
1
|
+
## Changes between Bunny 2.14.4 and 2.14.5 (in development)
|
|
2
2
|
|
|
3
|
-
No changes
|
|
3
|
+
No changes.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Changes between Bunny 2.14.3 and 2.14.4 (Feb 11th, 2020)
|
|
7
|
+
|
|
8
|
+
### More Defensive Thread Join Operations
|
|
9
|
+
|
|
10
|
+
Bunny is now more defensive around thread join operations which it performs
|
|
11
|
+
when stopping its consumer work pool.
|
|
12
|
+
|
|
13
|
+
`Thread#join` can cause an unhandled exception to be re-raised at
|
|
14
|
+
a very surprising moment. This behavior can also be affected by 3rd party
|
|
15
|
+
libraries, e.g. those that do connection pooling. While Bunny cannot
|
|
16
|
+
fully avoid every possible surprising failure, it now avoids at least
|
|
17
|
+
one such problematic interaction triggered by a custom [interrupt handler](https://ruby-doc.org/core-2.5.1/Thread.html#method-c-handle_interrupt)
|
|
18
|
+
in a 3rd party library.
|
|
19
|
+
|
|
20
|
+
GitHub issue: [#589](https://github.com/ruby-amqp/bunny/issues/589)
|
|
21
|
+
|
|
22
|
+
Contributed by @fuegas.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Changes between Bunny 2.14.2 and 2.14.3 (Sep 29th, 2019)
|
|
26
|
+
|
|
27
|
+
### OpenSSL Exceptions Trigger Recovery
|
|
28
|
+
|
|
29
|
+
OpenSSL exceptions on a fully established connection will now kick off
|
|
30
|
+
connection recovery.
|
|
31
|
+
|
|
32
|
+
GitHub issue: [#583](https://github.com/ruby-amqp/bunny/issues/583)
|
|
33
|
+
|
|
34
|
+
Contributed by Carl Hörberg.
|
|
4
35
|
|
|
5
36
|
|
|
6
37
|
## Changes between Bunny 2.14.1 and 2.14.2 (Apr 24th, 2019)
|
data/README.md
CHANGED
|
@@ -48,7 +48,7 @@ Specific examples:
|
|
|
48
48
|
|
|
49
49
|
Modern Bunny versions support
|
|
50
50
|
|
|
51
|
-
* CRuby 2.
|
|
51
|
+
* CRuby 2.3 through 2.6 (inclusive)
|
|
52
52
|
|
|
53
53
|
Bunny works sufficiently well on JRuby but there are known
|
|
54
54
|
JRuby bugs in versions prior to JRuby 9000 that cause high CPU burn. JRuby users should
|
data/docker/Dockerfile
CHANGED
|
@@ -7,11 +7,15 @@ RUN wget -O - "https://github.com/rabbitmq/signing-keys/releases/download/2.0/ra
|
|
|
7
7
|
COPY apt/sources.list.d/bintray.rabbitmq.list /etc/apt/sources.list.d/bintray.rabbitmq.list
|
|
8
8
|
COPY apt/preferences.d/erlang /etc/apt/preferences.d/erlang
|
|
9
9
|
|
|
10
|
-
RUN apt-get update -y
|
|
10
|
+
RUN apt-get update -y && apt-get upgrade -y
|
|
11
|
+
|
|
12
|
+
RUN apt-get install -y erlang-base \
|
|
13
|
+
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
|
|
14
|
+
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
|
|
15
|
+
erlang-runtime-tools erlang-snmp erlang-ssl \
|
|
16
|
+
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
|
|
11
17
|
|
|
12
|
-
RUN apt-get
|
|
13
|
-
apt-get install -y erlang-asn1 erlang-crypto erlang-public-key erlang-ssl && \
|
|
14
|
-
apt-get install -y rabbitmq-server
|
|
18
|
+
RUN apt-get install -y rabbitmq-server
|
|
15
19
|
|
|
16
20
|
COPY docker-entrypoint.sh /
|
|
17
21
|
|
data/docker/docker-entrypoint.sh
CHANGED
|
@@ -6,9 +6,9 @@ delay=5
|
|
|
6
6
|
echo 'Starting a RabbitMQ node'
|
|
7
7
|
$server -detached
|
|
8
8
|
|
|
9
|
-
echo "Waiting
|
|
9
|
+
echo "Waiting for RabbitMQ to finish startup..."
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
$ctl await_startup --timeout 15
|
|
12
12
|
|
|
13
13
|
$ctl add_user bunny_gem bunny_password
|
|
14
14
|
$ctl add_user bunny_reader reader_password
|
data/lib/bunny/cruby/socket.rb
CHANGED
|
@@ -32,6 +32,9 @@ module Bunny
|
|
|
32
32
|
socket.setsockopt(::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, true)
|
|
33
33
|
end
|
|
34
34
|
socket.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_KEEPALIVE, true) if options.fetch(:keepalive, true)
|
|
35
|
+
socket.instance_eval do
|
|
36
|
+
@__bunny_socket_eof_flag__ = false
|
|
37
|
+
end
|
|
35
38
|
socket.extend self
|
|
36
39
|
socket.options = { :host => host, :port => port }.merge(options)
|
|
37
40
|
socket
|
data/lib/bunny/reader_loop.rb
CHANGED
|
@@ -37,7 +37,8 @@ module Bunny
|
|
|
37
37
|
begin
|
|
38
38
|
break if @mutex.synchronize { @stopping || @stopped || @network_is_down }
|
|
39
39
|
run_once
|
|
40
|
-
rescue AMQ::Protocol::EmptyResponseError, IOError, SystemCallError, Timeout::Error
|
|
40
|
+
rescue AMQ::Protocol::EmptyResponseError, IOError, SystemCallError, Timeout::Error,
|
|
41
|
+
OpenSSL::OpenSSLError => e
|
|
41
42
|
break if terminate? || @session.closing? || @session.closed?
|
|
42
43
|
|
|
43
44
|
@network_is_down = true
|
|
@@ -115,7 +116,14 @@ module Bunny
|
|
|
115
116
|
end
|
|
116
117
|
|
|
117
118
|
def join
|
|
118
|
-
|
|
119
|
+
# Thread#join can/would trigger a re-raise of an unhandled exception in this thread.
|
|
120
|
+
# In addition, Thread.handle_interrupt can be used by other libraries or application code
|
|
121
|
+
# that would make this join operation fail with an obscure exception.
|
|
122
|
+
# So we try to save everyone some really unpleasant debugging time by introducing
|
|
123
|
+
# this condition which typically would not evaluate to true anyway.
|
|
124
|
+
#
|
|
125
|
+
# See ruby-amqp/bunny#589 and ruby-amqp/bunny#590 for background.
|
|
126
|
+
@thread.join if @thread && @thread != Thread.current
|
|
119
127
|
end
|
|
120
128
|
|
|
121
129
|
def kill
|
data/lib/bunny/session.rb
CHANGED
|
@@ -171,6 +171,7 @@ module Bunny
|
|
|
171
171
|
else
|
|
172
172
|
opts[:automatically_recover] || opts[:automatic_recovery]
|
|
173
173
|
end
|
|
174
|
+
@recovering_from_network_failure = false
|
|
174
175
|
@max_recovery_attempts = opts[:recovery_attempts]
|
|
175
176
|
@recovery_attempts = @max_recovery_attempts
|
|
176
177
|
# When this is set, connection attempts won't be reset after
|
|
@@ -184,6 +185,7 @@ module Bunny
|
|
|
184
185
|
@continuation_timeout = opts.fetch(:continuation_timeout, DEFAULT_CONTINUATION_TIMEOUT)
|
|
185
186
|
|
|
186
187
|
@status = :not_connected
|
|
188
|
+
@manually_closed = false
|
|
187
189
|
@blocked = false
|
|
188
190
|
|
|
189
191
|
# these are negotiated with the broker during the connection tuning phase
|
data/lib/bunny/version.rb
CHANGED
data/repl
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.14.
|
|
4
|
+
version: 2.14.4
|
|
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:
|
|
15
|
+
date: 2020-02-11 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
18
|
name: amq-protocol
|