async-pool 0.2.0 → 0.3.0

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: 6ad379b03305a3175cb279cdb733802af5d18c8dd4286aa405af0266326ded2e
4
- data.tar.gz: a14e523cbf72c0be0153c5281a66e4b15b97bbf46f3ebc1f4f2903b642d84d32
3
+ metadata.gz: 731a576d4114fb425b42892ddcaf142b716f8917bfd2b71b350b20693695d89c
4
+ data.tar.gz: a4741eac4eb25dafe84c6581c1b0483c0ff3f6e26a9477ea96af245d74f1130f
5
5
  SHA512:
6
- metadata.gz: e6977d59abe105dc69cf481500307f1105d5fb3aaecf44804c71202892fa59869b23672b059d396ae1d538d9859a372a4ddb3d21d75a000f172f0ec6a83df9b6
7
- data.tar.gz: df123b18dd484354fd59e356f0957e2b95965cf28889592191b92b6f2280cbd96f5d035c3229734382e5d306882b3acfc96d614dff60cbb48f546871b7914f26
6
+ metadata.gz: ca20d5353fac4bb839fa6b846a48c89ef48dc8ad86632420e504a4eb079e1be6d3cdd99d57f85238a3d5c93fa00e878dc297444bf188a12243bcc907cee6bf47
7
+ data.tar.gz: adf70450fdc1ca0def9eb6548d023bacfde995e2446f9b88db56ebc2f1f1e91436a780105ceec41580fe52c6acfafe64c265e02858b3a92802a93b43964faec8
@@ -0,0 +1,51 @@
1
+ name: Development
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ${{matrix.os}}-latest
8
+ continue-on-error: ${{matrix.experimental}}
9
+
10
+ strategy:
11
+ matrix:
12
+ os:
13
+ - ubuntu
14
+ - macos
15
+
16
+ ruby:
17
+ - 2.5
18
+ - 2.6
19
+ - 2.7
20
+
21
+ experimental: [false]
22
+ env: [""]
23
+
24
+ include:
25
+ - os: ubuntu
26
+ ruby: truffleruby
27
+ experimental: true
28
+ env: JRUBY_OPTS="--debug -X+O"
29
+ - os: ubuntu
30
+ ruby: jruby
31
+ experimental: true
32
+ - os: ubuntu
33
+ ruby: head
34
+ experimental: true
35
+ - os: ubuntu
36
+ ruby: 2.6
37
+ experimental: false
38
+ env: COVERAGE=PartialSummary,Coveralls
39
+
40
+ steps:
41
+ - uses: actions/checkout@v1
42
+ - uses: ruby/setup-ruby@v1
43
+ with:
44
+ ruby-version: ${{matrix.ruby}}
45
+
46
+ - name: Install dependencies
47
+ run: ${{matrix.env}} bundle install
48
+
49
+ - name: Run tests
50
+ timeout-minutes: 5
51
+ run: ${{matrix.env}} bundle exec rspec
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ # gem "async", path: "../async"
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Provides support for connection pooling both singleplex and multiplex resources.
4
4
 
5
- [![Build Status](https://travis-ci.com/socketry/async-pool.svg)](https://travis-ci.com/socketry/async-pool)
5
+ [![Actions Status](https://github.com/socketry/async-pool/workflows/Development/badge.svg)](https://github.com/socketry/async-pool/actions?workflow=Development)
6
6
 
7
7
  ## Installation
8
8
 
data/async-pool.gemspec CHANGED
@@ -17,12 +17,12 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency("async", "~> 1.8")
20
+ spec.add_dependency("async", "~> 1.25")
21
21
 
22
22
  spec.add_development_dependency "async-rspec", "~> 1.1"
23
23
 
24
24
  spec.add_development_dependency "covered"
25
25
  spec.add_development_dependency "bundler"
26
26
  spec.add_development_dependency "rspec", "~> 3.6"
27
- spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "bake-bundler"
28
28
  end
@@ -40,6 +40,8 @@ module Async
40
40
 
41
41
  @constructor = constructor
42
42
  @guard = Async::Semaphore.new(1)
43
+
44
+ @gardener = nil
43
45
  end
44
46
 
45
47
  # @attr [Hash<Resource, Integer>] all allocated resources, and their associated usage.
@@ -97,6 +99,8 @@ module Async
97
99
  def close
98
100
  @resources.each_key(&:close)
99
101
  @resources.clear
102
+
103
+ @gardener&.stop
100
104
  end
101
105
 
102
106
  def to_s
@@ -142,6 +146,19 @@ module Async
142
146
 
143
147
  protected
144
148
 
149
+ def start_gardener
150
+ return if @gardener
151
+
152
+ Async(transient: true) do |task|
153
+ @gardener = task
154
+
155
+ Task.yield
156
+ ensure
157
+ @gardener = nil
158
+ self.close
159
+ end
160
+ end
161
+
145
162
  def usage_string
146
163
  "#{@resources.size}/#{@limit || '∞'}"
147
164
  end
@@ -177,6 +194,8 @@ module Async
177
194
  end
178
195
 
179
196
  def create_resource
197
+ self.start_gardener
198
+
180
199
  # This might return nil, which means creating the resource failed.
181
200
  if resource = @constructor.call
182
201
  @resources[resource] = 1
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module Pool
23
- VERSION = "0.2.0"
23
+ VERSION = "0.3.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-pool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-22 00:00:00.000000000 Z
11
+ date: 2020-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '1.25'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '1.25'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.6'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake
84
+ name: bake-bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -102,12 +102,11 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - ".editorconfig"
105
+ - ".github/workflows/development.yml"
105
106
  - ".gitignore"
106
107
  - ".rspec"
107
- - ".travis.yml"
108
108
  - Gemfile
109
109
  - README.md
110
- - Rakefile
111
110
  - async-pool.gemspec
112
111
  - lib/async/pool.rb
113
112
  - lib/async/pool/controller.rb
@@ -131,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
130
  - !ruby/object:Gem::Version
132
131
  version: '0'
133
132
  requirements: []
134
- rubygems_version: 3.0.4
133
+ rubygems_version: 3.1.2
135
134
  signing_key:
136
135
  specification_version: 4
137
136
  summary: A Redis client library.
data/.travis.yml DELETED
@@ -1,20 +0,0 @@
1
- language: ruby
2
- dist: xenial
3
- cache: bundler
4
-
5
- matrix:
6
- include:
7
- - rvm: 2.3
8
- - rvm: 2.4
9
- - rvm: 2.5
10
- - rvm: 2.6
11
- - rvm: 2.6
12
- env: COVERAGE=BriefSummary,Coveralls
13
- - rvm: ruby-head
14
- - rvm: truffleruby
15
- - rvm: jruby-head
16
- env: JRUBY_OPTS="--debug -X+O"
17
- allow_failures:
18
- - rvm: ruby-head
19
- - rvm: truffleruby
20
- - rvm: jruby-head
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new
5
-
6
- task :default => :spec