internal override void Rollback(InternalTransaction tx, Exception e)
{
Debug.Assert(tx.PromotedTransaction != null, "Promoted state not valid for transaction.");
// Forward this on to the promoted transaction.
if (tx._innerException == null)
{
tx._innerException = e;
}
// Don't hold locks while calling into the promoted tx
Monitor.Exit(tx);
try
{
tx.PromotedTransaction.Rollback();
}
finally
{
Monitor.Enter(tx);
}
}