net-http-persistent 3.0.1 → 4.0.2

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: 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