Merge UseKeyWorker into Key#update_last_used_at
This worker for weird reasons tends to only slowly process its jobs. Further, the overhead of scheduling and processing the job may be just as great (if not greater) than just running a single SQL query to update the timestamp.
Because of this I propose the following:
- We move the worker code into
Key#update_last_used_at
- We change the code to just
touch(:last_used_at)
This brings us a few benefits:
- We don't need an additional SELECT in a worker to get the key
- We don't fill up a Sidekiq queue with lots of jobs
While we're at it we should also change the lease acquiring code so that we only acquire the lease if the current last_used_at
is old enough. This can be done using this:
def update_last_used_at
return unless (Time.zone.now - last_used_at) >= LAST_USED_AT_REFRESH_TIME
rest here
end
This removes Redis overhead when not necessary.