async-pool 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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