Files
gitlab-ce/lib/gitlab/database/lock_recorder.rb
2025-02-08 18:09:18 +00:00

47 lines
754 B
Ruby

# frozen_string_literal: true
module Gitlab
module Database
class LockRecorder
def self.instance
Thread.current[:lock_recorder] ||= new
end
def self.record_key(record)
[record.class.table_name, record.id]
end
def locks
@locks ||= {}
end
def add(record, lock_type)
key = LockRecorder.record_key(record)
locks[key] = lock_type
end
def recording
@recording = false unless defined?(@recording)
@recording
end
def start
@recording = true
end
def stop
@recording = false
end
def recording?
recording
end
def clear
locks.clear
end
end
end
end