async-pool 0.2.0 → 0.3.0

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