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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a6ffb6e1661c9921afd766382444c1d194f5b816d35021f9f49ab4382adced6
4
- data.tar.gz: 4f7ef1377379a4fa087110316c149c0f012239247537467bfd788463d8c0a904
3
+ metadata.gz: cf0bcb6bc92f6092788f0eeffed76f438be49f1341857a6e5a94254544cf44e3
4
+ data.tar.gz: 317240a20f888087e959999b7cbe10d57fe423316032bc6fa6f2a6733e8dd50c
5
5
  SHA512:
6
- metadata.gz: 73ada01a49fb86a5ffe95548b79df15169cd63ba47481c2303f5ea314f04e14e97c4f9e7e42b095969bf5259633d15803a4eb116743c054007d4694af62b6fa2
7
- data.tar.gz: b6c533137ea821b45c2dd7e8cc54a87c09384a6e15bad8ae505c3c9ea2ef3c3ed8a53153832bc1a0773adc566888a832e689837abfe8f5f4d1a90e7cf2966da6
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.0"
14
- - "2.5.1"
15
- - "2.4.2"
16
- - "2.3.5"
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.2 and 2.14.3 (in development)
1
+ ## Changes between Bunny 2.14.4 and 2.14.5 (in development)
2
2
 
3
- No changes yet.
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.2 through 2.5 (inclusive)
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 upgrade -y && \
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
 
@@ -6,9 +6,9 @@ delay=5
6
6
  echo 'Starting a RabbitMQ node'
7
7
  $server -detached
8
8
 
9
- echo "Waiting $delay seconds for RabbitMQ to start."
9
+ echo "Waiting for RabbitMQ to finish startup..."
10
10
 
11
- sleep $delay
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
@@ -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
@@ -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 => e
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
- @thread.join if @thread
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Bunny
4
4
  # @return [String] Version of the library
5
- VERSION = "2.14.2"
5
+ VERSION = "2.14.4"
6
6
  end
data/repl CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/bin/sh
2
2
 
3
- bundle exec ripl -Ilib -r'bunny' -r'ripl/multi_line' -r'ripl/irb'
3
+ bundle exec ruby -w `which ripl` -Ilib -r'bunny' -r'ripl/multi_line' -r'ripl/irb'
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.2
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: 2019-04-24 00:00:00.000000000 Z
15
+ date: 2020-02-11 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: amq-protocol