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 +4 -4
- data/.github/workflows/development.yml +51 -0
- data/Gemfile +2 -0
- data/README.md +1 -1
- data/async-pool.gemspec +2 -2
- data/lib/async/pool/controller.rb +19 -0
- data/lib/async/pool/version.rb +1 -1
- metadata +7 -8
- data/.travis.yml +0 -20
- data/Rakefile +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 731a576d4114fb425b42892ddcaf142b716f8917bfd2b71b350b20693695d89c
|
4
|
+
data.tar.gz: a4741eac4eb25dafe84c6581c1b0483c0ff3f6e26a9477ea96af245d74f1130f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
-
[](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.
|
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 "
|
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
|
data/lib/async/pool/version.rb
CHANGED
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.
|
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:
|
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.
|
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.
|
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:
|
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.
|
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
|