raptor 0.22.2 → 0.22.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb1bd33db4e839d7c8e2ef3717de3123187d4d4960a240811156a0a342d3a086
4
- data.tar.gz: c1363e325747276176c271b68a2b9f7e066b34fc8073289848720d70b9ba98e5
3
+ metadata.gz: 813fde7063bd9f7dd9e965f57ede9e1e207f4f0db558343e777fce9769a7ec0e
4
+ data.tar.gz: faf2cdec407c5c8d36f4da222a50df4b47366d2a76204e22356a91bb24736879
5
5
  SHA512:
6
- metadata.gz: 799e78896522004ad98dd8cb9dc0170d32408bcd507f2fc11d511a753f5b2b04d2fcbff0588463a35245626b069d6c93d07cd3dcab7c2f07fda30c6c4f5134b7
7
- data.tar.gz: ebc5e4eb852c1af7d413b5a6ed6614d5bd5f3c569bdca6398583fc892485767fbab3770217f0a266ea774303c0e1b16a566fbba69e863e00ea491453e164d281
6
+ metadata.gz: be5d3eb531ab184623787d4b18b06a0d51f908c92120fd46031c353518563da756183775155e250c9744fbc34400c82945204ba341f126be8aa3eab5b94ac8c3
7
+ data.tar.gz: 4b125079b570a4e0f15a549d75ef09bcce749f1442fd18a20a27401cc9c6618797e61564e1ebc194fc93c93bf07eee669249a1e1df18064b306b09a2334b7f41
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.22.3] - 2026-10-04
4
+
5
+ - Keep workers accepting connections when clients reset during accept
6
+ - Close reset client connections without logging backtraces
7
+
3
8
  ## [0.22.2] - 2026-10-03
4
9
 
5
10
  - Load `Raptor::DetachedBody` with `require "raptor"`
data/README.md CHANGED
@@ -37,7 +37,7 @@ run proc { |_env| [200, { "content-type" => "text/plain" }, ["Hello, World!"]] }
37
37
  ```
38
38
  > bundle exec raptor -w 10 -t 3 hello_world.ru
39
39
  [Raptor 72876|Main|Main] Cluster initializing:
40
- [Raptor 72876|Main|Main] ├─ Version: 0.22.2
40
+ [Raptor 72876|Main|Main] ├─ Version: 0.22.3
41
41
  [Raptor 72876|Main|Main] ├─ Ruby Version: ruby 4.0.6 (2026-07-14 revision 03b6d3f889) +YJIT +PRISM [arm64-darwin23]
42
42
  [Raptor 72876|Main|Main] ├─ Environment: development
43
43
  [Raptor 72876|Main|Main] ├─ Master PID: 72876
@@ -208,7 +208,7 @@ Set `control_url` to a Unix socket URL such as `unix:///tmp/raptor-control.sock`
208
208
 
209
209
  ## (Micro) Benchmarks
210
210
 
211
- Raptor 0.22.2 vs Puma 8.0.2 vs Falcon 0.57.0 across two workload profiles. **IO-bound** is a GET endpoint that
211
+ Raptor 0.22.3 vs Puma 8.0.2 vs Falcon 0.57.0 across two workload profiles. **IO-bound** is a GET endpoint that
212
212
  interleaves 5-10 short sleeps (total 2.5-15ms) with small CPU work, simulating a read path that makes several DB or
213
213
  cache calls. **CPU-bound** is a POST endpoint that accepts a small JSON body, interleaves 3-5 chunks of JSON item
214
214
  building (total 450-1500 items) with sub-100µs sleeps, and returns the built array, simulating a write path that does
data/lib/raptor/http1.rb CHANGED
@@ -307,7 +307,7 @@ module Raptor
307
307
  rescue IO::WaitReadable
308
308
  reactor.add(id: id, socket: socket, remote_addr: remote_addr, url_scheme: url_scheme)
309
309
  return
310
- rescue EOFError, IOError
310
+ rescue EOFError, IOError, SystemCallError
311
311
  socket.close rescue nil
312
312
  return
313
313
  end
@@ -688,7 +688,7 @@ module Raptor
688
688
  rescue IO::WaitReadable
689
689
  reactor.persist(socket, id, request_count, remote_addr: remote_addr, url_scheme: url_scheme)
690
690
  return
691
- rescue EOFError
691
+ rescue EOFError, IOError, SystemCallError
692
692
  socket.close rescue nil
693
693
  return
694
694
  end
data/lib/raptor/http2.rb CHANGED
@@ -892,7 +892,7 @@ module Raptor
892
892
  rescue IO::WaitReadable
893
893
  reactor.watch(id)
894
894
  return
895
- rescue EOFError, IOError
895
+ rescue EOFError, IOError, SystemCallError
896
896
  reactor.close_connection(id)
897
897
  return
898
898
  end
@@ -1013,7 +1013,7 @@ module Raptor
1013
1013
 
1014
1014
  data = begin
1015
1015
  socket.read_nonblock(EAGER_READ_BUFFER_SIZE)
1016
- rescue IO::WaitReadable, EOFError, IOError
1016
+ rescue IO::WaitReadable, EOFError, IOError, SystemCallError
1017
1017
  return
1018
1018
  end
1019
1019
 
@@ -1445,7 +1445,7 @@ module Raptor
1445
1445
  @queue << socket
1446
1446
  @selector.wakeup
1447
1447
  return
1448
- rescue EOFError
1448
+ rescue EOFError, IOError, SystemCallError, OpenSSL::SSL::SSLError
1449
1449
  cleanup(socket)
1450
1450
  return
1451
1451
  end
data/lib/raptor/server.rb CHANGED
@@ -167,10 +167,11 @@ module Raptor
167
167
  return false
168
168
  end
169
169
 
170
- if tcp_client.is_a?(TCPSocket)
171
- remote_addr = tcp_client.remote_address.ip_address
172
- else
173
- remote_addr = DEFAULT_REMOTE_ADDR
170
+ remote_addr = begin
171
+ tcp_client.is_a?(TCPSocket) ? tcp_client.remote_address.ip_address : DEFAULT_REMOTE_ADDR
172
+ rescue SystemCallError
173
+ tcp_client.close
174
+ return true
174
175
  end
175
176
 
176
177
  ReuseportBPF.update_accepted_load(@reactor.backlog + 1) if @bpf_active
@@ -268,6 +269,9 @@ module Raptor
268
269
  Log.rescued_error(error)
269
270
  ssl_socket.close rescue nil
270
271
  false
272
+ rescue SystemCallError
273
+ ssl_socket.close rescue nil
274
+ false
271
275
  end
272
276
  end
273
277
 
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Raptor
5
- VERSION = "0.22.2"
5
+ VERSION = "0.22.3"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.2
4
+ version: 0.22.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Young