async-pool 0.3.6 → 0.3.7
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/lib/async/pool/controller.rb +30 -21
- data/lib/async/pool/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36dfa0c90392d3f6e3582b1bdd3e2fdb7667ddccb601fb4dd34df3e8aa3baa2e
|
4
|
+
data.tar.gz: bea9381873eed77a2fd9dcb4d90190e9fa3ebbbba0f38c5628ee369f5da58a97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ece710c9d7ec8fcb62b92ae9fb19775de4f781f886a3b9e285f08a0a9483599bc15e6b5d727df7697202f1b11381cba5ebb731d84ad9236abc4c29d8293a508
|
7
|
+
data.tar.gz: 02d545782a0b63b7ba74ce19a450ab7851886548eb71805c2fd9e5b71f8daf838c5dfbd5013b6bec2b639a2f630a5dfc846baaf9b28581cf53cb26d9b975290d
|
@@ -265,36 +265,45 @@ module Async
|
|
265
265
|
|
266
266
|
# @returns [Object] An existing resource in a "used" state.
|
267
267
|
def available_resource
|
268
|
+
resource = nil
|
269
|
+
|
268
270
|
@guard.acquire do
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
271
|
+
resource = get_resource
|
272
|
+
end
|
273
|
+
|
274
|
+
return resource
|
275
|
+
rescue Exception
|
276
|
+
reuse(resource) if resource
|
277
|
+
raise
|
278
|
+
end
|
279
|
+
|
280
|
+
private def get_resource
|
281
|
+
while resource = @available.last
|
282
|
+
if usage = @resources[resource] and usage < resource.concurrency
|
283
|
+
if resource.viable?
|
284
|
+
usage = (@resources[resource] += 1)
|
285
|
+
|
286
|
+
if usage == resource.concurrency
|
287
|
+
# The resource is used up to it's limit:
|
282
288
|
@available.pop
|
283
289
|
end
|
290
|
+
|
291
|
+
return resource
|
284
292
|
else
|
285
|
-
|
293
|
+
retire(resource)
|
286
294
|
@available.pop
|
287
295
|
end
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
Console.logger.debug(self) {"No available resources, allocating new one..."}
|
292
|
-
|
293
|
-
return create_resource
|
296
|
+
else
|
297
|
+
# The resource has been removed already, so skip it and remove it from the availability list.
|
298
|
+
@available.pop
|
294
299
|
end
|
295
300
|
end
|
296
301
|
|
297
|
-
|
302
|
+
if @limit.nil? or @resources.size < @limit
|
303
|
+
Console.logger.debug(self) {"No available resources, allocating new one..."}
|
304
|
+
|
305
|
+
return create_resource
|
306
|
+
end
|
298
307
|
end
|
299
308
|
end
|
300
309
|
end
|
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.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
|
-
rubygems_version: 3.
|
141
|
+
rubygems_version: 3.3.0.dev
|
142
142
|
signing_key:
|
143
143
|
specification_version: 4
|
144
144
|
summary: A singleplex and multiplex resource pool for implementing robust clients.
|