semian 0.25.2 → 0.25.4

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: e593c50ac71b0fe4e26c25eb90881c8490e6ac51597b1a788c03758587d399d9
4
- data.tar.gz: e0df4b912b506e6efb538b5fe683428a120a4035eb7d9fe6d3b9f4f9eeb6c439
3
+ metadata.gz: f4179609ac096cef76c5e8492229c7c374d1dbc26ae8c758ae79e18ab9595813
4
+ data.tar.gz: f6fe881485adcb7142e33d1bcb4036f3adc782c357f5c865aa2d67a97878118b
5
5
  SHA512:
6
- metadata.gz: 30a526607092b64545700c820b3767cb8ab0b4dd003557a0accb40c563e422c76a09f9a23f64c8b80b31422e9de70e8e63a696c87000abcb717f4f508d8e72a7
7
- data.tar.gz: 424a227d4565cfe851f2148eb41aa3a1e246ebe5f30bd29fef18639beccdda02259637177368357e0260e61abeb9186be339c751550a597cb5607f81ac53d419
6
+ metadata.gz: 5254f05b90dc20305c6cc0ee855d3a0593fe13f95648a523c281cdd9ac9056e138a124947137b028647dbc8b9b0c049fd387e8c5562032a5a5be622793f6741d
7
+ data.tar.gz: 5de64c3000d0f5d59d68df7ff4d67ecaee233c6528bb1498648f960bcd59dc6b43e543baf12a6e7927eabc0392bb44c2c1dbeb1d55861ef1a2515cb3f09cc32e
@@ -10,7 +10,7 @@ module Semian
10
10
 
11
11
  unless @force_config_validation
12
12
  Semian.logger.info(
13
- "Semian is running in log-mode for configuration validation. This means that Semian will not raise an error if the configuration is invalid. This is not recommended for production environments.\n\n[IMPORTANT] PLEASE UPDATE YOUR CONFIGURATION TO USE `force_config_validation: true` TO ENABLE STRICT CONFIGURATION VALIDATION.\n---\n",
13
+ "Semian Resource #{@name} is running in log-mode for configuration validation. This means that Semian will not raise an error if the configuration is invalid. This is not recommended for production environments.\n\n[IMPORTANT] PLEASE UPDATE YOUR CONFIGURATION TO USE `force_config_validation: true` TO ENABLE STRICT CONFIGURATION VALIDATION.\n---\n",
14
14
  )
15
15
  end
16
16
  end
@@ -29,6 +29,7 @@ module Semian
29
29
  end
30
30
 
31
31
  def raise_or_log_validation_required!(message)
32
+ message = "Semian Resource #{@name}: #{message}"
32
33
  if @force_config_validation
33
34
  raise ArgumentError, message
34
35
  else
@@ -126,6 +126,7 @@ module Semian
126
126
 
127
127
  module RedisClientPool
128
128
  include RedisClientCommon
129
+
129
130
  define_method(:semian_resource, Semian::Adapter.instance_method(:semian_resource))
130
131
  define_method(:clear_semian_resource, Semian::Adapter.instance_method(:clear_semian_resource))
131
132
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Semian
4
- VERSION = "0.25.2"
4
+ VERSION = "0.25.4"
5
5
  end
data/lib/semian.rb CHANGED
@@ -199,9 +199,9 @@ module Semian
199
199
  # If consumer who retrieved / registered by a Semian::Adapter, keep track
200
200
  # of who the consumer was so that we can clear the resource reference if needed.
201
201
  consumer = args.delete(:consumer)
202
- if consumer&.class&.include?(Semian::Adapter)
203
- consumers[name] ||= []
204
- consumers[name] << WeakRef.new(consumer)
202
+ if consumer&.class&.include?(Semian::Adapter) && !args[:dynamic]
203
+ consumer_set = (consumers[name] ||= ObjectSpace::WeakMap.new)
204
+ consumer_set[consumer] = true
205
205
  end
206
206
  self[name] || register(name, **args)
207
207
  end
@@ -233,14 +233,8 @@ module Semian
233
233
  resource = resources.delete(name)
234
234
  if resource
235
235
  resource.bulkhead&.unregister_worker
236
- consumers_for_resource = consumers.delete(name) || []
237
- consumers_for_resource.each do |consumer|
238
- if consumer.weakref_alive?
239
- consumer.clear_semian_resource
240
- end
241
- rescue WeakRef::RefError
242
- next
243
- end
236
+ consumers_for_resource = consumers.delete(name) || {}
237
+ consumers_for_resource.each_key(&:clear_semian_resource)
244
238
  end
245
239
  end
246
240
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.2
4
+ version: 0.25.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Francis
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubygems_version: 3.7.1
81
+ rubygems_version: 3.7.2
82
82
  specification_version: 4
83
83
  summary: Bulkheading for Ruby with SysV semaphores
84
84
  test_files: []