def commit_db_transaction_with_callback
increment_transaction_pointer
result = nil
begin
trigger_before_commit_callbacks
trigger_before_commit_on_create_callbacks
trigger_before_commit_on_update_callbacks
trigger_before_commit_on_save_callbacks
trigger_before_commit_on_destroy_callbacks
result = commit_db_transaction_without_callback
@disable_rollback = true
trigger_after_commit_callbacks
trigger_after_commit_on_create_callbacks
trigger_after_commit_on_update_callbacks
trigger_after_commit_on_save_callbacks
trigger_after_commit_on_destroy_callbacks
result
rescue
unless @disable_rollback
decrement_transaction_pointer
@already_decremented = true
end
raise
ensure
AfterCommit.cleanup(self)
decrement_transaction_pointer unless @already_decremented
end
end