bunny 2.14.2 → 2.14.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|