redis_queued_locks 1.5.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,151 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @api private
4
+ # @since 1.7.0
5
+ module RedisQueuedLocks::Acquier::AcquireLock::InstrVisitor
6
+ extend self
7
+
8
+ # @param instrumenter [#notify]
9
+ # @param instr_sampled [Boolean]
10
+ # @param lock_key [String]
11
+ # @param ttl [Integer, NilClass]
12
+ # @param acq_id [String]
13
+ # @param ts [Numeric]
14
+ # @param acq_time [Numeric]
15
+ # @param instrument [NilClass,Any]
16
+ # @return [void]
17
+ #
18
+ # @api private
19
+ # @since 1.7.0
20
+ def extendable_reentrant_lock_obtained(
21
+ instrumenter,
22
+ instr_sampled,
23
+ lock_key,
24
+ ttl,
25
+ acq_id,
26
+ ts,
27
+ acq_time,
28
+ instrument
29
+ )
30
+ return unless instr_sampled
31
+ instrumenter.notify('redis_queued_locks.extendable_reentrant_lock_obtained', {
32
+ lock_key:, ttl:, acq_id:, ts:, acq_time:, instrument:
33
+ }) rescue nil
34
+ end
35
+
36
+ # @param instrumenter [#notify]
37
+ # @param instr_sampled [Boolean]
38
+ # @param lock_key [String]
39
+ # @param ttl [Integer, NilClass]
40
+ # @param acq_id [String]
41
+ # @param ts [Numeric]
42
+ # @param acq_time [Numeric]
43
+ # @param instrument [NilClass,Any]
44
+ # @return [void]
45
+ #
46
+ # @api private
47
+ # @since 1.7.0
48
+ def reentrant_lock_obtained(
49
+ instrumenter,
50
+ instr_sampled,
51
+ lock_key,
52
+ ttl,
53
+ acq_id,
54
+ ts,
55
+ acq_time,
56
+ instrument
57
+ )
58
+ return unless instr_sampled
59
+ instrumenter.notify('redis_queued_locks.reentrant_lock_obtained', {
60
+ lock_key:, ttl:, acq_id:, ts:, acq_time:, instrument:
61
+ }) rescue nil
62
+ end
63
+
64
+ # @param instrumenter [#notify]
65
+ # @param instr_sampled [Boolean]
66
+ # @param lock_key [String]
67
+ # @param ttl [Integer, NilClass]
68
+ # @param acq_id [String]
69
+ # @param ts [Numeric]
70
+ # @param acq_time [Numeric]
71
+ # @param instrument [NilClass,Any]
72
+ # @return [void]
73
+ #
74
+ # @api private
75
+ # @since 1.7.0
76
+ def lock_obtained(
77
+ instrumenter,
78
+ instr_sampled,
79
+ lock_key,
80
+ ttl,
81
+ acq_id,
82
+ ts,
83
+ acq_time,
84
+ instrument
85
+ )
86
+ return unless instr_sampled
87
+ instrumenter.notify('redis_queued_locks.lock_obtained', {
88
+ lock_key:, ttl:, acq_id:, ts:, acq_time:, instrument:
89
+ }) rescue nil
90
+ end
91
+
92
+ # @param instrumenter [#notify]
93
+ # @param instr_sampled [Boolean]
94
+ # @param lock_key [String]
95
+ # @param ttl [Integer, NilClass]
96
+ # @param acq_id [String]
97
+ # @param ts [Numeric]
98
+ # @param acq_time [Numeric]
99
+ # @param hold_time [Numeric]
100
+ # @param instrument [NilClass,Any]
101
+ # @return [void]
102
+ #
103
+ # @api private
104
+ # @since 1.7.0
105
+ def reentrant_lock_hold_completes(
106
+ instrumenter,
107
+ instr_sampled,
108
+ lock_key,
109
+ ttl,
110
+ acq_id,
111
+ ts,
112
+ acq_time,
113
+ hold_time,
114
+ instrument
115
+ )
116
+ return unless instr_sampled
117
+ instrumenter.notify('redis_queued_locks.reentrant_lock_hold_completes', {
118
+ hold_time:, ttl:, acq_id:, ts:, lock_key:, acq_time:, instrument:
119
+ }) rescue nil
120
+ end
121
+
122
+ # @param instrumenter [#notify]
123
+ # @param instr_sampled [Boolean]
124
+ # @param lock_key [String]
125
+ # @param ttl [Integer, NilClass]
126
+ # @param acq_id [String]
127
+ # @param ts [Numeric]
128
+ # @param acq_time [Numeric]
129
+ # @param hold_time [Numeric]
130
+ # @param instrument [NilClass,Any]
131
+ # @return [void]
132
+ #
133
+ # @api private
134
+ # @since 1.7.0
135
+ def lock_hold_and_release(
136
+ instrumenter,
137
+ instr_sampled,
138
+ lock_key,
139
+ ttl,
140
+ acq_id,
141
+ ts,
142
+ acq_time,
143
+ hold_time,
144
+ instrument
145
+ )
146
+ return unless instr_sampled
147
+ instrumenter.notify('redis_queued_locks.lock_hold_and_release', {
148
+ hold_time:, ttl:, acq_id:, ts:, lock_key:, acq_time:, instrument:
149
+ }) rescue nil
150
+ end
151
+ end
@@ -0,0 +1,192 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @api private
4
+ # @since 1.7.0
5
+ # rubocop:disable Metrics/ModuleLength
6
+ module RedisQueuedLocks::Acquier::AcquireLock::LogVisitor
7
+ extend self
8
+
9
+ # @param logger [::Logger,#debug]
10
+ # @param log_sampled [Boolean]
11
+ # @param lock_key [String]
12
+ # @param queue_ttl [Integer]
13
+ # @param acquier_id [String]
14
+ # @param access_strategy [Symbol]
15
+ # @return [void]
16
+ #
17
+ # @api private
18
+ # @since 1.7.0
19
+ def start_lock_obtaining(
20
+ logger,
21
+ log_sampled,
22
+ lock_key,
23
+ queue_ttl,
24
+ acquier_id,
25
+ access_strategy
26
+ )
27
+ return unless log_sampled
28
+
29
+ logger.debug do
30
+ "[redis_queued_locks.start_lock_obtaining] " \
31
+ "lock_key => '#{lock_key}' " \
32
+ "queue_ttl => #{queue_ttl} " \
33
+ "acq_id => '#{acquier_id}' " \
34
+ "acs_strat => '#{access_strategy}'"
35
+ end rescue nil
36
+ end
37
+
38
+ # @param logger [::Logger,#debug]
39
+ # @param log_sampled [Boolean]
40
+ # @param lock_key [String]
41
+ # @param queue_ttl [Integer]
42
+ # @param acquier_id [String]
43
+ # @param access_strategy [Symbol]
44
+ # @return [void]
45
+ #
46
+ # @api private
47
+ # @since 1.7.0
48
+ def start_try_to_lock_cycle(
49
+ logger,
50
+ log_sampled,
51
+ lock_key,
52
+ queue_ttl,
53
+ acquier_id,
54
+ access_strategy
55
+ )
56
+ return unless log_sampled
57
+
58
+ logger.debug do
59
+ "[redis_queued_locks.start_try_to_lock_cycle] " \
60
+ "lock_key => '#{lock_key}' " \
61
+ "queue_ttl => #{queue_ttl} " \
62
+ "acq_id => '#{acquier_id}' " \
63
+ "acs_strat => '#{access_strategy}'"
64
+ end rescue nil
65
+ end
66
+
67
+ # @param logger [::Logger,#debug]
68
+ # @param log_sampled [Boolean]
69
+ # @param lock_key [String]
70
+ # @param queue_ttl [Integer]
71
+ # @param acquier_id [String]
72
+ # @param access_strategy [Symbol]
73
+ # @return [void]
74
+ #
75
+ # @api private
76
+ # @since 1.7.0
77
+ def dead_score_reached__reset_acquier_position(
78
+ logger,
79
+ log_sampled,
80
+ lock_key,
81
+ queue_ttl,
82
+ acquier_id,
83
+ access_strategy
84
+ )
85
+ return unless log_sampled
86
+
87
+ logger.debug do
88
+ "[redis_queued_locks.dead_score_reached__reset_acquier_position] " \
89
+ "lock_key => '#{lock_key}' " \
90
+ "queue_ttl => #{queue_ttl} " \
91
+ "acq_id => '#{acquier_id}' " \
92
+ "acs_strat => '#{access_strategy}'"
93
+ end rescue nil
94
+ end
95
+
96
+ # @param logger [::Logger,#debug]
97
+ # @param log_sampled [Boolean]
98
+ # @param lock_key [String]
99
+ # @param queue_ttl [Integer]
100
+ # @param acquier_id [String]
101
+ # @param acq_time [Numeric]
102
+ # @param access_strategy [Symbol]
103
+ # @return [void]
104
+ #
105
+ # @api private
106
+ # @since 1.7.0
107
+ def extendable_reentrant_lock_obtained(
108
+ logger,
109
+ log_sampled,
110
+ lock_key,
111
+ queue_ttl,
112
+ acquier_id,
113
+ acq_time,
114
+ access_strategy
115
+ )
116
+ return unless log_sampled
117
+
118
+ logger.debug do
119
+ "[redis_queued_locks.extendable_reentrant_lock_obtained] " \
120
+ "lock_key => '#{lock_key}' " \
121
+ "queue_ttl => #{queue_ttl} " \
122
+ "acq_id => '#{acquier_id}' " \
123
+ "acs_strat => '#{access_strategy}' " \
124
+ "acq_time => #{acq_time} (ms)"
125
+ end rescue nil
126
+ end
127
+
128
+ # @param logger [::Logger,#debug]
129
+ # @param log_sampled [Boolean]
130
+ # @param lock_key [String]
131
+ # @param queue_ttl [Integer]
132
+ # @param acquier_id [String]
133
+ # @param acq_time [Numeric]
134
+ # @param access_strategy [Symbol]
135
+ # @return [void]
136
+ #
137
+ # @api private
138
+ # @since 1.7.0
139
+ def reentrant_lock_obtained(
140
+ logger,
141
+ log_sampled,
142
+ lock_key,
143
+ queue_ttl,
144
+ acquier_id,
145
+ acq_time,
146
+ access_strategy
147
+ )
148
+ return unless log_sampled
149
+
150
+ logger.debug do
151
+ "[redis_queued_locks.reentrant_lock_obtained] " \
152
+ "lock_key => '#{lock_key}' " \
153
+ "queue_ttl => #{queue_ttl} " \
154
+ "acq_id => '#{acquier_id}' " \
155
+ "acs_strat => '#{access_strategy}' " \
156
+ "acq_time => #{acq_time} (ms)"
157
+ end rescue nil
158
+ end
159
+
160
+ # @param logger [::Logger,#debug]
161
+ # @param log_sampled [Boolean]
162
+ # @param lock_key [String]
163
+ # @param queue_ttl [Integer]
164
+ # @param acquier_id [String]
165
+ # @param acq_time [Numeric]
166
+ # @param access_strategy [Symbol]
167
+ # @return [void]
168
+ #
169
+ # @api private
170
+ # @since 1.7.0
171
+ def lock_obtained(
172
+ logger,
173
+ log_sampled,
174
+ lock_key,
175
+ queue_ttl,
176
+ acquier_id,
177
+ acq_time,
178
+ access_strategy
179
+ )
180
+ return unless log_sampled
181
+
182
+ logger.debug do
183
+ "[redis_queued_locks.lock_obtained] " \
184
+ "lock_key => '#{lock_key}' " \
185
+ "queue_ttl => #{queue_ttl} " \
186
+ "acq_id => '#{acquier_id}' " \
187
+ "acs_strat => '#{access_strategy}' " \
188
+ "acq_time => #{acq_time} (ms)"
189
+ end rescue nil
190
+ end
191
+ end
192
+ # rubocop:enable Metrics/ModuleLength