raindrops 0.20.0 → 0.20.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f78e29ec57e3f3710146a423cf60915d23a5f4366d70dcabbbef74fb69f71f3
4
- data.tar.gz: 8a369d49c33a67af3b6acccaf64b04ed192cba9d163c8d48944cfac887511885
3
+ metadata.gz: ee0ff94057cce668ffed3609681f205ef8e54bb4e9a6e941b4791cf81992963d
4
+ data.tar.gz: 258357b6481aa52cae71265529d496fbd264226ed1f3c01ffe5f6c9bed8c5f67
5
5
  SHA512:
6
- metadata.gz: b9e5de8e7a7a84038bbe19a954d3d559ebec3ed4c7f68db2e2ada6373b045f4fbcd784c5d5b91005cad1d87f1db93f9dc31c9f7fc59ae56a7f73b98d9a96bf2e
7
- data.tar.gz: 9913e9205b2527b9f5bd1bae58b0c2c8962505e87280c06257f603fb722978d6656c99cfa0a297ccd0734a7d6110b0a6ecd5155fec9870ec40a31044a00def4d
6
+ metadata.gz: e4f8a6fedf68bad77b9378044ff6bb2eca2812ad333501ee090b9368f2e8ec6c796f08b076e90be41a7e6f3cf5447d92e0b6fa6f238e6c973a3ca7012e8fd597
7
+ data.tar.gz: '02475783c3a7830dbbf701edf4511f9fae67771ad081a56460082aa9bda0e5e6714a0b0eef2385fbee315e71b28c90259d5c91c16b881df4b3f9a96e0f1ff6e4'
data/.manifest CHANGED
@@ -49,6 +49,7 @@ test/test_linux_all_tcp_listen_stats.rb
49
49
  test/test_linux_all_tcp_listen_stats_leak.rb
50
50
  test/test_linux_ipv6.rb
51
51
  test/test_linux_middleware.rb
52
+ test/test_linux_reuseport_tcp_listen_stats.rb
52
53
  test/test_middleware.rb
53
54
  test/test_middleware_unicorn.rb
54
55
  test/test_middleware_unicorn_ipv6.rb
data/GIT-VERSION-FILE CHANGED
@@ -1 +1 @@
1
- GIT_VERSION = 0.20.0
1
+ GIT_VERSION = 0.20.1
data/GIT-VERSION-GEN CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v0.20.0
4
+ DEF_VER=v0.20.1
5
5
 
6
6
  LF='
7
7
  '
data/LATEST CHANGED
@@ -1,10 +1,9 @@
1
- === raindrops 0.20.0 / 2021-12-06 23:41 UTC
1
+ === raindrops 0.20.1 / 2023-02-25 00:19 UTC
2
2
 
3
- Raindrops may now use file-backed mmap() rather than anonymous
4
- memory. Thanks to KJ Tsanaktsidis for the patch:
3
+ Stats for SO_REUSEPORT sockets are now handled properly.
4
+ Thanks to Dale Hamel for the patches.
5
5
 
6
- https://yhbt.net/raindrops-public/20211125065618.3432-1-ktsanaktsidis@zendesk.com/T/
7
-
8
- The documentation is also updated to note our mail archives are now
9
- available via IMAP(S).
6
+ Dale Hamel (2):
7
+ Fix queue stats for sockets with SO_REUSEPORT
8
+ Fix off by one error in test
10
9
 
data/NEWS CHANGED
@@ -1,3 +1,12 @@
1
+ === raindrops 0.20.1 / 2023-02-25 00:19 UTC
2
+
3
+ Stats for SO_REUSEPORT sockets are now handled properly.
4
+ Thanks to Dale Hamel for the patches.
5
+
6
+ Dale Hamel (2):
7
+ Fix queue stats for sockets with SO_REUSEPORT
8
+ Fix off by one error in test
9
+
1
10
  === raindrops 0.20.0 / 2021-12-06 23:41 UTC
2
11
 
3
12
  Raindrops may now use file-backed mmap() rather than anonymous
