Skip to content

Commit 7b0b508

Browse files
NH-2176 - Fixing current system transaction handling.
1 parent 48cfeef commit 7b0b508

22 files changed

+951
-482
lines changed

src/NHibernate.Test/DebugSessionFactory.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,27 @@ public bool CheckSessionsWereClosed()
5353
var allClosed = true;
5454
foreach (var session in _openedSessions)
5555
{
56-
if (session.IsOpen)
56+
var txContext = session.TransactionContext;
57+
txContext?.WaitOne();
58+
59+
if (!session.IsOpen)
60+
continue;
61+
62+
if (txContext?.ShouldCloseSessionOnDistributedTransactionCompleted ?? false)
5763
{
58-
if (session.TransactionContext?.ShouldCloseSessionOnDistributedTransactionCompleted ?? false)
64+
// Delayed transactions not having completed and closed their sessions? Give them a chance to complete.
65+
Thread.Sleep(100);
66+
if (!session.IsOpen)
5967
{
60-
// Delayed transactions not having completed and closed their sessions? Give them a chance to complete.
61-
Thread.Sleep(100);
62-
if (!session.IsOpen)
63-
{
64-
_log.Warn($"Test case had a delayed close of session {session.SessionId}.");
65-
continue;
66-
}
68+
_log.Warn($"Test case had a delayed close of session {session.SessionId}.");
69+
continue;
6770
}
68-
69-
_log.Error($"Test case didn't close session {session.SessionId}, closing");
70-
allClosed = false;
71-
(session as ISession)?.Close();
72-
(session as IStatelessSession)?.Close();
7371
}
72+
73+
_log.Error($"Test case didn't close session {session.SessionId}, closing");
74+
allClosed = false;
75+
(session as ISession)?.Close();
76+
(session as IStatelessSession)?.Close();
7477
}
7578

7679
return allClosed;

0 commit comments

Comments
 (0)