ld-eventsource 1.0.0 → 1.0.1
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/.circleci/config.yml +3 -1
- data/CHANGELOG.md +4 -0
- data/lib/ld-eventsource/client.rb +11 -10
- data/lib/ld-eventsource/version.rb +1 -1
- data/spec/client_spec.rb +23 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63f2bcc65635183d4d5499f1d2d1ade11151293ee4a289d7f824667c7aa9e0f4
|
4
|
+
data.tar.gz: a9d9f0ab5bc24b4f04e6222d4e3d87cdf07814ef1c4721ef874c1cf1439ac3e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97183f611132a017c66069336bf36e920ee83ac5fbfde1955f451cda6e25ed58b9cf3817bd0bc72575c682763084a36a6c90d8915a9c826ac4d82340f97d8c63
|
7
|
+
data.tar.gz: 9b521be3f883ed8c7a53410ce1e71932680af30fe13901ac1489c7957a46575ca2906df59c1eb2049a65a49147f02f0935785b432db97918cdf2893853c0d000
|
data/.circleci/config.yml
CHANGED
@@ -72,7 +72,9 @@ jobs:
|
|
72
72
|
rvm use $i;
|
73
73
|
if [[ $i == jruby* ]]; then
|
74
74
|
gem install jruby-openssl; # required by bundler, no effect on Ruby MRI
|
75
|
-
fi
|
75
|
+
fi;
|
76
|
+
# bundler 2.0 may be preinstalled, we need to remove it if slow
|
77
|
+
yes | gem uninstall bundler --version '>=2.0' || true;
|
76
78
|
gem install bundler -v "~> 1.17";
|
77
79
|
bundle install;
|
78
80
|
mv Gemfile.lock "Gemfile.lock.$i"
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
All notable changes to the LaunchDarkly SSE Client for Ruby will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).
|
4
4
|
|
5
|
+
## [1.0.1] - 2019-07-10
|
6
|
+
### Fixed:
|
7
|
+
- Calling `close` on the client could cause a misleading warning message in the log, such as `Unexpected error from event source: #<IOError: stream closed in another thread>`.
|
8
|
+
|
5
9
|
## [1.0.0] - 2019-01-03
|
6
10
|
|
7
11
|
Initial release.
|
@@ -186,12 +186,14 @@ module SSE
|
|
186
186
|
# connected but before @cxn was set. Checking the variable again is a bit clunky but avoids that.
|
187
187
|
return if @stopped.value
|
188
188
|
read_stream(@cxn) if !@cxn.nil?
|
189
|
-
rescue
|
190
|
-
#
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
189
|
+
rescue => e
|
190
|
+
# When we deliberately close the connection, it will usually trigger an exception. The exact type
|
191
|
+
# of exception depends on the specific Ruby runtime. But @stopped will always be set in this case.
|
192
|
+
if @stopped.value
|
193
|
+
@logger.info { "Stream connection closed" }
|
194
|
+
else
|
195
|
+
log_and_dispatch_error(e, "Unexpected error from event source")
|
196
|
+
end
|
195
197
|
end
|
196
198
|
begin
|
197
199
|
@cxn.close if !@cxn.nil?
|
@@ -210,6 +212,7 @@ module SSE
|
|
210
212
|
@logger.info { "Will retry connection after #{'%.3f' % interval} seconds" }
|
211
213
|
sleep(interval)
|
212
214
|
end
|
215
|
+
cxn = nil
|
213
216
|
begin
|
214
217
|
@logger.info { "Connecting to event stream at #{@uri}" }
|
215
218
|
cxn = Impl::StreamingHTTPConnection.new(@uri,
|
@@ -235,11 +238,9 @@ module SSE
|
|
235
238
|
err = Errors::HTTPStatusError.new(cxn.status, body)
|
236
239
|
@on[:error].call(err)
|
237
240
|
end
|
238
|
-
rescue
|
239
|
-
raise # See EBADF comment in run_stream
|
240
|
-
rescue StandardError => e
|
241
|
+
rescue
|
241
242
|
cxn.close if !cxn.nil?
|
242
|
-
|
243
|
+
raise # will be handled in run_stream
|
243
244
|
end
|
244
245
|
# if unsuccessful, continue the loop to connect again
|
245
246
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -112,6 +112,29 @@ EOT
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
it "does not trigger an error when stream is closed" do
|
116
|
+
events_body = simple_event_1_text + simple_event_2_text
|
117
|
+
with_server do |server|
|
118
|
+
server.setup_response("/") do |req,res|
|
119
|
+
send_stream_content(res, events_body, keep_open: true)
|
120
|
+
end
|
121
|
+
|
122
|
+
event_sink = Queue.new
|
123
|
+
error_sink = Queue.new
|
124
|
+
client = subject.new(server.base_uri) do |c|
|
125
|
+
c.on_event { |event| event_sink << event }
|
126
|
+
c.on_error { |error| error_sink << error }
|
127
|
+
end
|
128
|
+
|
129
|
+
with_client(client) do |client|
|
130
|
+
event_sink.pop # wait till we have definitely started reading the stream
|
131
|
+
client.close
|
132
|
+
sleep 0.25 # there's no way to really know when the stream thread has finished
|
133
|
+
expect(error_sink.empty?).to be true
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
115
138
|
it "reconnects after error response" do
|
116
139
|
events_body = simple_event_1_text
|
117
140
|
with_server do |server|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ld-eventsource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LaunchDarkly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -157,8 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: '0'
|
159
159
|
requirements: []
|
160
|
-
|
161
|
-
rubygems_version: 2.7.6
|
160
|
+
rubygems_version: 3.0.3
|
162
161
|
signing_key:
|
163
162
|
specification_version: 4
|
164
163
|
summary: LaunchDarkly SSE client
|