net-http-persistent 3.0.1 → 4.0.2

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: 544b6c4e52caee7104e021181a7ab8723a625e239820297b7e6d87934c7e0e0e
4
- data.tar.gz: 03e9df91b7e30d25886c30a650f9e6feb8fa7d945cf5e61b19d416bfe46eff6a
3
+ metadata.gz: 9123e98741595dbcc1c9a9713ecdcfb517597dc52791dc546bd868c31cbe88d0
4
+ data.tar.gz: 462f4ae1dd63c8776ac18e3eab2b8e4c43e65d906722086a670d5ae3b764eb2b
5
5
  SHA512:
6
- metadata.gz: 38b3695f98f1bae796fb0b51b12d992b621ac9d0d8b6e9f885c9327a91d994acdfa18e37018bf5a7a28bf52e11413194b027dd332d3605f913c66f847402d683
7
- data.tar.gz: 32420e4a50e91fcac562ab34b1c383a7ce529d0c6646a802e4625f5f61b4c017ef6640d4e466bd803d4a5d0172d577cd05ef1979a450ef326af68a76de4f709a
6
+ metadata.gz: 45e3ea77d23e8c9829bba490c61546b71a221194cf8106bbb32ad746408283df04923649aef952d7317f06475a0a5466b19376c7a38e8b62490d65f24b6031cf
7
+ data.tar.gz: e46564075c2d655e258c5fd9ff3c45843b48c5bd6d8c5f80fe84450a36e7ac5811d0f97b5e8223277c2b607e7259df70e1e331c372e12a4bd33efec0e555e743
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ # -*- ruby -*-
2
+
3
+ source "https://rubygems.org/"
4
+
5
+ gemspec
6
+
7
+ gem "rake", "~>13.0"
8
+ gem "minitest", "~>5.15", :group => [:development, :test]
9
+ gem "rdoc", ">=4.0", "<7", :group => [:development, :test]
10
+ gem "rake-manifest", "~>0.2"
11
+
12
+ gem 'net-http-pipeline', '~> 1.0' if ENV['CI_MATRIX'] == 'pipeline'
13
+
14
+ # vim: syntax=ruby
data/History.txt CHANGED
@@ -1,4 +1,92 @@
1
- === 3.0
1
+ === 4.0.2 / 2023-03-29
2
+
3
+ Bug fixes:
4
+
5
+ * Fix compatibility with `connection_pool 2.4+`
6
+
7
+ === 4.0.1 / 2021-01-12
8
+
9
+ Bug fixes:
10
+
11
+ * Loosen Ruby version requirement so Ruby 3.0 will work.
12
+
13
+ === 4.0.0 / 2020-04-30
14
+
15
+ Breaking changes:
16
+
17
+ * Removed built-in support for retrying failed requests as Net::HTTP has this
18
+ built-in for all supported versions. Pull request #100 by Michael Grosser.
19
+ * Dropped support for EoL ruby versions (< 2.4). Future feature releases may
20
+ drop support for ruby versions that are at end-of-life or in security-only
21
+ maintenance mode with any release. Pull request #113 by David Rodríguez
22
+
23
+ New features:
24
+
25
+ * Added Net::HTTP::Persistent#max_retries= to configure the number of retries
26
+ performed on a request for ruby versions that support it (2.5+).
27
+ * URI-ness is determined through #respond_to? to allow compatibility with
28
+ Addressable::URI. Pull request #67 by Ryan McKern.
29
+ * Use require_relative to reduce patch burden for vendored versions. Pull
30
+ Request #106 by David Rodríguez
31
+
32
+ Bug fixes:
33
+
34
+ * Stop wasting a connection when the keep-alive timeout is less than the idle
35
+ timeout. Pull request #115 by Yap Sok Ann.
36
+ * Improved use of URI#hostname for IPv6 connections. Pull request #76 by
37
+ Tomas Koutsky.
38
+ * Improved check for Process::RLIMIT_NOFILE support. Pull request #109 by Vít
39
+ Ondruch.
40
+ * Fix namespace in comments for escape/unescape wrappers. Pull request #114
41
+ by David Rodríguez.
42
+ * Fix History.txt timestamp for 3.0.0 release. Pull request #107 by Joe Van
43
+ Dyk.
44
+ * Fix link to PR #98 in 3.1.0 release notes. Pull request #110 by Justin
45
+ Reid.
46
+
47
+ Other:
48
+
49
+ * Updated Net::HTTP::Persistent#reconnect documentation to indicate that all
50
+ connections are reset. Issue #117 by Taisuke Miyazaki.
51
+
52
+ === 3.1.0 / 2019-07-24
53
+
54
+ New features:
55
+ * Support ruby 2.6 Net::HTTP#write_timeout=. Pull request #99 by Víctor
56
+ Roldán Betancort.
57
+ * Support setting TLS min/max version. Pull request #94 by Bart.
58
+
59
+ Bug fixes:
60
+ * Reduce potential for memory leak through Hash default proc bindings. Pull
61
+ request #64 by Dominic Metzger.
62
+ * Test proxy auto detection from no_proxy in ENV. Pull request #60 by
63
+ HINOHARA Hiroshi.
64
+ * Add missing timestamp for 3.0 release. Pull request #78 by Joe Van Dyk.
65
+ * Support IPv6 URLs in proxy checks. Pull request #82 by Nicolás Sanguinetti.
66
+ * Use Net::HTTPGenericRequest#method to check idempotence for improved
67
+ compatibility. Pull request #83 by Fotos Georgiadis.
68
+ * Run net-http-pipeline tests in travis. Pull request #86 by T.J. Schuck.
69
+ * Correct +no_proxy+ support to override Net::HTTP proxy fallback. Pull
70
+ request #88 by Jared Kauppila.
71
+ * Mitigate memory leak when combined with faraday. Pull request #105 by Yohei
72
+ Kitamura.
73
+ * Set default connection pool size for Windows. Pull request #90 by Jared
74
+ Kauppila.
75
+ * Fix missing +name:+ argument in documentation. Pull requests #85 by T.J.
76
+ Schuck, #84 by James White.
77
+ * Fix memory leak from connection pooling. Pull request #98 by Aaron
78
+ Patterson.
79
+ * Update tests for minitest assert_equal deprecation. Pull request #92 by
80
+ Olle Jonsson.
81
+ * Fix typo in Net::HTTP::Persistent#pipeline. Pull request #91 by Kazuma
82
+ Furuhashi.
83
+
84
+ Other:
85
+ * Added bundler hoe plugin. Pull request #103 by Michael Grosser.
86
+ * Updated ruby versions in Travis CI. Pull request #93 by Olle Jonsson. Pull
87
+ request #103 by Michael Grosser.
88
+
89
+ === 3.0 / 2016-10-05
2
90
 
