@@ -169,15 +169,17 @@ def initialize(connection)
169
169
def lock ( resource , val , ttl , allow_new_lock )
170
170
recover_from_script_flush do
171
171
@redis . with { |conn |
172
- conn . call ( 'EVALSHA' , Scripts ::LOCK_SCRIPT_SHA , 1 , resource , val , ttl , allow_new_lock )
172
+ # NOTE: is not idempotent and unsafe to retry
173
+ conn . call_once ( 'EVALSHA' , Scripts ::LOCK_SCRIPT_SHA , 1 , resource , val , ttl , allow_new_lock )
173
174
}
174
175
end
175
176
end
176
177
177
178
def unlock ( resource , val )
178
179
recover_from_script_flush do
179
180
@redis . with { |conn |
180
- conn . call ( 'EVALSHA' , Scripts ::UNLOCK_SCRIPT_SHA , 1 , resource , val )
181
+ # NOTE: is not idempotent and unsafe to retry
182
+ conn . call_once ( 'EVALSHA' , Scripts ::UNLOCK_SCRIPT_SHA , 1 , resource , val )
181
183
}
182
184
end
183
185
rescue
@@ -187,6 +189,7 @@ def unlock(resource, val)
187
189
def get_remaining_ttl ( resource )
188
190
recover_from_script_flush do
189
191
@redis . with { |conn |
192
+ # NOTE: is idempotent and safe to retry
190
193
conn . call ( 'EVALSHA' , Scripts ::PTTL_SCRIPT_SHA , 1 , resource )
191
194
}
192
195
end
@@ -205,6 +208,7 @@ def load_scripts
205
208
206
209
@redis . with do |connnection |
207
210
scripts . each do |script |
211
+ # NOTE: is idempotent and safe to retry
208
212
connnection . call ( 'SCRIPT' , 'LOAD' , script )
209
213
end
210
214
end
0 commit comments