async-pool 0.8.1 → 0.9.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: 958468bc2e159bc6304f603d522ccc08fe967469bd463a992484f237e880ddf3
4
+ data.tar.gz: 2fcd90d3589cb71a9395b0e9b9810dc860bda4971c538e754d7a4113e1628ff0
5
5
  SHA512:
6
- metadata.gz: 3e472af40018c10b2a8d726fc31b04ea96557d790c55e4fe6449a891b048c96da66794926eb7ca726195f778d0bea1e6c9d762b274a06a0922f382d5a8794ab7
7
- data.tar.gz: 8abacfdcb4b32eb573e0108aecdbdd7ff385386e8a8de2710550b976a81467286e73fa8f36292162e801d5f000fc2a222aabf99f7cf334a35d7e22e47833ded1
6
+ metadata.gz: 5a03eb3421cd11bc52ec995ddadd67c9e717763a69dbed5d8d27248f0b93ec9e824765eef5a8d02719968fc20f974d4b7690ec8a1e66fa6cc5d103f95f56ce0d
7
+ data.tar.gz: f4f19064995d171e013e5d80c90343387c733e9f13a4acd846c1534aee573ff7f75c5d3d41907919bdd83ff09bd1112e6a9d7f063ed66e4e072e91648220ae2b
checksums.yaml.gz.sig CHANGED
Binary file
@@ -5,14 +5,14 @@
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"
15
+ require "metrics"
16
16
 
17
17
  module Async
18
18
  module Pool
@@ -29,7 +29,7 @@ module Async
29
29
  # @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
30
  # @parameter concurrency [Integer] The maximum number of concurrent tasks that can be creating a new resource.
31
31
  # @parameter policy [Policy] The pool policy.
32
- def initialize(constructor, limit: nil, concurrency: (limit || 1), policy: nil)
32
+ def initialize(constructor, limit: nil, concurrency: (limit || 1), policy: nil, tags: nil)
33
33
  @constructor = constructor
34
34
  @limit = limit
35
35
 
@@ -39,6 +39,8 @@ module Async
39
39
  @policy = policy
40
40
  @gardener = nil
41
41
 
42
+ @tags = Metrics::Tags.normalize(tags)
43
+
42
44
  # All available resources:
43
45
  @resources = {}
44
46
 
@@ -96,6 +98,9 @@ module Async
96
98
  # @attribute [Hash(Resource, Integer)] all allocated resources, and their associated usage.
97
99
  attr :resources
98
100
 
101
+ # @attribute [Array(String)] The name of the pool.
102
+ attr_accessor :tags
103
+
99
104
  # The number of resources in the pool.
100
105
  def size
101
106
  @resources.size
@@ -388,40 +393,42 @@ module Async
388
393
  concurrency: @guard.limit,
389
394
  size: @resources.size,
390
395
  limit: @limit,
396
+ tags: @tags,
391
397
  }
392
398
 
393
- Traces.trace('async.pool.create', attributes: attributes) {super}
399
+ Traces.trace("async.pool.create", attributes: attributes) {super}
394
400
  end
395
401
 
396
402
  def drain(...)
397
403
  attributes = {
398
404
  size: @resources.size,
405
+ tags: @tags,
399
406
  }
400
407
 
401
- Traces.trace('async.pool.drain', attributes: attributes) {super}
408
+ Traces.trace("async.pool.drain", attributes: attributes) {super}
402
409
  end
403
410
  end
404
411
 
405
412
  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.')
413
+ ACQUIRE_COUNT = Metrics.metric("async.pool.acquire", :counter, description: "Number of times a resource was invoked.")
414
+ RELEASE_COUNT = Metrics.metric("async.pool.release", :counter, description: "Number of times a resource was released.")
415
+ RETIRE_COUNT = Metrics.metric("async.pool.retire", :counter, description: "Number of times a resource was retired.")
409
416
 
410
417
  def acquire(...)
411
- ACQUIRE_COUNT.emit(1)
418
+ ACQUIRE_COUNT.emit(1, tags: @tags)
412
419
 
413
420
  super
414
421
  end
415
422
 
416
423
  def release(...)
417
424
  super.tap do
418
- RELEASE_COUNT.emit(1)
425
+ RELEASE_COUNT.emit(1, tags: @tags)
419
426
  end
420
427
  end
421
428
 
422
429
  def retire(...)
423
430
  super.tap do
424
- RETIRE_COUNT.emit(1)
431
+ RETIRE_COUNT.emit(1, tags: @tags)
425
432
  end
426
433
  end
427
434
  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.9.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.9.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-12 00:00:00.000000000 Z
44
44
  dependencies:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: async
@@ -60,16 +60,16 @@ dependencies:
60
60
  name: metrics
61
61
  requirement: !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - ">="
63
+ - - "~>"
64
64
  - !ruby/object:Gem::Version
65
- version: '0'
65
+ version: '0.11'
66
66
  type: :runtime
67
67
  prerelease: false
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - ">="
70
+ - - "~>"
71
71
  - !ruby/object:Gem::Version
72
- version: '0'
72
+ version: '0.11'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: traces
75
75
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file