3
91
  Breaking changes:
4
92
 
data/Manifest.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  .autotest
2
2
  .gemtest
3
- .travis.yml
3
+ Gemfile
4
4
  History.txt
5
5
  Manifest.txt
6
6
  README.rdoc
data/README.rdoc CHANGED
@@ -1,27 +1,27 @@
1
1
  = net-http-persistent
2
2
 
3
- * http://docs.seattlerb.org/net-http-persistent
4
- * https://github.com/drbrain/net-http-persistent
3
+ home :: https://github.com/drbrain/net-http-persistent
4
+ rdoc :: https://rdoc.info/gems/net-http-persistent
5
5
 
6
6
  == DESCRIPTION:
7
7
 
8
- Manages persistent connections using Net::HTTP plus a speed fix for Ruby 1.8.
9
- It's thread-safe too!
8
+ Manages persistent connections using Net::HTTP including a thread pool for
9
+ connecting to multiple hosts.
10
10
 
11
11
  Using persistent HTTP connections can dramatically increase the speed of HTTP.
12
12
  Creating a new HTTP connection for every request involves an extra TCP
13
13
  round-trip and causes TCP congestion avoidance negotiation to start over.
14
14
 
15
15
  Net::HTTP supports persistent connections with some API methods but does not
16
- handle reconnection gracefully. Net::HTTP::Persistent supports reconnection
17
- and retry according to RFC 2616.
16
+ make setting up a single persistent connection or managing multiple
17
+ connections easy. Net::HTTP::Persistent wraps Net::HTTP and allows you to
18
+ focus on how to make HTTP requests.
18
19
 
19
20
  == FEATURES/PROBLEMS:
20
21
 
21
- * Supports SSL
22
+ * Supports TLS with secure defaults
22
23
  * Thread-safe
23
24
  * Pure ruby
24
- * Timeout-less speed boost for Ruby 1.8 (by Aaron Patterson)
25
25
 
26
26
  == SYNOPSIS
27
27
 
@@ -60,7 +60,7 @@ including SSL connection verification, header handling and tunable options.
60
60
 
61
61
  (The MIT License)
62
62
 
63
- Copyright (c) 2010 Eric Hodel, Aaron Patterson
63
+ Copyright (c) Eric Hodel, Aaron Patterson
64
64
 
