internal override void EnterState(InternalTransaction tx)
{
CommonEnterState(tx);
// The distributed TM is driving the commit processing, so marking of complete
// is done in TransactionStatePromotedPhase0Aborting.EnterState or
// TransactionStatePromotedPhase1Aborting.EnterState.
// Release the lock
Monitor.Exit(tx);
try
{
TransactionsEtwProvider etwLog = TransactionsEtwProvider.Log;
if (etwLog.IsEnabled())
{
etwLog.EnlistmentStatus(tx._durableEnlistment, NotificationCall.Rollback);
}
tx._durableEnlistment.PromotableSinglePhaseNotification.Rollback(
tx._durableEnlistment.SinglePhaseEnlistment);
}
finally
{
Monitor.Enter(tx);
}
}