message_bus 2.2.0.pre.2 → 2.2.0
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.
Potentially problematic release.
This version of message_bus might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/lib/message_bus/http_client.rb +8 -7
- data/lib/message_bus/version.rb +1 -1
- data/spec/integration/http_client_spec.rb +35 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99317ae05b998644cb03be9365caf40fb7375426ea0bbbc1a165a3d6b10edf57
|
4
|
+
data.tar.gz: 3a0101abb11820b6225eefe0c2ac318502e05a8e2b6e0a4116adfed4b2a53864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1aca6d2cad3da7eb43febac4538396a14824cf3638afe28b1d20470b8a01b52a26039102fa87dde502d3aac4cf0c12030b8c21145aaeb591573f190765aae3e
|
7
|
+
data.tar.gz: c5eaac3ab21f72c235c2d408d054e0c3423f619bc298d04402e3e101517944d74bcc799fa240ce7ec11187478dc78f87875293d53998e04edb5aa62c5a3a6f9f
|
data/CHANGELOG
CHANGED
@@ -22,11 +22,11 @@ module MessageBus
|
|
22
22
|
# @!attribute enable_chunked_encoding
|
23
23
|
# @return [Boolean] whether chunked encoding is enabled
|
24
24
|
# @!attribute min_poll_interval
|
25
|
-
# @return [Float] the min poll interval for long polling
|
25
|
+
# @return [Float] the min poll interval for long polling in seconds
|
26
26
|
# @!attribute max_poll_interval
|
27
|
-
# @return [Float] the max poll interval for long polling
|
27
|
+
# @return [Float] the max poll interval for long polling in seconds
|
28
28
|
# @!attribute background_callback_interval
|
29
|
-
# @return [Float] the polling interval
|
29
|
+
# @return [Float] the polling interval in seconds
|
30
30
|
class HTTPClient
|
31
31
|
class InvalidChannel < StandardError; end
|
32
32
|
class MissingBlock < StandardError; end
|
@@ -55,11 +55,11 @@ module MessageBus
|
|
55
55
|
# @param base_url [String] Base URL of the message_bus server to connect to
|
56
56
|
# @param enable_long_polling [Boolean] Enable long polling
|
57
57
|
# @param enable_chunked_encoding [Boolean] Enable chunk encoding
|
58
|
-
# @param min_poll_interval [Float, Integer] Min poll interval when long polling
|
59
|
-
# @param max_poll_interval [Float, Integer] Max poll interval when long polling.
|
58
|
+
# @param min_poll_interval [Float, Integer] Min poll interval when long polling in seconds
|
59
|
+
# @param max_poll_interval [Float, Integer] Max poll interval when long polling in seconds.
|
60
60
|
# When requests fail, the client will backoff and this is the upper limit.
|
61
61
|
# @param background_callback_interval [Float, Integer] Interval to poll when
|
62
|
-
# when polling.
|
62
|
+
# when polling in seconds.
|
63
63
|
# @param headers [Hash] extra HTTP headers to be set on the polling requests.
|
64
64
|
#
|
65
65
|
# @return [Object] Instance of MessageBus::HTTPClient
|
@@ -113,6 +113,7 @@ module MessageBus
|
|
113
113
|
rescue StandardError => e
|
114
114
|
@stats.failed += 1
|
115
115
|
warn("#{e.class} #{e.message}: #{e.backtrace.join("\n")}")
|
116
|
+
sleep interval
|
116
117
|
retry
|
117
118
|
ensure
|
118
119
|
stop
|
@@ -226,7 +227,7 @@ module MessageBus
|
|
226
227
|
def interval
|
227
228
|
if @enable_long_polling
|
228
229
|
if (failed_count = @stats.failed) > 2
|
229
|
-
(@min_poll_interval * failed_count).clamp(
|
230
|
+
(@min_poll_interval * 2**failed_count).clamp(
|
230
231
|
@min_poll_interval, @max_poll_interval
|
231
232
|
)
|
232
233
|
else
|
data/lib/message_bus/version.rb
CHANGED
@@ -40,6 +40,41 @@ describe MessageBus::HTTPClient do
|
|
40
40
|
|
41
41
|
assert_equal(new_threads, Thread.list - threads)
|
42
42
|
end
|
43
|
+
|
44
|
+
describe 'when an error is encountered while trying to poll' do
|
45
|
+
let(:base_url) { "http://0.0.0.0:12312123" }
|
46
|
+
|
47
|
+
let(:client) do
|
48
|
+
MessageBus::HTTPClient.new(base_url, min_poll_interval: 1)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should handle errors correctly' do
|
52
|
+
begin
|
53
|
+
original_stderr = $stderr
|
54
|
+
$stderr = fake = StringIO.new
|
55
|
+
|
56
|
+
client.channels[channel] = MessageBus::HTTPClient::Channel.new(
|
57
|
+
callbacks: [-> {}]
|
58
|
+
)
|
59
|
+
|
60
|
+
client.start
|
61
|
+
|
62
|
+
assert_equal(MessageBus::HTTPClient::STARTED, client.status)
|
63
|
+
|
64
|
+
while stats.failed < 1 do
|
65
|
+
sleep 0.05
|
66
|
+
end
|
67
|
+
|
68
|
+
# Sleep for more than the default min_poll_interval to ensure
|
69
|
+
# that we sleep for the right interval after failure
|
70
|
+
sleep 0.5
|
71
|
+
|
72
|
+
assert_equal(1, fake.string.scan("Errno::ECONNREFUSED").size)
|
73
|
+
ensure
|
74
|
+
$stderr = original_stderr
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
43
78
|
end
|
44
79
|
|
45
80
|
describe '#subscribe' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: message_bus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.0
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -151,9 +151,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: 2.3.0
|
152
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
|
-
- - "
|
154
|
+
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
156
|
+
version: '0'
|
157
157
|
requirements: []
|
158
158
|
rubyforge_project:
|
159
159
|
rubygems_version: 2.7.6
|