bunny 1.1.0.pre2 → 1.1.0.rc1
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 +6 -4
- data/ChangeLog.md +39 -0
- data/LICENSE +1 -1
- data/README.md +4 -0
- data/bunny.gemspec +1 -1
- data/lib/bunny/channel.rb +22 -2
- data/lib/bunny/consumer_work_pool.rb +4 -4
- data/lib/bunny/session.rb +7 -2
- data/lib/bunny/transport.rb +8 -1
- data/lib/bunny/version.rb +1 -1
- data/spec/higher_level_api/integration/channel_open_spec.rb +9 -0
- data/spec/higher_level_api/integration/publisher_confirms_spec.rb +36 -0
- data/spec/higher_level_api/integration/with_channel_spec.rb +25 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73298a109694af83bb99bf84847d60df16207fcf
|
4
|
+
data.tar.gz: 7b5f3f2aa6f0f790fb9384e1ba08924e6ba60063
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bede6aee3aa9976eeb91f016bc7214b90756d96b105e3a81c3214e0497a0500f3c5738af97a0674e028bacbcf9c7cde779dcd8ab4afefef2ba59ad539044885c
|
7
|
+
data.tar.gz: cbcacfc53117c4a3a68e78ce0d3a6c4c817c81780cf2a3f0b5f0ed613a56ed5784d743521e0e535a447612522433136de3950720c8846bbbf2cb54b72a0e1223
|
data/.travis.yml
CHANGED
@@ -3,11 +3,12 @@ bundler_args: --without development
|
|
3
3
|
before_script: "./bin/ci/before_build.sh"
|
4
4
|
script: "bundle exec rspec -cfs spec"
|
5
5
|
rvm:
|
6
|
+
- "2.1.0-preview2"
|
6
7
|
- "2.0"
|
7
8
|
- "1.9.3"
|
8
|
-
- "jruby
|
9
|
+
- "jruby"
|
9
10
|
- "1.9.2"
|
10
|
-
- "rbx
|
11
|
+
- "rbx"
|
11
12
|
- "1.8.7"
|
12
13
|
notifications:
|
13
14
|
email: michael@rabbitmq.com
|
@@ -19,5 +20,6 @@ branches:
|
|
19
20
|
- 0.9.x-stable
|
20
21
|
matrix:
|
21
22
|
allow_failures:
|
22
|
-
- rvm: rbx
|
23
|
-
- rvm: 1.8.7
|
23
|
+
- rvm: rbx
|
24
|
+
- rvm: "1.8.7"
|
25
|
+
- rvm: jruby
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,42 @@
|
|
1
|
+
## Changes between Bunny 1.1.0.pre2 and 1.1.0.rc1
|
2
|
+
|
3
|
+
### Full Channel State Recovery
|
4
|
+
|
5
|
+
Channel recovery now involves recovery of publisher confirms and
|
6
|
+
transaction modes.
|
7
|
+
|
8
|
+
|
9
|
+
### TLS Without Peer Verification
|
10
|
+
|
11
|
+
Bunny now successfully performs TLS upgrade when peer verification
|
12
|
+
is disabled.
|
13
|
+
|
14
|
+
Contributed by Jordan Curzon.
|
15
|
+
|
16
|
+
### Bunny::Session#with_channel Ensures the Channel is Closed
|
17
|
+
|
18
|
+
`Bunny::Session#with_channel` now makes sure the channel is closed
|
19
|
+
even if provided block raises an exception
|
20
|
+
|
21
|
+
Contributed by Carl Hoerberg.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
### Channel Number = 0 is Rejected
|
26
|
+
|
27
|
+
`Bunny::Session#create_channel` will now reject channel number 0.
|
28
|
+
|
29
|
+
|
30
|
+
### Single Threaded Mode Fixes
|
31
|
+
|
32
|
+
Single threaded mode no longer fails with
|
33
|
+
|
34
|
+
```
|
35
|
+
undefined method `event_loop'
|
36
|
+
```
|
37
|
+
|
38
|
+
|
39
|
+
|
1
40
|
## Changes between Bunny 1.1.0.pre1 and 1.1.0.pre2
|
2
41
|
|
3
42
|
### connection.tune.channel_max No Longer Overflows
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2009 –
|
1
|
+
Copyright (c) 2009 – 2014 Chris Duncan, Jakub Stastny aka botanicus,
|
2
2
|
Michael S. Klishin, Eric Lindvall, Stefan Kaes and contributors.
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
data/README.md
CHANGED
data/bunny.gemspec
CHANGED
data/lib/bunny/channel.rb
CHANGED
@@ -1281,6 +1281,7 @@ module Bunny
|
|
1281
1281
|
@last_tx_select_ok = wait_on_continuations
|
1282
1282
|
end
|
1283
1283
|
raise_if_continuation_resulted_in_a_channel_error!
|
1284
|
+
@tx_mode = true
|
1284
1285
|
|
1285
1286
|
@last_tx_select_ok
|
1286
1287
|
end
|
@@ -1350,6 +1351,7 @@ module Bunny
|
|
1350
1351
|
Bunny::Timeout.timeout(read_write_timeout, ClientTimeout) do
|
1351
1352
|
@last_confirm_select_ok = wait_on_continuations
|
1352
1353
|
end
|
1354
|
+
@confirm_mode = true
|
1353
1355
|
raise_if_continuation_resulted_in_a_channel_error!
|
1354
1356
|
@last_confirm_select_ok
|
1355
1357
|
end
|
@@ -1420,6 +1422,8 @@ module Bunny
|
|
1420
1422
|
release_all_continuations
|
1421
1423
|
|
1422
1424
|
recover_prefetch_setting
|
1425
|
+
recover_confirm_flag
|
1426
|
+
recover_tx_mode
|
1423
1427
|
recover_exchanges
|
1424
1428
|
# this includes recovering bindings
|
1425
1429
|
recover_queues
|
@@ -1435,6 +1439,22 @@ module Bunny
|
|
1435
1439
|
basic_qos(@prefetch_count) if @prefetch_count
|
1436
1440
|
end
|
1437
1441
|
|
1442
|
+
# Recovers publisher confirms mode. Used by the Automatic Network Failure
|
1443
|
+
# Recovery feature.
|
1444
|
+
#
|
1445
|
+
# @api plugin
|
1446
|
+
def recover_confirm_mode
|
1447
|
+
confirm_select if @confirm_mode
|
1448
|
+
end
|
1449
|
+
|
1450
|
+
# Recovers transaction mode. Used by the Automatic Network Failure
|
1451
|
+
# Recovery feature.
|
1452
|
+
#
|
1453
|
+
# @api plugin
|
1454
|
+
def recover_tx_mode
|
1455
|
+
tx_select if @tx_mode
|
1456
|
+
end
|
1457
|
+
|
1438
1458
|
# Recovers exchanges. Used by the Automatic Network Failure
|
1439
1459
|
# Recovery feature.
|
1440
1460
|
#
|
@@ -1681,7 +1701,7 @@ module Bunny
|
|
1681
1701
|
@threads_waiting_on_basic_get_continuations.delete(t)
|
1682
1702
|
end
|
1683
1703
|
else
|
1684
|
-
connection.
|
1704
|
+
connection.reader_loop.run_once until @basic_get_continuations.length > 0
|
1685
1705
|
|
1686
1706
|
@basic_get_continuations.pop
|
1687
1707
|
end
|
@@ -1699,7 +1719,7 @@ module Bunny
|
|
1699
1719
|
@threads_waiting_on_confirms_continuations.delete(t)
|
1700
1720
|
end
|
1701
1721
|
else
|
1702
|
-
connection.
|
1722
|
+
connection.reader_loop.run_once until @confirms_continuations.length > 0
|
1703
1723
|
|
1704
1724
|
@confirms_continuations.pop
|
1705
1725
|
end
|
@@ -82,10 +82,10 @@ module Bunny
|
|
82
82
|
|
83
83
|
begin
|
84
84
|
callable.call
|
85
|
-
rescue Exception => e
|
86
|
-
# TODO
|
87
|
-
puts e.class.name
|
88
|
-
puts e.message
|
85
|
+
rescue ::Exception => e
|
86
|
+
# TODO: use connection logger
|
87
|
+
$stderr.puts e.class.name
|
88
|
+
$stderr.puts e.message
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
data/lib/bunny/session.rb
CHANGED
@@ -273,6 +273,8 @@ module Bunny
|
|
273
273
|
#
|
274
274
|
# @return [Bunny::Channel] Newly opened channel
|
275
275
|
def create_channel(n = nil, consumer_pool_size = 1)
|
276
|
+
raise ArgumentError, "channel number 0 is reserved in the protocol and cannot be used" if 0 == n
|
277
|
+
|
276
278
|
if n && (ch = @channels[n])
|
277
279
|
ch
|
278
280
|
else
|
@@ -307,8 +309,11 @@ module Bunny
|
|
307
309
|
# @return [Bunny::Session] self
|
308
310
|
def with_channel(n = nil)
|
309
311
|
ch = create_channel(n)
|
310
|
-
|
311
|
-
|
312
|
+
begin
|
313
|
+
yield ch
|
314
|
+
ensure
|
315
|
+
ch.close if ch.open?
|
316
|
+
end
|
312
317
|
|
313
318
|
self
|
314
319
|
end
|
data/lib/bunny/transport.rb
CHANGED
@@ -368,7 +368,14 @@ module Bunny
|
|
368
368
|
# setting TLS/SSL version only works correctly when done
|
369
369
|
# vis set_params. MK.
|
370
370
|
ctx.set_params(:ssl_version => @opts.fetch(:tls_protocol, DEFAULT_TLS_PROTOCOL))
|
371
|
-
|
371
|
+
|
372
|
+
verify_mode = if @verify_peer
|
373
|
+
OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
|
374
|
+
else
|
375
|
+
OpenSSL::SSL::VERIFY_NONE
|
376
|
+
end
|
377
|
+
|
378
|
+
ctx.set_params(:verify_mode => verify_mode)
|
372
379
|
|
373
380
|
ctx
|
374
381
|
end
|
data/lib/bunny/version.rb
CHANGED
@@ -21,6 +21,15 @@ describe Bunny::Channel, "when opened" do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
context "with an explicitly provided id = 0" do
|
25
|
+
it "raises ArgumentError" do
|
26
|
+
connection.should be_connected
|
27
|
+
expect {
|
28
|
+
connection.create_channel(0)
|
29
|
+
}.to raise_error(ArgumentError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
24
33
|
|
25
34
|
context "with explicitly provided id" do
|
26
35
|
it "uses that id and is successfully opened" do
|
@@ -38,4 +38,40 @@ describe Bunny::Channel do
|
|
38
38
|
ch.close
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
|
43
|
+
context "with a single-threaded connection" do
|
44
|
+
let(:connection) do
|
45
|
+
c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed", :continuation_timeout => 10000, :threaded => false)
|
46
|
+
c.start
|
47
|
+
c
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
context "when publishing with confirms enabled" do
|
52
|
+
it "increments delivery index" do
|
53
|
+
ch = connection.create_channel
|
54
|
+
ch.should_not be_using_publisher_confirmations
|
55
|
+
|
56
|
+
ch.confirm_select
|
57
|
+
ch.should be_using_publisher_confirmations
|
58
|
+
|
59
|
+
q = ch.queue("", :exclusive => true)
|
60
|
+
x = ch.default_exchange
|
61
|
+
|
62
|
+
n.times do
|
63
|
+
x.publish("xyzzy", :routing_key => q.name)
|
64
|
+
end
|
65
|
+
|
66
|
+
ch.next_publish_seq_no.should == n + 1
|
67
|
+
ch.wait_for_confirms.should be_true
|
68
|
+
sleep 0.25
|
69
|
+
|
70
|
+
q.message_count.should == n
|
71
|
+
q.purge
|
72
|
+
|
73
|
+
ch.close
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
41
77
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Bunny::Channel, "#with_channel" do
|
4
|
+
let(:connection) do
|
5
|
+
c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
|
6
|
+
c.start
|
7
|
+
c
|
8
|
+
end
|
9
|
+
|
10
|
+
after :each do
|
11
|
+
connection.close if connection.open?
|
12
|
+
end
|
13
|
+
|
14
|
+
it "closes if the block throws an exception" do
|
15
|
+
ch = nil
|
16
|
+
begin
|
17
|
+
connection.with_channel do |wch|
|
18
|
+
ch = wch
|
19
|
+
raise Exception.new
|
20
|
+
end
|
21
|
+
rescue Exception
|
22
|
+
end
|
23
|
+
ch.should be_closed
|
24
|
+
end
|
25
|
+
end
|
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: 1.1.0.
|
4
|
+
version: 1.1.0.rc1
|
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: 2014-01-04 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: amq-protocol
|
@@ -20,14 +20,14 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - '>='
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.9.
|
23
|
+
version: 1.9.2
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
28
|
- - '>='
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 1.9.
|
30
|
+
version: 1.9.2
|
31
31
|
description: Easy to use, feature complete Ruby client for RabbitMQ 2.0 and later
|
32
32
|
versions.
|
33
33
|
email:
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- spec/higher_level_api/integration/tls_connection_spec.rb
|
179
179
|
- spec/higher_level_api/integration/tx_commit_spec.rb
|
180
180
|
- spec/higher_level_api/integration/tx_rollback_spec.rb
|
181
|
+
- spec/higher_level_api/integration/with_channel_spec.rb
|
181
182
|
- spec/issues/issue100_spec.rb
|
182
183
|
- spec/issues/issue141_spec.rb
|
183
184
|
- spec/issues/issue78_spec.rb
|
@@ -273,6 +274,7 @@ test_files:
|
|
273
274
|
- spec/higher_level_api/integration/tls_connection_spec.rb
|
274
275
|
- spec/higher_level_api/integration/tx_commit_spec.rb
|
275
276
|
- spec/higher_level_api/integration/tx_rollback_spec.rb
|
277
|
+
- spec/higher_level_api/integration/with_channel_spec.rb
|
276
278
|
- spec/issues/issue100_spec.rb
|
277
279
|
- spec/issues/issue141_spec.rb
|
278
280
|
- spec/issues/issue78_spec.rb
|