diff --git a/src/DtmCommon/Barrier/BranchBarrier.cs b/src/DtmCommon/Barrier/BranchBarrier.cs index 4c69e37..7453717 100644 --- a/src/DtmCommon/Barrier/BranchBarrier.cs +++ b/src/DtmCommon/Barrier/BranchBarrier.cs @@ -121,18 +121,13 @@ public async Task Call(DbConnection db, Func busiCall) } public async Task Call(DbConnection db, Func busiCall, TransactionScopeOption transactionScope = TransactionScopeOption.Required, IsolationLevel isolationLevel = IsolationLevel.Serializable) - { - await Call(db, busiCall, transactionScope, isolationLevel, TransactionScopeAsyncFlowOption.Suppress); - } - - public async Task Call(DbConnection db, Func busiCall, TransactionScopeOption transactionScope, IsolationLevel isolationLevel, TransactionScopeAsyncFlowOption transactionScopeAsyncFlowOption) { this.BarrierID = this.BarrierID + 1; var bid = this.BarrierID.ToString().PadLeft(2, '0'); // check the connection state if (db.State != System.Data.ConnectionState.Open) await db.OpenAsync(); - using (var scope = new TransactionScope(transactionScope, new TransactionOptions { IsolationLevel = isolationLevel }, transactionScopeAsyncFlowOption)) + using (var scope = new TransactionScope(transactionScope, new TransactionOptions { IsolationLevel = isolationLevel }, TransactionScopeAsyncFlowOption.Enabled)) { try { diff --git a/tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs b/tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs index ddd4d88..fed4cdb 100644 --- a/tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs +++ b/tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs @@ -33,48 +33,6 @@ public async Task Submit_Should_Succeed() Assert.Equal("succeed", status); } - [Fact] - public async Task DoAndSubmit_Should_DbTrans_Exception() - { - var provider = ITTestHelper.AddDtmGrpc(); - var transFactory = provider.GetRequiredService(); - - var gid = "msgTestGid" + Guid.NewGuid().ToString(); - var msg = transFactory.NewMsgGrpc(gid); - var req = ITTestHelper.GenBusiReq(false, false); - var busiGrpc = ITTestHelper.BuisgRPCUrl; - - msg.Add(busiGrpc + "/busi.Busi/TransIn", req); - // do TransOut local, then TransIn with DTM. - await Assert.ThrowsAsync(async () => - { - // System.InvalidOperationException: A TransactionScope must be disposed on the same thread that it was created. - // - // System.InvalidOperationException - // A TransactionScope must be disposed on the same thread that it was created. - // at Dtmgrpc.MsgGrpc.DoAndSubmit(String queryPrepared, Func`2 busiCall, CancellationToken cancellationToken) in /home/yunjin/Data/projects/github/dtm-labs/client-csharp/src/Dtmgrpc/Msg/MsgGrpc.cs:line 110 - - await msg.DoAndSubmit(busiGrpc + "/busi.Busi/QueryPreparedMySqlReal", async branchBarrier => - { - MySqlConnection conn = getBarrierMySqlConnection(); - await branchBarrier.Call(conn, () => - { - Task task = this.LocalAdjustBalance(conn, TransOutUID, -req.Amount, "SUCCESS"); - return task; - }, - TransactionScopeOption.Required, - IsolationLevel.ReadCommitted - // , default TransactionScopeAsyncFlowOption.Suppress - ); - }); - }); - - await Task.Delay(4000); - var status = await ITTestHelper.GetTranStatus(gid); - // The exception did not affect the local transaction commit - Assert.Equal("succeed", status); - } - [Fact] public async Task DoAndSubmit_Should_Succeed() { @@ -98,8 +56,7 @@ await branchBarrier.Call(conn, () => return task; }, TransactionScopeOption.Required, - IsolationLevel.ReadCommitted, - TransactionScopeAsyncFlowOption.Enabled); + IsolationLevel.ReadCommitted); }); await Task.Delay(2000);