I'm not big on ambient transactions... but your I think there's a problem
with your code.
IMO, it should look like this:

       using (TransactionScope tx =
new TransactionScope(TransactionScopeOption.RequiresNew))
       using (ISession session = sessions.OpenSession())
       using (ITransaction nhtx = session.BeginTransaction())
       {
           W s = new W();
           session.Save(s);
           session.Flush();
           nhtx.Commit();
       }

Try it and see if there's any difference.

   Diego


On Thu, Apr 15, 2010 at 01:48, Iain <[email protected]> wrote:

> Hi All,
>
> I am having a connection leak when we using the ambient transaction,
> and the transaction is aborted. That is, I get the exception:
> System.InvalidOperationException: Timeout expired.  The timeout period
> elapsed prior to obtaining a connection from the pool.  This may have
> occurred because all pooled connections were in use and max pool size
> was reached.
>
> I am guessing something is holding onto a reference to the connection,
> or an internal part of the connection. As adding a watch to following
> and debug breaking within the transaction also causes this issue.
>                ((System.Data.SqlClient.SqlInternalConnectionTds)
> ((System.Data.SqlClient.SqlConnection)
> (session.Connection))._innerConnection)._connectionPool.Count
>
> Is this a known issue or unsupported? Currently our workaround is to
> promote the transaction to a distributed transaction which seems to
> work ok, as per this article:
> http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhibernate/
>
> Here is the unit test that re-produces the issue:
>
> [Test]
> public void CanUseSystemTransactionsToAbort()
> {
>    for (var i = 0; i < 200; i++)
>    {
>        using (ISession session = sessions.OpenSession())
>        using (TransactionScope tx = new
> TransactionScope(TransactionScopeOption.RequiresNew))
>        {
>            W s = new W();
>            session.Save(s);
>            session.Flush();
>        }
>    }
> }
>
> Cheers,
>
> Iain
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to