Skip to content

Commit c60136b

Browse files
authored
Merge pull request #2310 from fredericDelaporte/AdoTransactionLeak
Fix transaction leak
2 parents cc6baef + 443b462 commit c60136b

File tree

114 files changed

+5806
-5123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+5806
-5123
lines changed

src/NHibernate.Test/Ado/BatcherFixture.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections;
21
using NHibernate.AdoNet;
32
using NHibernate.Cfg;
43
using NUnit.Framework;
@@ -44,11 +43,11 @@ public void OneRoundTripInserts()
4443
private void Cleanup()
4544
{
4645
using (ISession s = Sfi.OpenSession())
47-
using (s.BeginTransaction())
46+
using (var t = s.BeginTransaction())
4847
{
4948
s.CreateQuery("delete from VerySimple").ExecuteUpdate();
5049
s.CreateQuery("delete from AlmostSimple").ExecuteUpdate();
51-
s.Transaction.Commit();
50+
t.Commit();
5251
}
5352
}
5453

src/NHibernate.Test/Ado/GenericBatchingBatcherFixture.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections;
32
using System.Diagnostics;
43
using System.Linq;
54
using NHibernate.AdoNet;
@@ -229,10 +228,10 @@ private void DbShoudBeEmpty()
229228
private void Cleanup()
230229
{
231230
using (var s = Sfi.OpenSession())
232-
using (s.BeginTransaction())
231+
using (var t = s.BeginTransaction())
233232
{
234233
s.CreateQuery("delete from VerySimple").ExecuteUpdate();
235-
s.Transaction.Commit();
234+
t.Commit();
236235
}
237236
}
238237

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections;
21
using NUnit.Framework;
32

43
namespace NHibernate.Test.Any
@@ -24,30 +23,36 @@ protected override string CacheConcurrencyStrategy
2423
[Test]
2524
public void FlushProcessing()
2625
{
26+
var person = new Person();
27+
var address = new Address();
2728
//http://opensource.atlassian.com/projects/hibernate/browse/HHH-1663
28-
ISession session = OpenSession();
29-
session.BeginTransaction();
30-
Person person = new Person();
31-
Address address = new Address();
32-
person.Data = address;
33-
session.SaveOrUpdate(person);
34-
session.SaveOrUpdate(address);
35-
session.Transaction.Commit();
36-
session.Close();
29+
using (var session = OpenSession())
30+
using (var tran = session.BeginTransaction())
31+
{
32+
person.Data = address;
33+
session.SaveOrUpdate(person);
34+
session.SaveOrUpdate(address);
35+
tran.Commit();
36+
session.Close();
37+
}
3738

38-
session = OpenSession();
39-
session.BeginTransaction();
40-
person = (Person) session.Load(typeof (Person), person.Id);
41-
person.Name = "makingpersondirty";
42-
session.Transaction.Commit();
43-
session.Close();
39+
using (var session = OpenSession())
40+
using (var tran = session.BeginTransaction())
41+
{
42+
person = (Person) session.Load(typeof(Person), person.Id);
43+
person.Name = "makingpersondirty";
44+
tran.Commit();
45+
session.Close();
46+
}
4447

45-
session = OpenSession();
46-
session.BeginTransaction();
47-
session.Delete(person);
48-
session.Delete(address);
49-
session.Transaction.Commit();
50-
session.Close();
48+
using (var session = OpenSession())
49+
using (var tran = session.BeginTransaction())
50+
{
51+
session.Delete(person);
52+
session.Delete(address);
53+
tran.Commit();
54+
session.Close();
55+
}
5156
}
5257
}
53-
}
58+
}

src/NHibernate.Test/Async/Ado/BatcherFixture.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
//------------------------------------------------------------------------------
99

1010

11-
using System.Collections;
1211
using NHibernate.AdoNet;
1312
using NHibernate.Cfg;
1413
using NUnit.Framework;
@@ -56,11 +55,11 @@ public async Task OneRoundTripInsertsAsync()
5655
private async Task CleanupAsync(CancellationToken cancellationToken = default(CancellationToken))
5756
{
5857
using (ISession s = Sfi.OpenSession())
59-
using (s.BeginTransaction())
58+
using (var t = s.BeginTransaction())
6059
{
6160
await (s.CreateQuery("delete from VerySimple").ExecuteUpdateAsync(cancellationToken));
6261
await (s.CreateQuery("delete from AlmostSimple").ExecuteUpdateAsync(cancellationToken));
63-
await (s.Transaction.CommitAsync(cancellationToken));
62+
await (t.CommitAsync(cancellationToken));
6463
}
6564
}
6665