@@ -306,7 +306,7 @@ static void table_set_queued(st_table *table, struct inet_diag_msg *r)
306
306
  {
307
307
  struct listen_stats *stats = stats_for(table, r);
308
308
  stats->listener_p = 1;
309
- stats->queued = r->idiag_rqueue;
309
+ stats->queued += r->idiag_rqueue;
310
310
  }
311
311
 
312
312
  /* inner loop of inet_diag, called for every socket returned by netlink */
@@ -328,7 +328,7 @@ static inline void r_acc(struct nogvl_args *args, struct inet_diag_msg *r)
328
328
  if (args->table)
329
329
  table_set_queued(args->table, r);
330
330
  else
331
- args->stats.queued = r->idiag_rqueue;
331
+ args->stats.queued += r->idiag_rqueue;
332
332
  }
333
333
  /*
334
334
  * we wont get anything else because of the idiag_states filter
@@ -0,0 +1,51 @@
1
+ # -*- encoding: binary -*-
2
+ require "./test/rack_unicorn"
3
+ require 'test/unit'
4
+ require 'socket'
5
+ require 'raindrops'
6
+ $stderr.sync = $stdout.sync = true
7
+
8
+ class TestLinuxReuseportTcpListenStats < Test::Unit::TestCase
9
+ include Raindrops::Linux
10
+ include Unicorn::SocketHelper
11
+ TEST_ADDR = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'
12
+ DEFAULT_BACKLOG = 10
13
+
14
+ def setup
15
+ @socks = []
16
+ end
17
+
18
+ def teardown
19
+ @socks.each { |io| io.closed? or io.close }
20
+ end
21
+
22
+ def new_socket_server(**kwargs)
23
+ s = new_tcp_server TEST_ADDR, kwargs[:port] || 0, kwargs
24
+ s.listen(kwargs[:backlog] || DEFAULT_BACKLOG)
25
+ @socks << s
26
+ [ s, s.addr[1] ]
27
+ end
28
+
29
+ def new_client(port)
30
+ s = TCPSocket.new("127.0.0.1", port)
31
+ @socks << s
32
+ s
33
+ end
34
+
35
+ def test_reuseport_queue_stats
36
+ listeners = 10
37
+ _, port = new_socket_server(reuseport: true)
38
+ addr = "#{TEST_ADDR}:#{port}"
39
+ (listeners - 1).times do
40
+ new_socket_server(reuseport: true, port: port)
41
+ end
42
+
43
+ listeners.times do |i|
44
+ all = Raindrops::Linux.tcp_listener_stats
45
+ assert_equal [0, i], all[addr].to_a
46
+ new_client(port)
47
+ all = Raindrops::Linux.tcp_listener_stats
48
+ assert_equal [0, i+1], all[addr].to_a
49
+ end
50
+ end
51
+ end if RUBY_PLATFORM =~ /linux/
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raindrops
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - raindrops hackers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-06 00:00:00.000000000 Z
11
+ date: 2023-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aggregate
@@ -141,6 +141,7 @@ files:
141
141
  - test/test_linux_all_tcp_listen_stats_leak.rb
142
142
  - test/test_linux_ipv6.rb
143
143
  - test/test_linux_middleware.rb
144
+ - test/test_linux_reuseport_tcp_listen_stats.rb
144
145
  - test/test_middleware.rb
145
146
  - test/test_middleware_unicorn.rb
146
147
  - test/test_middleware_unicorn_ipv6.rb
@@ -168,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
169
  - !ruby/object:Gem::Version
169
170
  version: '0'
170
171
  requirements: []
171
- rubygems_version: 3.0.2
172
+ rubygems_version: 3.4.1
172
173
  signing_key:
173
174
  specification_version: 4
174
175
  summary: real-time stats for preforking Rack servers
@@ -181,6 +182,7 @@ test_files:
181
182
  - test/test_linux_all_tcp_listen_stats_leak.rb
182
183
  - test/test_linux_ipv6.rb
183
184
  - test/test_linux_middleware.rb
185
+ - test/test_linux_reuseport_tcp_listen_stats.rb
184
186
  - test/test_middleware.rb
185
187
  - test/test_middleware_unicorn.rb
186
188
  - test/test_middleware_unicorn_ipv6.rb