redis_queued_locks 1.11.0 → 1.12.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e8dd94852534ed373615917be290e53b29e203e7b88907d24631869ab4f2deb
|
4
|
+
data.tar.gz: 9b78929772d22f8ae6cbb628d306a85c44d4eec2f6a41e68bccfa0d754db80b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14e6e0c7ff71c9bc0d8a4ff1088a0b9983a8bd365fa10b17236996b3cb20e291fb951e648c79430b2d4091179024385648a343b36913443a9459c3c9e2a71b18
|
7
|
+
data.tar.gz: f0aa55c8561513a87d3c8f347db2f9a0710c62b4fe6d03fd6b512fec56c2631da77b86080bbbdf051bfc82d6abe2016f8baf37e43b3eebc973bd404bb7f80a35
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
-
|
3
|
+
## [1.12.0] - 2024-08-11
|
4
|
+
### Changed
|
5
|
+
- Timed blocks of code and their timeout errors: reduced error message object allocations;
|
6
|
+
|
7
|
+
## [1.11.0] - 2024-08-11
|
4
8
|
### Changed
|
5
9
|
- Lock Acquierment Timeout (`acq_timeout`/`queue_ttl`): more correct timeout error interception
|
6
10
|
inside the `RedisQueuedLocks::Acquier::AcquireLock::WithAcqTimeout` logic that now raises and
|
@@ -19,6 +19,8 @@ module RedisQueuedLocks::Acquier::AcquireLock::WithAcqTimeout
|
|
19
19
|
# Callback invoked on Timeout::Error.
|
20
20
|
# @return [Any]
|
21
21
|
#
|
22
|
+
# @raise [RedisQueuedLocks::LockAcquiermentIntermediateTimeoutError]
|
23
|
+
#
|
22
24
|
# @api private
|
23
25
|
# @since 1.0.0
|
24
26
|
# @version 1.11.0
|
@@ -107,28 +107,22 @@ module RedisQueuedLocks::Acquier::AcquireLock::YieldExpire
|
|
107
107
|
# @param block [Blcok]
|
108
108
|
# @return [Any]
|
109
109
|
#
|
110
|
+
# @raise [RedisQueuedLocks::TimedLockTimeoutError]
|
111
|
+
#
|
110
112
|
# @api private
|
111
113
|
# @since 1.3.0
|
112
|
-
# @version 1.
|
114
|
+
# @version 1.12.0
|
113
115
|
def yield_with_timeout(timeout, lock_key, lock_ttl, acquier_id, host_id, meta, &block)
|
114
|
-
::Timeout.timeout(
|
115
|
-
|
116
|
+
::Timeout.timeout(timeout, RedisQueuedLocks::TimedLockIntermediateTimeoutError, &block)
|
117
|
+
rescue RedisQueuedLocks::TimedLockIntermediateTimeoutError
|
118
|
+
raise(
|
116
119
|
RedisQueuedLocks::TimedLockTimeoutError,
|
117
|
-
# NOTE:
|
118
|
-
# - this string is generated on each invocation cuz we need to raise custom exception
|
119
|
-
# from the Timeout API in order to prevent incorred Timeout::Error interception when
|
120
|
-
# the intercepted error is caused from the block not from the RQL;
|
121
|
-
# - we can't omit this string object creation at the moment via original Ruby's Timeout API;
|
122
|
-
# TODO:
|
123
|
-
# - refine Timeout#timeout (via Ruby's Refinement API) in order to provide lazy exception
|
124
|
-
# message initialization;
|
125
120
|
"Passed <timed> block of code exceeded the lock TTL " \
|
126
121
|
"(lock: \"#{lock_key}\", " \
|
127
122
|
"ttl: #{lock_ttl}, " \
|
128
123
|
"meta: #{meta ? meta.inspect : '<no-meta>'}, " \
|
129
124
|
"acq_id: \"#{acquier_id}\", " \
|
130
125
|
"hst_id: \"#{host_id}\")",
|
131
|
-
&block
|
132
126
|
)
|
133
127
|
end
|
134
128
|
end
|
@@ -25,6 +25,10 @@ module RedisQueuedLocks
|
|
25
25
|
# @since 1.0.0
|
26
26
|
LockAcquiermentRetryLimitError = Class.new(Error)
|
27
27
|
|
28
|
+
# @api private
|
29
|
+
# @since 1.12.0
|
30
|
+
TimedLockIntermediateTimeoutError = Class.new(::Timeout::Error)
|
31
|
+
|
28
32
|
# @api pulic
|
29
33
|
# @since 1.0.0
|
30
34
|
TimedLockTimeoutError = Class.new(Error)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_queued_locks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rustam Ibragimov
|
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
137
|
requirements: []
|
138
|
-
rubygems_version: 3.5.
|
138
|
+
rubygems_version: 3.5.17
|
139
139
|
signing_key:
|
140
140
|
specification_version: 4
|
141
141
|
summary: Distributed locks with "prioritized lock acquisition queue" capabilities
|