src/NHibernate.Test/Async/Ado/GenericBatchingBatcherFixture.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010

1111
using System;
12-
using System.Collections;
1312
using System.Diagnostics;
1413
using System.Linq;
1514
using NHibernate.AdoNet;
@@ -241,10 +240,10 @@ public override SqlString OnPrepareStatement(SqlString sql)
241240
private async Task CleanupAsync(CancellationToken cancellationToken = default(CancellationToken))
242241
{
243242
using (var s = Sfi.OpenSession())
244-
using (s.BeginTransaction())
243+
using (var t = s.BeginTransaction())
245244
{
246245
await (s.CreateQuery("delete from VerySimple").ExecuteUpdateAsync(cancellationToken));
247-
await (s.Transaction.CommitAsync(cancellationToken));
246+
await (t.CommitAsync(cancellationToken));
248247
}
249248
}
250249

src/NHibernate.Test/Async/Any/AnyTypeTest.cs

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
//------------------------------------------------------------------------------
99

1010

11-
using System.Collections;
1211
using NUnit.Framework;
1312

1413
namespace NHibernate.Test.Any
@@ -35,30 +34,36 @@ protected override string CacheConcurrencyStrategy
3534
[Test]
3635
public async Task FlushProcessingAsync()
3736
{
37+
var person = new Person();
38+
var address = new Address();
3839
//http://opensource.atlassian.com/projects/hibernate/browse/HHH-1663
39-
ISession session = OpenSession();
40-
session.BeginTransaction();
41-
Person person = new Person();
42-
Address address = new Address();
43-
person.Data = address;
44-
await (session.SaveOrUpdateAsync(person));
45-
await (session.SaveOrUpdateAsync(address));
46-
await (session.Transaction.CommitAsync());
47-
session.Close();
40+
using (var session = OpenSession())
41+
using (var tran = session.BeginTransaction())
42+
{
43+
person.Data = address;
44+
await (session.SaveOrUpdateAsync(person));
45+
await (session.SaveOrUpdateAsync(address));
46+
await (tran.CommitAsync());
47+
session.Close();
48+
}
4849

49-
session = OpenSession();
50-
session.BeginTransaction();
51-
person = (Person) await (session.LoadAsync(typeof (Person), person.Id));
52-
person.Name = "makingpersondirty";
53-
await (session.Transaction.CommitAsync());
54-
session.Close();
50+
using (var session = OpenSession())
51+
using (var tran = session.BeginTransaction())
52+
{
53+
person = (Person) await (session.LoadAsync(typeof(Person), person.Id));
54+
person.Name = "makingpersondirty";
55+
await (tran.CommitAsync());
56+
session.Close();
57+
}
5558

56-
session = OpenSession();
57-
session.BeginTransaction();
58-
await (session.DeleteAsync(person));
59-
await (session.DeleteAsync(address));
60-
await (session.Transaction.CommitAsync());
61-
session.Close();
59+
using (var session = OpenSession())
60+
using (var tran = session.BeginTransaction())
61+
{
62+
await (session.DeleteAsync(person));
63+
await (session.DeleteAsync(address));
64+
await (tran.CommitAsync());
65+
session.Close();
66+
}
6267
}
6368
}
64-
}
69+
}

src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -166,21 +166,21 @@ public async Task MergeRouteAsync()
166166
ClearCounts();
167167

168168
using (ISession s = OpenSession())
169-
using (s.BeginTransaction())
169+
using (var t = s.BeginTransaction())
170170
{
171171
await (s.MergeAsync(route));
172-
await (s.Transaction.CommitAsync());
172+
await (t.CommitAsync());
173173
}
174174

175175
AssertInsertCount(4);
176176
AssertUpdateCount(1);
177177

178178
using (ISession s = OpenSession())
179-
using (s.BeginTransaction())
179+
using (var t = s.BeginTransaction())
180180
{
181181
route = await (s.GetAsync<Route>(route.RouteId));
182182
CheckResults(route, true);
183-
await (s.Transaction.CommitAsync());
183+
await (t.CommitAsync());
184184
}
185185
}
186186

@@ -192,23 +192,23 @@ public async Task MergePickupNodeAsync()
192192
ClearCounts();
193193

