def release_savepoint_with_callback
increment_transaction_pointer
committed = false
begin
trigger_before_commit_callbacks
trigger_before_commit_on_create_callbacks
trigger_before_commit_on_save_callbacks
trigger_before_commit_on_update_callbacks
trigger_before_commit_on_destroy_callbacks
release_savepoint_without_callback
committed = true
trigger_after_commit_callbacks
trigger_after_commit_on_create_callbacks
trigger_after_commit_on_save_callbacks
trigger_after_commit_on_update_callbacks
trigger_after_commit_on_destroy_callbacks
rescue
unless committed
decrement_transaction_pointer
rollback_to_savepoint
increment_transaction_pointer
end
ensure
AfterCommit.cleanup(self)
decrement_transaction_pointer
end
end