lib/appsignal/transaction.rb in appsignal-0.8.15 vs lib/appsignal/transaction.rb in appsignal-0.9.0.alpha.1
- old
+ new
@@ -9,24 +9,34 @@
HTTP_X_QUEUE_TIME HTTP_X_HEROKU_QUEUE_WAIT_TIME HTTP_X_APPLICATION_START
HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE
HTTP_CACHE_CONTROL HTTP_CONNECTION HTTP_USER_AGENT HTTP_FROM HTTP_NEGOTIATE
HTTP_PRAGMA HTTP_REFERER HTTP_X_FORWARDED_FOR).freeze
- def self.create(key, env)
- Appsignal.logger.debug("Creating transaction: #{key}")
- Thread.current[:appsignal_transaction_id] = key
- Appsignal.transactions[key] = Appsignal::Transaction.new(key, env)
+ def self.create(request_id, env)
+ Appsignal.logger.debug("Creating transaction: #{request_id}")
+ Thread.current[:appsignal_transaction_id] = request_id
+ Appsignal::Transaction.new(request_id, env)
end
def self.current
Appsignal.transactions[Thread.current[:appsignal_transaction_id]]
end
+ def self.complete_current!
+ if current
+ current.complete!
+ Thread.current[:appsignal_transaction_id] = nil
+ else
+ Appsignal.logger.error('Trying to complete current, but no transaction present')
+ end
+ end
+
attr_reader :request_id, :events, :process_action_event, :action, :exception,
:env, :fullpath, :time, :tags, :kind, :queue_start
def initialize(request_id, env)
+ Appsignal.transactions[request_id] = self
@request_id = request_id
@events = []
@process_action_event = nil
@exception = nil
@env = env
@@ -126,9 +136,11 @@
Appsignal.enqueue(self)
end
else
Appsignal.logger.debug("Not processing transaction: #{@request_id}")
end
+ ensure
+ Appsignal.transactions.delete(@request_id)
end
def set_background_queue_start
queue_start = process_action_event.payload[:queue_start]
return unless queue_start