class Isolator::ActiveSupportSubscriber::Subscriber
def extract_connection_id(payload)
def extract_connection_id(payload) payload[:connection_id] || payload[:connection]&.object_id || 0 end
def finish(event, id, payload)
def finish(event, id, payload) return unless finish_event?(payload[:sql]) connection_id = extract_connection_id(payload) Isolator.decr_transactions!(connection_id) end
def finish_event?(sql)
def finish_event?(sql) FINISH_PATTERN.match?(sanitize_query(sql)) end
def sanitize_query(sql)
def sanitize_query(sql) sql.encode("UTF-8", "binary", invalid: :replace, undef: :replace, replace: "?") end
def start(event, id, payload)
def start(event, id, payload) return unless start_event?(payload[:sql]) connection_id = extract_connection_id(payload) Isolator.incr_transactions!(connection_id) end
def start_event?(sql)
def start_event?(sql) START_PATTERN.match?(sanitize_query(sql)) end