redis_queued_locks 1.11.0 → 1.12.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:
|
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
|