async-pool 0.7.1 → 0.8.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
- checksums.yaml.gz.sig +0 -0
- data/lib/async/pool/controller.rb +30 -13
- data/lib/async/pool/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb369c01748a2f2c555a8549a2280c1e39b30a3c7f7918e4e426a79d7eec41ce
|
4
|
+
data.tar.gz: 5b8d9ac62de382ce06753d04512708cca9c969c7eaf368a1f7b88fa12b6d1eae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b18bfe389d25644da07f2e8f85bd92891f7066e1c9b67d6ed91e9a9de1e8d47bcaf4e612c7388619a8693c2f6ee2fc85a09f0cada7647f53a2de5714dbaac30a
|
7
|
+
data.tar.gz: 0bb8ca350d3942057cfcc91ff957382512ee0e1e012e20344ba71b6bf09df7a353c65d4996341fc8407d99629a8286346a6412a4e6bc6a0199dcaf67e11d069f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -154,20 +154,18 @@ module Async
|
|
154
154
|
retire(resource) unless processed
|
155
155
|
end
|
156
156
|
|
157
|
+
private def drain
|
158
|
+
# Enumerate all existing resources and retire them:
|
159
|
+
while resource = acquire_existing_resource
|
160
|
+
retire(resource)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
157
164
|
# Close all resources in the pool.
|
158
165
|
def close
|
159
|
-
|
160
|
-
|
161
|
-
while pair = @resources.shift
|
162
|
-
resource, usage = pair
|
163
|
-
|
164
|
-
if usage > 0
|
165
|
-
Console.warn(self, resource: resource, usage: usage) {"Closing resource while still in use!"}
|
166
|
-
end
|
167
|
-
|
168
|
-
resource.close
|
169
|
-
end
|
166
|
+
self.drain
|
170
167
|
|
168
|
+
@available.clear
|
171
169
|
@gardener&.stop
|
172
170
|
end
|
173
171
|
|
@@ -224,6 +222,8 @@ module Async
|
|
224
222
|
def start_gardener
|
225
223
|
return if @gardener
|
226
224
|
|
225
|
+
@gardener = true
|
226
|
+
|
227
227
|
Async(transient: true, annotation: "#{self.class} Gardener") do |task|
|
228
228
|
@gardener = task
|
229
229
|
|
@@ -319,7 +319,7 @@ module Async
|
|
319
319
|
resource = nil
|
320
320
|
|
321
321
|
@guard.acquire do
|
322
|
-
resource =
|
322
|
+
resource = acquire_or_create_resource
|
323
323
|
end
|
324
324
|
|
325
325
|
return resource
|
@@ -330,7 +330,24 @@ module Async
|
|
330
330
|
|
331
331
|
private
|
332
332
|
|
333
|
-
|
333
|
+
# Acquire an existing resource with zero usage.
|
334
|
+
# If there are resources that are in use, wait until they are released.
|
335
|
+
def acquire_existing_resource
|
336
|
+
while @resources.any?
|
337
|
+
@resources.each do |resource, usage|
|
338
|
+
if usage == 0
|
339
|
+
return resource
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
343
|
+
@notification.wait
|
344
|
+
end
|
345
|
+
|
346
|
+
# Only when the pool has been completely drained, return nil:
|
347
|
+
return nil
|
348
|
+
end
|
349
|
+
|
350
|
+
def acquire_or_create_resource
|
334
351
|
while resource = @available.last
|
335
352
|
if usage = @resources[resource] and usage < resource.concurrency
|
336
353
|
if resource.viable?
|
data/lib/async/pool/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -40,7 +40,7 @@ cert_chain:
|
|
40
40
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
41
41
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
42
42
|
-----END CERTIFICATE-----
|
43
|
-
date: 2024-08-
|
43
|
+
date: 2024-08-07 00:00:00.000000000 Z
|
44
44
|
dependencies:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: async
|
metadata.gz.sig
CHANGED
Binary file
|