async-pool 0.8.1 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d877fb908af8482011de394630982c4c593e36a5efd9ef19a885bba5774f6e8
4
- data.tar.gz: be2d7efd8c65a9eec5237acc4f432e76a3f401da0b13e7e10b089f9849382f2a
3
+ metadata.gz: ac992b5e13d56d0441655030e1ac893d10ceda32d022b38daf45e12539b8199e
4
+ data.tar.gz: 14d3a0585ad5d89f6b5016858b8fba5096bb71a703f9fafa1fcfe927ccad3355
5
5
  SHA512:
6
- metadata.gz: 3e472af40018c10b2a8d726fc31b04ea96557d790c55e4fe6449a891b048c96da66794926eb7ca726195f778d0bea1e6c9d762b274a06a0922f382d5a8794ab7
7
- data.tar.gz: 8abacfdcb4b32eb573e0108aecdbdd7ff385386e8a8de2710550b976a81467286e73fa8f36292162e801d5f000fc2a222aabf99f7cf334a35d7e22e47833ded1
6
+ metadata.gz: f9ca9ce26be39afc0986243da26a97432ebc1761ba71e9f4ac2de8e7a9fdad161600276430a52737ddac43226c012c465c471c74442c4f5e146a4b20d530a5b1
7
+ data.tar.gz: bd9e8f5f3a90c08ae3faadfcd5d7ef1db9063d57b25e8ed2f981ccdba31968cfffdc98e1456fa01b5f42f1d112d1db560d69896fd7e9319225ac916aa8787422
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 'console/logger'
8
+ require "console/logger"
9
9
 
10
- require 'async'
11
- require 'async/notification'
12
- require 'async/semaphore'
10
+ require "async"
11
+ require "async/notification"
12
+ require "async/semaphore"
13
13
 
14
- require 'traces'
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
@@ -390,6 +394,8 @@ module Async
390
394
  limit: @limit,
391
395
  }
392
396
 
397
+ @attributes.merge!(@tags) if @tags
398
+
393
399
  Traces.trace('async.pool.create', attributes: attributes) {super}
394
400
  end
395
401
 
@@ -398,31 +404,46 @@ module Async
398
404
  size: @resources.size,
399
405
  }
400
406
 
407
+ @attributes.merge!(@tags) if @tags
408
+
401
409
  Traces.trace('async.pool.drain', attributes: attributes) {super}
402
410
  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
411
 
410
412
  def acquire(...)
411
- ACQUIRE_COUNT.emit(1)
413
+ attributes = {
414
+ concurrency: @guard.limit,
415
+ size: @resources.size,
416
+ limit: @limit,
417
+ }
412
418
 
413
- super
419
+ @attributes.merge!(@tags) if @tags
420
+
421
+ Traces.trace('async.pool.acquire', attributes: attributes) {super}
414
422
  end
415
423
 
416
424
  def release(...)
417
- super.tap do
418
- RELEASE_COUNT.emit(1)
419
- end
425
+ attributes = {
426
+ concurrency: @guard.limit,
427
+ size: @resources.size,
428
+ limit: @limit,
429
+ }
430
+
431
+ @attributes.merge!(@tags) if @tags
432
+
433
+ Traces.trace('async.pool.release', attributes: attributes) {super}
420
434
  end
421
435
 
422
436
  def retire(...)
423
- super.tap do
424
- RETIRE_COUNT.emit(1)
425
- end
437
+ attributes = {
438
+ concurrency: @guard.limit,
439
+ size: @resources.size,
440
+ limit: @limit,
441
+ **@tags,
442
+ }
443
+
444
+ @attributes.merge!(@tags) if @tags
445
+
446
+ Traces.trace('async.pool.retire', attributes: attributes) {super}
426
447
  end
427
448
  end
428
449
  end
@@ -3,10 +3,10 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2019-2024, by Samuel Williams.
5
5
 
6
- require 'console/logger'
6
+ require "console/logger"
7
7
 
8
- require 'async/notification'
9
- require 'async/semaphore'
8
+ require "async/notification"
9
+ require "async/semaphore"
10
10
 
11
11
  module Async
12
12
  module Pool
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Async
7
7
  module Pool
8
- VERSION = "0.8.1"
8
+ VERSION = "0.10.0"
9
9
  end
10
10
  end
data/lib/async/pool.rb CHANGED
@@ -3,8 +3,8 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2019-2024, by Samuel Williams.
5
5
 
6
- require_relative 'pool/version'
7
- require_relative 'pool/controller'
6
+ require_relative "pool/version"
7
+ require_relative "pool/controller"
8
8
 
9
9
  # @namespace
10
10
  module Async
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.8.1
4
+ version: 0.10.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-26 00:00:00.000000000 Z
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