puma 5.3.0-java → 5.3.1-java

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puma might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7497bbe935eaedda6aabf9c47876bcdd0727dcfbe17835c9a7d025925fbe9fce
4
- data.tar.gz: 13769e38a5e5845279f97ad77117d31da0403e9cd1a52d21417f41e40cecddb7
3
+ metadata.gz: 2e9bfe6e0d16878b7c08f452189b8b740fffa62ab86c1031a1f7bcff6826fbb2
4
+ data.tar.gz: cde6f178316ec5067a254669911999ae7f76d3a71fea25818c555613e648515f
5
5
  SHA512:
6
- metadata.gz: b4901602b62972f60c4d56034bb7c0f64b6b562d423e5ab2a3d1002fc7edc8854f969919bd46f3b46b68efb15a08f02abb209d19988ac9b494897d2dd254aaa7
7
- data.tar.gz: a2f58db0f3eff88455f03e47b9c0016682d89327796531bbff39f04a93b0a8ff3a3a3f7d3662af640cd2c60d198d3baa0cd961fccb451c45222e66d8b60ca3cf
6
+ metadata.gz: 6f93afa0f71745b4fd8888794fb78d04590fce5d2bcc897bcc69dcad114464cb3111a41782b7a06a1513270fe448ea2a9ee3d207521567b54e22d3815d45ccfd
7
+ data.tar.gz: 01c2be5ef8baab6014db28bda79f9d90b9252ec3859a66b1bdefaf2a12dcb9c24b8ca9cacf1e8cd57480e6a32562baa7f0528e14b3d1a8400320de8d3b1194ec
data/History.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 5.3.1 / 2021-05-11
2
+
3
+ * Security
4
+ * Close keepalive connections after the maximum number of fast inlined requests (#2625)
5
+
1
6
  ## 5.3.0 / 2021-05-07
2
7
 
3
8
  * Features
@@ -208,6 +213,11 @@
208
213
  * Support parallel tests in verbose progress reporting ([#2223])
209
214
  * Refactor error handling in server accept loop ([#2239])
210
215
 
216
+ ## 4.3.8 / 2021-05-11
217
+
218
+ * Security
219
+ * Close keepalive connections after the maximum number of fast inlined requests (#2625)
220
+
211
221
  ## 4.3.7 / 2020-11-30
212
222
 
213
223
  * Bugfixes
data/lib/puma/const.rb CHANGED
@@ -100,7 +100,7 @@ module Puma
100
100
  # too taxing on performance.
101
101
  module Const
102
102
 
103
- PUMA_VERSION = VERSION = "5.3.0".freeze
103
+ PUMA_VERSION = VERSION = "5.3.1".freeze
104
104
  CODE_NAME = "Sweetnighter".freeze
105
105
 
106
106
  PUMA_SERVER_STRING = ['puma', PUMA_VERSION, CODE_NAME].join(' ').freeze
Binary file
data/lib/puma/server.rb CHANGED
@@ -447,15 +447,20 @@ module Puma
447
447
 
448
448
  requests += 1
449
449
 
450
- check_for_more_data = @status == :run
450
+ # Closing keepalive sockets after they've made a reasonable
451
+ # number of requests allows Puma to service many connections
452
+ # fairly, even when the number of concurrent connections exceeds
453
+ # the size of the threadpool. It also allows cluster mode Pumas
454
+ # to keep load evenly distributed across workers, because clients
455
+ # are randomly assigned a new worker when opening a new connection.
456
+ #
457
+ # Previously, Puma would kick connections in this conditional back
458
+ # to the reactor. However, because this causes the todo set to increase
459
+ # in size, the wait_until_full mutex would never unlock, leaving
460
+ # any additional connections unserviced.
461
+ break if requests >= @max_fast_inline
451
462
 
452
- if requests >= @max_fast_inline
453
- # This will mean that reset will only try to use the data it already
454
- # has buffered and won't try to read more data. What this means is that
455
- # every client, independent of their request speed, gets treated like a slow
456
- # one once every max_fast_inline requests.
457
- check_for_more_data = false
458
- end
463
+ check_for_more_data = @status == :run
459
464
 
460
465
  next_request_ready = with_force_shutdown(client) do
461
466
  client.reset(check_for_more_data)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puma
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.0
4
+ version: 5.3.1
5
5
  platform: java
6
6
  authors:
7
7
  - Evan Phoenix
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-07 00:00:00.000000000 Z
11
+ date: 2021-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement