Skip to content

Commit 8c65784

Browse files
authored
refactor(DtmCommon): Change TransactionScopeAsyncFlowOption.Enabled as default (#96)
- remove overload method with TransactionScopeAsyncFlowOption parameter - Change BranchBarrier.Call TransactionScopeAsyncFlowOption.Enabled as default
1 parent 20b0623 commit 8c65784

File tree

2 files changed

+2
-50
lines changed

2 files changed

+2
-50
lines changed

src/DtmCommon/Barrier/BranchBarrier.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,18 +121,13 @@ public async Task Call(DbConnection db, Func<DbTransaction, Task> busiCall)
121121
}
122122

123123
public async Task Call(DbConnection db, Func<Task> busiCall, TransactionScopeOption transactionScope = TransactionScopeOption.Required, IsolationLevel isolationLevel = IsolationLevel.Serializable)
124-
{
125-
await Call(db, busiCall, transactionScope, isolationLevel, TransactionScopeAsyncFlowOption.Suppress);
126-
}
127-
128-
public async Task Call(DbConnection db, Func<Task> busiCall, TransactionScopeOption transactionScope, IsolationLevel isolationLevel, TransactionScopeAsyncFlowOption transactionScopeAsyncFlowOption)
129124
{
130125
this.BarrierID = this.BarrierID + 1;
131126
var bid = this.BarrierID.ToString().PadLeft(2, '0');
132127

133128
// check the connection state
134129
if (db.State != System.Data.ConnectionState.Open) await db.OpenAsync();
135-
using (var scope = new TransactionScope(transactionScope, new TransactionOptions { IsolationLevel = isolationLevel }, transactionScopeAsyncFlowOption))
130+
using (var scope = new TransactionScope(transactionScope, new TransactionOptions { IsolationLevel = isolationLevel }, TransactionScopeAsyncFlowOption.Enabled))
136131
{
137132
try
138133
{

tests/Dtmgrpc.IntegrationTests/MsgGrpcTest.cs

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -33,48 +33,6 @@ public async Task Submit_Should_Succeed()
3333
Assert.Equal("succeed", status);
3434
}
3535

36-
[Fact]
37-
public async Task DoAndSubmit_Should_DbTrans_Exception()
38-
{
39-
var provider = ITTestHelper.AddDtmGrpc();
40-
var transFactory = provider.GetRequiredService<IDtmTransFactory>();
41-
42-
var gid = "msgTestGid" + Guid.NewGuid().ToString();
43-
var msg = transFactory.NewMsgGrpc(gid);
44-
var req = ITTestHelper.GenBusiReq(false, false);
45-
var busiGrpc = ITTestHelper.BuisgRPCUrl;
46-
47-
msg.Add(busiGrpc + "/busi.Busi/TransIn", req);
48-
// do TransOut local, then TransIn with DTM.
49-
await Assert.ThrowsAsync<System.InvalidOperationException>(async () =>
50-
{
51-
// System.InvalidOperationException: A TransactionScope must be disposed on the same thread that it was created.
52-
//
53-
// System.InvalidOperationException
54-
// A TransactionScope must be disposed on the same thread that it was created.
55-
// 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
56-
57-
await msg.DoAndSubmit(busiGrpc + "/busi.Busi/QueryPreparedMySqlReal", async branchBarrier =>
58-
{
59-
MySqlConnection conn = getBarrierMySqlConnection();
60-
await branchBarrier.Call(conn, () =>
61-
{
62-
Task task = this.LocalAdjustBalance(conn, TransOutUID, -req.Amount, "SUCCESS");
63-
return task;
64-
},
65-
TransactionScopeOption.Required,
66-
IsolationLevel.ReadCommitted
67-
// , default TransactionScopeAsyncFlowOption.Suppress
68-
);
69-
});
70-
});
71-
72-
await Task.Delay(4000);
73-
var status = await ITTestHelper.GetTranStatus(gid);
74-
// The exception did not affect the local transaction commit
75-
Assert.Equal("succeed", status);
76-
}
77-
7836
[Fact]
7937
public async Task DoAndSubmit_Should_Succeed()
8038
{
@@ -98,8 +56,7 @@ await branchBarrier.Call(conn, () =>
9856
return task;
9957
},
10058
TransactionScopeOption.Required,
101-
IsolationLevel.ReadCommitted,
102-
TransactionScopeAsyncFlowOption.Enabled);
59+
IsolationLevel.ReadCommitted);
10360
});
10461

10562
await Task.Delay(2000);

0 commit comments

Comments
 (0)