65
65
  Permission is hereby granted, free of charge, to any person obtaining
66
66
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,27 +1,25 @@
1
1
  # -*- ruby -*-
2
2
 
3
- require 'rubygems'
4
- require 'hoe'
5
-
6
- Hoe.plugin :git
7
- Hoe.plugin :minitest
8
- Hoe.plugin :travis
9
-
10
- Hoe.spec 'net-http-persistent' do
11
- developer 'Eric Hodel', 'drbrain@segment7.net'
12
-
13
- self.readme_file = 'README.rdoc'
14
- self.extra_rdoc_files += Dir['*.rdoc']
15
-
16
- self.require_ruby_version '~> 2.1'
17
-
18
- license 'MIT'
19
-
20
- rdoc_locations <<
21
- 'docs.seattlerb.org:/data/www/docs.seattlerb.org/net-http-persistent/'
22
-
23
- dependency 'connection_pool', '~> 2.2'
24
- dependency 'minitest', '~> 5.2', :development
3
+ require "bundler/gem_tasks"
4
+
5
+ require "rake/testtask"
6
+
7
+ Rake::TestTask.new
8
+
9
+ require "rake/manifest"
10
+
11
+ Rake::Manifest::Task.new do |t|
12
+ t.patterns = [
13
+ ".autotest",
14
+ ".gemtest",
15
+ ".travis.yml",
16
+ "Gemfile",
17
+ "History.txt",
18
+ "Manifest.txt",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "{test,lib}/**/*"
22
+ ]
25
23
  end
26
24
 
27
25
  # vim: syntax=Ruby
@@ -25,6 +25,7 @@ class Net::HTTP::Persistent::Connection # :nodoc:
25
25
  ensure
26
26
  reset
27
27
  end
28
+ alias_method :close, :finish
28
29
 
29
30
  def reset
30
31
  @last_use = Net::HTTP::Persistent::EPOCH
@@ -11,17 +11,32 @@ class Net::HTTP::Persistent::Pool < ConnectionPool # :nodoc:
11
11
  end
12
12
 
13
13
  def checkin net_http_args
14
- stack = Thread.current[@key][net_http_args] ||= []
14
+ if net_http_args.is_a?(Hash) && net_http_args.size == 1 && net_http_args[:force]
15
+ # ConnectionPool 2.4+ calls `checkin(force: true)` after fork.
16
+ # When this happens, we should remove all connections from Thread.current
17
+ if stacks = Thread.current[@key]
18
+ stacks.each do |http_args, connections|
19
+ connections.each do |conn|
20
+ @available.push conn, connection_args: http_args
21
+ end
22
+ connections.clear
23
+ end
24
+ end
25
+ else
26
+ stack = Thread.current[@key][net_http_args] ||= []
15
27
 
16
- raise ConnectionPool::Error, 'no connections are checked out' if
17
- stack.empty?
28
+ raise ConnectionPool::Error, 'no connections are checked out' if
29
+ stack.empty?
18
30
 
19
- conn = stack.pop
31
+ conn = stack.pop
20
32
 
21
- if stack.empty?
22
- @available.push conn, connection_args: net_http_args
23
- end
33
+ if stack.empty?
34
+ @available.push conn, connection_args: net_http_args
24
35
 
36
+ Thread.current[@key].delete(net_http_args)
37
+ Thread.current[@key] = nil if Thread.current[@key].empty?
38
+ end
39
+ end
25
40
  nil
26
41
  end
27
42
 
@@ -46,5 +61,5 @@ class Net::HTTP::Persistent::Pool < ConnectionPool # :nodoc:
46
61
  end
47
62
  end
48
63
 
49
- require 'net/http/persistent/timed_stack_multi'
64
+ require_relative 'timed_stack_multi'
50
65
 
@@ -1,10 +1,20 @@
1
1
  class Net::HTTP::Persistent::TimedStackMulti < ConnectionPool::TimedStack # :nodoc:
2
2
 
3
+ ##
4
+ # Returns a new hash that has arrays for keys
5
+ #
6
+ # Using a class method to limit the bindings referenced by the hash's
7
+ # default_proc
8
+
9
+ def self.hash_of_arrays # :nodoc:
10
+ Hash.new { |h,k| h[k] = [] }
11
+ end
12
+
3
13
  def initialize(size = 0, &block)
4
14
  super
5
15
 
6
16
  @enqueued = 0
7
- @ques = Hash.new { |h, k| h[k] = [] }
17
+ @ques = self.class.hash_of_arrays
8
18
  @lru = {}
9
19
  @key = :"connection_args-#{object_id}"
10
20
  end