httpx 0.22.3 → 0.22.5
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/doc/release_notes/0_22_4.md +6 -0
- data/doc/release_notes/0_22_5.md +6 -0
- data/lib/httpx/adapters/datadog.rb +11 -1
- data/lib/httpx/adapters/faraday.rb +2 -0
- data/lib/httpx/adapters/sentry.rb +11 -1
- data/lib/httpx/callbacks.rb +3 -3
- data/lib/httpx/connection.rb +2 -1
- data/lib/httpx/pool.rb +10 -4
- data/lib/httpx/resolver/multi.rb +1 -6
- data/lib/httpx/transcoder.rb +1 -1
- data/lib/httpx/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1346874cf311c485468e6c99054806adfde48a145d9b012a9a2a2e56a9ae3a8b
|
4
|
+
data.tar.gz: 4b345ffef12d65d66787e59bc3ed8c01619a343246ddd433a1a0e807029f14de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dfa20f805f0421917c6aee58ff2bedb31173d4b227fa76c6b23d1af9ee903242f26ab12474907400d5e6dae7b0fe4084c771689e4e6391ff6227277a7beef9b
|
7
|
+
data.tar.gz: 7d8a89d569f0b8abc775eae0563450e1e9470c7a74cd7aa249abc49570901f6ceb0548ba5236b1575ba17e9f8a17c433cea12a1708a9df3b520c599304bcd458
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# 0.22.4
|
2
|
+
|
3
|
+
## Bugfixes
|
4
|
+
|
5
|
+
* fix happy eyeballs v2 bug where, once the first connection would be established, the remaining one would still end up in the coalescing loop, thereby closing itself via the `:tcp_open` callback.
|
6
|
+
* fix for faraday plugin parallel mode, where it'd hang if no requests would be made in the parallel block (@catlee)
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# 0.22.5
|
2
|
+
|
3
|
+
## Bugfixes
|
4
|
+
|
5
|
+
* `datadog` and `sentry` integrations did not account for `Connection#send` being possibly called multiple times (something possible for connection coalescing, max requests exhaustion, or Happy Eyeballs 2), and were registering multiple `on(:response)` callbacks. Requests are now marked when decorated the first time.
|
6
|
+
* Happy Eyeballs handshake "connect errors" routine is now taking both name resolution errors, as well as TLS handshake errors, into account, when the handshake fails.
|
@@ -158,9 +158,19 @@ module TRACING_MODULE # rubocop:disable Naming/ClassAndModuleCamelCase
|
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
161
|
+
module RequestMethods
|
162
|
+
def __datadog_enable_trace!
|
163
|
+
return super if @__datadog_enable_trace
|
164
|
+
|
165
|
+
RequestTracer.new(self).call
|
166
|
+
@__datadog_enable_trace = true
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
161
170
|
module ConnectionMethods
|
162
171
|
def send(request)
|
163
|
-
|
172
|
+
request.__datadog_enable_trace!
|
173
|
+
|
164
174
|
super
|
165
175
|
end
|
166
176
|
end
|
@@ -89,9 +89,19 @@ module HTTPX::Plugins
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
module RequestMethods
|
93
|
+
def __sentry_enable_trace!
|
94
|
+
return super if @__sentry_enable_trace
|
95
|
+
|
96
|
+
Tracer.call(self)
|
97
|
+
@__sentry_enable_trace = true
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
92
101
|
module ConnectionMethods
|
93
102
|
def send(request)
|
94
|
-
|
103
|
+
request.__sentry_enable_trace!
|
104
|
+
|
95
105
|
super
|
96
106
|
end
|
97
107
|
end
|
data/lib/httpx/callbacks.rb
CHANGED
@@ -22,12 +22,12 @@ module HTTPX
|
|
22
22
|
callbacks(type).delete_if { |pr| :delete == pr.call(*args) } # rubocop:disable Style/YodaCondition
|
23
23
|
end
|
24
24
|
|
25
|
-
protected
|
26
|
-
|
27
25
|
def callbacks_for?(type)
|
28
|
-
@callbacks.key?(type) &&
|
26
|
+
@callbacks.key?(type) && @callbacks[type].any?
|
29
27
|
end
|
30
28
|
|
29
|
+
protected
|
30
|
+
|
31
31
|
def callbacks(type = nil)
|
32
32
|
return @callbacks unless type
|
33
33
|
|
data/lib/httpx/connection.rb
CHANGED
@@ -538,12 +538,13 @@ module HTTPX
|
|
538
538
|
# connect errors, exit gracefully
|
539
539
|
error = ConnectionError.new(e.message)
|
540
540
|
error.set_backtrace(e.backtrace)
|
541
|
-
connecting? &&
|
541
|
+
connecting? && callbacks_for?(:connect_error) ? emit(:connect_error, error) : handle_error(error)
|
542
542
|
@state = :closed
|
543
543
|
emit(:close)
|
544
544
|
rescue TLSError => e
|
545
545
|
# connect errors, exit gracefully
|
546
546
|
handle_error(e)
|
547
|
+
connecting? && callbacks_for?(:connect_error) ? emit(:connect_error, e) : handle_error(e)
|
547
548
|
@state = :closed
|
548
549
|
emit(:close)
|
549
550
|
end
|
data/lib/httpx/pool.rb
CHANGED
@@ -141,21 +141,25 @@ module HTTPX
|
|
141
141
|
connection.once(:connect_error) do |err|
|
142
142
|
if new_connection.connecting?
|
143
143
|
new_connection.merge(connection)
|
144
|
+
connection.force_reset
|
144
145
|
else
|
145
|
-
connection.handle_error
|
146
|
+
connection.__send__(:handle_error, err)
|
146
147
|
end
|
147
148
|
end
|
148
149
|
|
149
150
|
new_connection.once(:tcp_open) do |new_conn|
|
150
|
-
new_conn
|
151
|
-
|
151
|
+
if new_conn != connection
|
152
|
+
new_conn.merge(connection)
|
153
|
+
connection.force_reset
|
154
|
+
end
|
152
155
|
end
|
153
156
|
new_connection.once(:connect_error) do |err|
|
154
157
|
if connection.connecting?
|
155
158
|
# main connection has the requests
|
156
159
|
connection.merge(new_connection)
|
160
|
+
new_connection.force_reset
|
157
161
|
else
|
158
|
-
new_connection.handle_error
|
162
|
+
new_connection.__send__(:handle_error, err)
|
159
163
|
end
|
160
164
|
end
|
161
165
|
|
@@ -181,6 +185,8 @@ module HTTPX
|
|
181
185
|
end
|
182
186
|
|
183
187
|
def on_resolver_error(connection, error)
|
188
|
+
return connection.emit(:connect_error, error) if connection.connecting? && connection.callbacks_for?(:connect_error)
|
189
|
+
|
184
190
|
connection.emit(:error, error)
|
185
191
|
end
|
186
192
|
|
data/lib/httpx/resolver/multi.rb
CHANGED
@@ -64,12 +64,7 @@ module HTTPX
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def on_resolver_error(connection, error)
|
67
|
-
|
68
|
-
|
69
|
-
return unless @errors[connection].size >= @resolvers.size
|
70
|
-
|
71
|
-
errors = @errors.delete(connection)
|
72
|
-
emit(:error, connection, errors.first)
|
67
|
+
emit(:error, connection, error)
|
73
68
|
end
|
74
69
|
|
75
70
|
def on_resolver_close(resolver)
|
data/lib/httpx/transcoder.rb
CHANGED
data/lib/httpx/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httpx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.22.
|
4
|
+
version: 0.22.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2-next
|
@@ -92,6 +92,8 @@ extra_rdoc_files:
|
|
92
92
|
- doc/release_notes/0_22_1.md
|
93
93
|
- doc/release_notes/0_22_2.md
|
94
94
|
- doc/release_notes/0_22_3.md
|
95
|
+
- doc/release_notes/0_22_4.md
|
96
|
+
- doc/release_notes/0_22_5.md
|
95
97
|
- doc/release_notes/0_2_0.md
|
96
98
|
- doc/release_notes/0_2_1.md
|
97
99
|
- doc/release_notes/0_3_0.md
|
@@ -176,6 +178,8 @@ files:
|
|
176
178
|
- doc/release_notes/0_22_1.md
|
177
179
|
- doc/release_notes/0_22_2.md
|
178
180
|
- doc/release_notes/0_22_3.md
|
181
|
+
- doc/release_notes/0_22_4.md
|
182
|
+
- doc/release_notes/0_22_5.md
|
179
183
|
- doc/release_notes/0_2_0.md
|
180
184
|
- doc/release_notes/0_2_1.md
|
181
185
|
- doc/release_notes/0_3_0.md
|