lib/appsignal/hooks/celluloid.rb
# frozen_string_literal: true module Appsignal class Hooks # @api private class CelluloidHook < Appsignal::Hooks::Hook register :celluloid def dependencies_present? defined?(::Celluloid) end def install # Some versions of Celluloid have race conditions while exiting # that can result in a dead lock. We stop appsignal before shutting # down Celluloid so we're sure our thread does not aggravate this situation. # This way we also make sure any outstanding transactions get flushed. ::Celluloid.class_eval do class << self alias shutdown_without_appsignal shutdown def shutdown Appsignal.stop("celluloid") shutdown_without_appsignal end end end end end end end