Skip to content

Commit 7798487

Browse files
committed
Detect invalid combination of XA and non-XA transactions.
1 parent 13246b3 commit 7798487

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlConnection.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ public override void EnlistTransaction(System.Transactions.Transaction transacti
108108
ImplicitTransactionBase implicitTransaction;
109109
if (m_connectionSettings.UseXaTransactions)
110110
{
111+
if (!(existingConnection?.m_connectionSettings.UseXaTransactions ?? true))
112+
throw new NotSupportedException("Cannot start an XA transaction when there is an existing non-XA transaction.");
111113
implicitTransaction = new XaImplicitTransaction(this);
112114
}
113115
else

tests/SideBySide/TransactionScopeTests.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,42 @@ public void TwoDifferentConnectionStringsThrowsWithNonXaTransactions()
555555
}
556556
}
557557

558+
#if !BASELINE
559+
[Fact]
560+
public void CannotMixXaAndNonXaTransactions()
561+
{
562+
using (new TransactionScope())
563+
{
564+
using (var conn1 = new MySqlConnection(AppConfig.ConnectionString))
565+
{
566+
conn1.Open();
567+
568+
using (var conn2 = new MySqlConnection(AppConfig.ConnectionString + ";UseXaTransactions=False"))
569+
{
570+
Assert.Throws<NotSupportedException>(() => conn2.Open());
571+
}
572+
}
573+
}
574+
}
575+
576+
[Fact]
577+
public void CannotMixNonXaAndXaTransactions()
578+
{
579+
using (new TransactionScope())
580+
{
581+
using (var conn1 = new MySqlConnection(AppConfig.ConnectionString + ";UseXaTransactions=False"))
582+
{
583+
conn1.Open();
584+
585+
using (var conn2 = new MySqlConnection(AppConfig.ConnectionString))
586+
{
587+
Assert.Throws<NotSupportedException>(() => conn2.Open());
588+
}
589+
}
590+
}
591+
}
592+
#endif
593+
558594
DatabaseFixture m_database;
559595
}
560596
}

0 commit comments

Comments
 (0)