redis_queued_locks 0.0.25 → 0.0.27
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 +4 -4
- data/CHANGELOG.md +10 -1
- data/lib/redis_queued_locks/acquier/acquire_lock/try_to_lock.rb +11 -3
- data/lib/redis_queued_locks/acquier/acquire_lock.rb +3 -1
- data/lib/redis_queued_locks/acquier/lock_info.rb +2 -2
- data/lib/redis_queued_locks/resource.rb +4 -4
- data/lib/redis_queued_locks/version.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9d7bd4d48e34f520e1e7675030a15a346eca0f89429b500b7937ef36cf8107b
|
4
|
+
data.tar.gz: 7c331e2a5d728a78ce8009bc6d1e97621bab61ad336683e45b52063f2fff1715
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33491d78f0a847f90ed27792ae3edd90388d78fb4098cd6eae00b85ea13c5353523f252f1cf83e01918bce502b3ad5735825e5f642122b0a15f6d301df12f5f1
|
7
|
+
data.tar.gz: a18017f9c1bc2559fbd6c723ce1fccc99c7041f6952e535dba31e14a5029abf43c215c6abcd0aaf514d4d670614882255e2b356c3c214a83b77265a826fe16e0
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.0.27] - 2024-03-21
|
4
|
+
### Changed
|
5
|
+
- Better acquier position accuracy: acquier position in lock queue
|
6
|
+
should be represented as EPOCH in seconds+microseconds (previously: simply in seconds);
|
7
|
+
|
8
|
+
## [0.0.26] - 2024-03-21
|
9
|
+
### Added
|
10
|
+
- Logging: add `acquier_id`;
|
11
|
+
|
3
12
|
## [0.0.25] - 2024-03-21
|
4
13
|
### Changed
|
5
14
|
- Minor logs stylization;
|
@@ -10,7 +19,7 @@
|
|
10
19
|
|
11
20
|
## [0.0.23] - 2024-03-21
|
12
21
|
### Changed
|
13
|
-
- Composed redis commands are invoked
|
22
|
+
- Composed redis commands are invoked from the same *one* conenction
|
14
23
|
(instead of mutiple connection fetching from redis connection pool on each redis command);
|
15
24
|
|
16
25
|
## [0.0.22] - 2024-03-21
|
@@ -40,7 +40,11 @@ module RedisQueuedLocks::Acquier::AcquireLock::TryToLock
|
|
40
40
|
|
41
41
|
if log_lock_try
|
42
42
|
run_non_critical do
|
43
|
-
logger.debug(
|
43
|
+
logger.debug(
|
44
|
+
"[redis_queued_locks.try_lock_start] " \
|
45
|
+
"lock_key => '#{lock_key}' " \
|
46
|
+
"acq_id => '#{acquier_id}'"
|
47
|
+
)
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
@@ -48,7 +52,11 @@ module RedisQueuedLocks::Acquier::AcquireLock::TryToLock
|
|
48
52
|
result = redis.with do |rconn|
|
49
53
|
if log_lock_try
|
50
54
|
run_non_critical do
|
51
|
-
logger.debug(
|
55
|
+
logger.debug(
|
56
|
+
"[redis_queued_locks.try_lock_rconn_fetched] " \
|
57
|
+
"lock_key => '#{lock_key}' " \
|
58
|
+
"acq_id => '#{acquier_id}'"
|
59
|
+
)
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
@@ -139,7 +147,7 @@ module RedisQueuedLocks::Acquier::AcquireLock::TryToLock
|
|
139
147
|
'HSET',
|
140
148
|
lock_key,
|
141
149
|
'acq_id', acquier_id,
|
142
|
-
'ts', (timestamp = Time.now.
|
150
|
+
'ts', (timestamp = Time.now.to_f),
|
143
151
|
'ini_ttl', ttl
|
144
152
|
)
|
145
153
|
|
@@ -139,7 +139,8 @@ module RedisQueuedLocks::Acquier::AcquireLock
|
|
139
139
|
run_non_critical do
|
140
140
|
logger.debug(
|
141
141
|
"[redis_queued_locks.start_lock_obtaining] " \
|
142
|
-
"lock_key => '#{lock_key}'"
|
142
|
+
"lock_key => '#{lock_key}' " \
|
143
|
+
"acq_id => '#{acquier_id}'"
|
143
144
|
)
|
144
145
|
end
|
145
146
|
|
@@ -175,6 +176,7 @@ module RedisQueuedLocks::Acquier::AcquireLock
|
|
175
176
|
logger.debug(
|
176
177
|
"[redis_queued_locks.lock_obtained] " \
|
177
178
|
"lock_key => '#{result[:lock_key]}' " \
|
179
|
+
"acq_id: => '#{acquier_id}' " \
|
178
180
|
"acq_time => #{acq_time} (ms)"
|
179
181
|
)
|
180
182
|
end
|
@@ -11,7 +11,7 @@ module RedisQueuedLocks::Acquier::LockInfo
|
|
11
11
|
# - result format: {
|
12
12
|
# lock_key: "rql:lock:your_lockname", # acquired lock key
|
13
13
|
# acq_id: "rql:acq:process_id/thread_id", # lock acquier identifier
|
14
|
-
# ts: 123456789, # <locked at> time stamp (epoch)
|
14
|
+
# ts: 123456789.2649841, # <locked at> time stamp (epoch, seconds.microseconds)
|
15
15
|
# ini_ttl: 123456789, # initial lock key ttl (milliseconds),
|
16
16
|
# rem_ttl: 123456789, # remaining lock key ttl (milliseconds)
|
17
17
|
# }
|
@@ -46,7 +46,7 @@ module RedisQueuedLocks::Acquier::LockInfo
|
|
46
46
|
{
|
47
47
|
lock_key: lock_key,
|
48
48
|
acq_id: hget_cmd_res['acq_id'],
|
49
|
-
ts:
|
49
|
+
ts: Float(hget_cmd_res['ts']),
|
50
50
|
ini_ttl: Integer(hget_cmd_res['ini_ttl']),
|
51
51
|
rem_ttl: ((pttl_cmd_res == -1) ? Infinity : pttl_cmd_res)
|
52
52
|
}
|
@@ -65,21 +65,21 @@ module RedisQueuedLocks::Resource
|
|
65
65
|
"rql:lock_queue:#{lock_name}"
|
66
66
|
end
|
67
67
|
|
68
|
-
# @return [
|
68
|
+
# @return [Float] Redis's <Set> score that is calculated from the time (epoch) as a float.
|
69
69
|
#
|
70
70
|
# @api private
|
71
71
|
# @since 0.1.0
|
72
72
|
def calc_initial_acquier_position
|
73
|
-
Time.now.
|
73
|
+
Time.now.to_f
|
74
74
|
end
|
75
75
|
|
76
76
|
# @param queue_ttl [Integer] In seconds
|
77
|
-
# @return [
|
77
|
+
# @return [Float] Redis's <Set> score barrier for acquiers that should be removed from queue.
|
78
78
|
#
|
79
79
|
# @api private
|
80
80
|
# @since 0.1.0
|
81
81
|
def acquier_dead_score(queue_ttl)
|
82
|
-
Time.now.
|
82
|
+
Time.now.to_f - queue_ttl
|
83
83
|
end
|
84
84
|
|
85
85
|
# @param lock_queue [String]
|