diff --git a/src/NHibernate/Impl/AbstractSessionImpl.cs b/src/NHibernate/Impl/AbstractSessionImpl.cs index 6f013a8a994..40178607584 100644 --- a/src/NHibernate/Impl/AbstractSessionImpl.cs +++ b/src/NHibernate/Impl/AbstractSessionImpl.cs @@ -313,17 +313,26 @@ public ProcessHelper(AbstractSessionImpl session) { _session = session; _context = new SessionIdLoggingContext(session.SessionId); - session.CheckAndUpdateSessionStatus(); - _session._processing = true; + try + { + _session.CheckAndUpdateSessionStatus(); + _session._processing = true; + } + catch + { + _context.Dispose(); + _context = null; + throw; + } } public void Dispose() { + _context.Dispose(); + _context = null; if (_session == null) throw new ObjectDisposedException("The session process helper has been disposed already"); _session._processing = false; - _context.Dispose(); - _context = null; _session = null; } }