"Synchronization timeout for transaction completion. Either raise {Cfg.Environment.SystemTransactionCompletionLockTimeout}, or this may be a bug in NHibernate.");
$"Synchronization timeout for transaction completion. Either raise"+
$"{Cfg.Environment.SystemTransactionCompletionLockTimeout}, or check all scopes are properly"+
$"disposed and/or all direct System.Transaction.Current changes are properly managed.");
_logger.Warn("Enlisted transaction status was wrongly active, original transaction being already disposed. Will assume neither active nor committed.",ode);
// For ruling out the dependent clone case when possible, we check if the current transaction is
// equal to the context one (System.Transactions.Transaction does override equality for this), and
// in such case, we check the state of the current transaction instead. (The state of the current
// transaction if equal can only be the same, but it will be inaccessible in case of rollback, due
// to the current transaction being already disposed.)
// The current transaction may not be reachable during 2PC phases and transaction completion events,
// but in such cases the context transaction is either no more active or in prepare phase, which is