async-pool 0.8.1 → 0.10.1
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 +36 -23
- data/lib/async/pool/resource.rb +3 -3
- data/lib/async/pool/version.rb +1 -1
- data/lib/async/pool.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +2 -16
- 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: 003c7bc5ebfd789e4350f68af08301a24628b8782d1e9255ea69e6a92c74198a
|
4
|
+
data.tar.gz: 064e1ab27d50b280718157bf8bef400ca0c0850bed547983ae945b78b59c159d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19ea0dc13e3a20bff67f5f3948187e6dc088acef4fb18a3d57a6c8f7c9d24bd4cf9dbd81128f59c818a9e55b216904e512b99c85667a024d24b7f070831342b8
|
7
|
+
data.tar.gz: e39da4c0bc5c38cb7c5a1887976b08a5b0ec4c28195285e4a47b82d609f126326dbf2b3b5267c62dbe3615fd27c4f0a9afc7e07784840173bcde3ad3e652c20f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -5,14 +5,13 @@
|
|
5
5
|
# Copyright, 2020, by Simon Perepelitsa.
|
6
6
|
# Copyright, 2024, by Thomas Morgan.
|
7
7
|
|
8
|
-
require
|
8
|
+
require "console/logger"
|
9
9
|
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
10
|
+
require "async"
|
11
|
+
require "async/notification"
|
12
|
+
require "async/semaphore"
|
13
13
|
|
14
|
-
require
|
15
|
-
require 'metrics'
|
14
|
+
require "traces"
|
16
15
|
|
17
16
|
module Async
|
18
17
|
module Pool
|
@@ -29,7 +28,7 @@ module Async
|
|
29
28
|
# @parameter limit [Integer | Nil] The maximum number of resources that this pool can have at any given time. If nil, the pool can have an unlimited number of resources.
|
30
29
|
# @parameter concurrency [Integer] The maximum number of concurrent tasks that can be creating a new resource.
|
31
30
|
# @parameter policy [Policy] The pool policy.
|
32
|
-
def initialize(constructor, limit: nil, concurrency: (limit || 1), policy: nil)
|
31
|
+
def initialize(constructor, limit: nil, concurrency: (limit || 1), policy: nil, tags: nil)
|
33
32
|
@constructor = constructor
|
34
33
|
@limit = limit
|
35
34
|
|
@@ -39,6 +38,8 @@ module Async
|
|
39
38
|
@policy = policy
|
40
39
|
@gardener = nil
|
41
40
|
|
41
|
+
@tags = tags
|
42
|
+
|
42
43
|
# All available resources:
|
43
44
|
@resources = {}
|
44
45
|
|
@@ -96,6 +97,9 @@ module Async
|
|
96
97
|
# @attribute [Hash(Resource, Integer)] all allocated resources, and their associated usage.
|
97
98
|
attr :resources
|
98
99
|
|
100
|
+
# @attribute [Array(String)] The name of the pool.
|
101
|
+
attr_accessor :tags
|
102
|
+
|
99
103
|
# The number of resources in the pool.
|
100
104
|
def size
|
101
105
|
@resources.size
|
@@ -386,10 +390,10 @@ module Async
|
|
386
390
|
def create_resource(...)
|
387
391
|
attributes = {
|
388
392
|
concurrency: @guard.limit,
|
389
|
-
size: @resources.size,
|
390
|
-
limit: @limit,
|
391
393
|
}
|
392
394
|
|
395
|
+
attributes.merge!(@tags) if @tags
|
396
|
+
|
393
397
|
Traces.trace('async.pool.create', attributes: attributes) {super}
|
394
398
|
end
|
395
399
|
|
@@ -398,31 +402,40 @@ module Async
|
|
398
402
|
size: @resources.size,
|
399
403
|
}
|
400
404
|
|
405
|
+
attributes.merge!(@tags) if @tags
|
406
|
+
|
401
407
|
Traces.trace('async.pool.drain', attributes: attributes) {super}
|
402
408
|
end
|
403
|
-
end
|
404
|
-
|
405
|
-
Metrics::Provider(self) do
|
406
|
-
ACQUIRE_COUNT = Metrics.metric('async.pool.acquire', :counter, description: 'Number of times a resource was invoked.')
|
407
|
-
RELEASE_COUNT = Metrics.metric('async.pool.release', :counter, description: 'Number of times a resource was released.')
|
408
|
-
RETIRE_COUNT = Metrics.metric('async.pool.retire', :counter, description: 'Number of times a resource was retired.')
|
409
409
|
|
410
410
|
def acquire(...)
|
411
|
-
|
411
|
+
attributes = {
|
412
|
+
size: @resources.size,
|
413
|
+
limit: @limit,
|
414
|
+
}
|
415
|
+
|
416
|
+
attributes.merge!(@tags) if @tags
|
412
417
|
|
413
|
-
super
|
418
|
+
Traces.trace('async.pool.acquire', attributes: attributes) {super}
|
414
419
|
end
|
415
420
|
|
416
421
|
def release(...)
|
417
|
-
|
418
|
-
|
419
|
-
|
422
|
+
attributes = {
|
423
|
+
size: @resources.size,
|
424
|
+
}
|
425
|
+
|
426
|
+
attributes.merge!(@tags) if @tags
|
427
|
+
|
428
|
+
Traces.trace('async.pool.release', attributes: attributes) {super}
|
420
429
|
end
|
421
430
|
|
422
431
|
def retire(...)
|
423
|
-
|
424
|
-
|
425
|
-
|
432
|
+
attributes = {
|
433
|
+
size: @resources.size,
|
434
|
+
}
|
435
|
+
|
436
|
+
attributes.merge!(@tags) if @tags
|
437
|
+
|
438
|
+
Traces.trace('async.pool.retire', attributes: attributes) {super}
|
426
439
|
end
|
427
440
|
end
|
428
441
|
end
|
data/lib/async/pool/resource.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2019-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "console/logger"
|
7
7
|
|
8
|
-
require
|
9
|
-
require
|
8
|
+
require "async/notification"
|
9
|
+
require "async/semaphore"
|
10
10
|
|
11
11
|
module Async
|
12
12
|
module Pool
|
data/lib/async/pool/version.rb
CHANGED
data/lib/async/pool.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.10.1
|
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-
|
43
|
+
date: 2024-10-13 00:00:00.000000000 Z
|
44
44
|
dependencies:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: async
|
@@ -56,20 +56,6 @@ dependencies:
|
|
56
56
|
- - ">="
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
version: '1.25'
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: metrics
|
61
|
-
requirement: !ruby/object:Gem::Requirement
|
62
|
-
requirements:
|
63
|
-
- - ">="
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
type: :runtime
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: !ruby/object:Gem::Requirement
|
69
|
-
requirements:
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: '0'
|
73
59
|
- !ruby/object:Gem::Dependency
|
74
60
|
name: traces
|
75
61
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|