194194
using (var s = OpenSession())
195-
using (s.BeginTransaction())
195+
using (var t = s.BeginTransaction())
196196
{
197197
Node pickupNode = route.Nodes.First(n => n.Name == "pickupNodeB");
198198
pickupNode = (Node) await (s.MergeAsync(pickupNode));
199199

200-
await (s.Transaction.CommitAsync());
200+
await (t.CommitAsync());
201201
}
202202

203203
AssertInsertCount(4);
204204
AssertUpdateCount(0);
205205

206206
using (var s = OpenSession())
207-
using (s.BeginTransaction())
207+
using (var t = s.BeginTransaction())
208208
{
209209
route = await (s.GetAsync<Route>(route.RouteId));
210210
CheckResults(route, false);
211-
await (s.Transaction.CommitAsync());
211+
await (t.CommitAsync());
212212
}
213213
}
214214

@@ -220,22 +220,22 @@ public async Task MergeDeliveryNodeAsync()
220220
ClearCounts();
221221

222222
using (ISession s = OpenSession())
223-
using (s.BeginTransaction())
223+
using (var t = s.BeginTransaction())
224224
{
225225
Node deliveryNode = route.Nodes.First(n => n.Name == "deliveryNodeB");
226226
deliveryNode = (Node) await (s.MergeAsync(deliveryNode));
227-
await (s.Transaction.CommitAsync());
227+
await (t.CommitAsync());
228228
}
229229

230230
AssertInsertCount(4);
231231
AssertUpdateCount(0);
232232

233233
using (ISession s = OpenSession())
234-
using (s.BeginTransaction())
234+
using (var t = s.BeginTransaction())
235235
{
236236
route = await (s.GetAsync<Route>(route.RouteId));
237237
CheckResults(route, false);
238-
await (s.Transaction.CommitAsync());
238+
await (t.CommitAsync());
239239
}
240240
}
241241

@@ -247,21 +247,21 @@ public async Task MergeTourAsync()
247247
ClearCounts();
248248

249249
using (ISession s = OpenSession())
250-
using (s.BeginTransaction())
250+
using (var t = s.BeginTransaction())
251251
{
252252
Tour tour = await (s.MergeAsync(route.Nodes.First().Tour));
253-
await (s.Transaction.CommitAsync());
253+
await (t.CommitAsync());
254254
}
255255

256256
AssertInsertCount(4);
257257
AssertUpdateCount(0);
258258

259259
using (ISession s = OpenSession())
260-
using (s.BeginTransaction())
260+
using (var t = s.BeginTransaction())
261261
{
262262
route = await (s.GetAsync<Route>(route.RouteId));
263263
CheckResults(route, false);
264-
await (s.Transaction.CommitAsync());
264+
await (t.CommitAsync());
265265
}
266266
}
267267

@@ -273,7 +273,7 @@ public async Task MergeTransportAsync()
273273
ClearCounts();
274274

275275
using (ISession s = OpenSession())
276-
using (s.BeginTransaction())
276+
using (var t = s.BeginTransaction())
277277
{
278278
Node node = route.Nodes.First();
279279
Transport transport = null;
@@ -285,31 +285,31 @@ public async Task MergeTransportAsync()
285285

286286
transport = (Transport) await (s.MergeAsync(transport));
287287

288-
await (s.Transaction.CommitAsync());
288+
await (t.CommitAsync());
289289
}
290290

291291
AssertInsertCount(4);
292292
AssertUpdateCount(0);
293293

294294
using (ISession s = OpenSession())
295-
using (s.BeginTransaction())
295+
using (var t = s.BeginTransaction())
296296
{
297297
route = await (s.GetAsync<Route>(route.RouteId));
298298
CheckResults(route, false);
299-
await (s.Transaction.CommitAsync());
299+
await (t.CommitAsync());
300300
}
301301
}
302302

303303
private async Task<Route> GetUpdatedDetachedEntityAsync(CancellationToken cancellationToken = default(CancellationToken))
304304
{
305305
Route route = new Route();
306306
using (ISession s = OpenSession())
307-
using (s.BeginTransaction())
307+
using (var t = s.BeginTransaction())
308308
{
309309
route.Name = "routeA";
310310

311311
await (s.SaveAsync(route, cancellationToken));
312-
await (s.Transaction.CommitAsync(cancellationToken));
312+
await (t.CommitAsync(cancellationToken));
313313
}
314314
route.Name = "new routeA";
315315
route.TransientField = "sfnaouisrbn";

0 commit comments

Comments
 (0)