Hi Juan,

We fixed the issue today. We did a clean reinstall of MSDTC based on
Microsoft KB article. Now the same code is working fine!

Thanks for your interest.

Regards,
Samir

On Fri, Feb 25, 2011 at 1:11 AM, Juan <[email protected]> wrote:

> Just recreated your scenario, but everything works for me. Compared
> the logs and they both look pretty much the same until your 2nd
> insert, when it tries to get the id via a sequence, yours bomb...
> probably connection is not valid.
>
> At this point it seems like a configuration problem (nh, connection
> string, msdtc, etc)
>
> Can you post your nh configuraiton?
>
> On Feb 23, 1:26 am, [email protected] wrote:
> > Yes, both pooling and OraMTS are enabled. We have tried reinstalling COM+
>
> > and MSDTC too. But no luck.
> >
> > I've seen the link that you mentioned. But it does not help much. It is
> > mainly to avoid leaking connections - if we don't use NH transactions
> > within transactionscope, then it leaks connections. Unfortunately for us
> we
> > don't reach that stage at all. Exception occurs before end of
> > transactionScope block.
> >
> > On , Juan <[email protected]> wrote:
> >
> > > Hmm... connection pooling and oraclemts winservice enabled?
> > > Also, have you seen this? It might be related
> > >http://davybrion.com/blog/2010/05/avoiding-leaking-connections-with-n.
> ..
> > > On Feb 22, 1:41 am, Samir [email protected]> wrote:
> > > > Hi Juan,
> >
> > > > It was mistake in my mail. We do have TransactionScope.complete()
> just
> > > > before end of using block. Problem is it does not reach there at all.
> > > > The exception occurs before that - second session.flush().
> >
> > > > Regards,
> > > > Samir
> >
> > > > On Feb 22, 11:13 am, Juan [email protected]> wrote:
> >
> > > > > Since you didn't call transactioscope.complete(), it is trying to
> > > > > rollback the SQL insert/updates issued by session.flush(), but
> since
> > > > > the session is gone, it can't
> >
> > > > > On Feb 19, 7:33 am, Samir [email protected]> wrote:
> >
> > > > > > We are having an application which is working file in development
> > > > > > environment, but in the test environment, we get an exception
> > > whenever
> > > > > > we try to perform second operation within a transaction scope.
> > > > > > Pseudocode that is causing the issue:
> >
> > > > > > using (TransactionScope tScope = new TransactionScope())
> > > > > > {
> > > > > > using (ISession session = sessionFactory.OpenSession())
> > > > > > {
> > > > > > session.SaveOrUpdate(obj1); // some transient obj
> > > > > > session.Flush();
> > > > > > }
> >
> > > > > > using (ISession session = sessionFactory.OpenSession())
> > > > > > {
> > > > > > session.SaveOrUpdate(obj2); // some another transient obj
> > > > > > session.Flush(); // Exception occurs here
> > > > > > }
> >
> > > > > > }
> >
> > > > > > The exception that occurs:
> >
> > > > > > Message: Error has occured in service:
> > > > > > System.Transactions.TransactionException: The operation is not
> valid
> > > > > > for the state of the transaction.
> > > > > > at
> >
> > > System.Transactions.TransactionState.EnlistVolatile(InternalTransaction
> > > > > > tx, IEnlistmentNotification enlistmentNotification,
> > > EnlistmentOptions
> > > > > > enlistmentOptions, Transaction atomicTransaction)
> > > > > > at
> >
> > > System.Transactions.Transaction.EnlistVolatile(IEnlistmentNotification
> > > > > > enlistmentNotification, EnlistmentOptions enlistmentOptions)
> > > > > > at
> >
> > >
> NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.EnlistInDist
>
> > > ributedTransactionIfNeeded(ISessionImplementor
> > > > > > session)
> > > > > > at
> >
> > >
> NHibernate.Impl.AbstractSessionImpl.EnlistInAmbientTransactionIfNeeded()
> > > > > > at
> > > > > > NHibernate.Impl.AbstractSessionImpl.CheckAndUpdateSessionStatus()
> > > > > > at NHibernate.Impl.SessionImpl.get_Batcher()
> > > > > > at NHibernate.Type.DbTimestampType.UsePreparedStatement(String
> > > > > > timestampSelectString, ISessionImplementor session)
> > > > > > at
> >
> > > NHibernate.Type.DbTimestampType.GetCurrentTimestamp(ISessionImplementor
> > > > > > session)
> > > > > > at NHibernate.Type.DbTimestampType.Seed(ISessionImplementor
> > > > > > session)
> > > > > > at NHibernate.Type.TimestampType.Next(Object current,
> > > > > > ISessionImplementor session)
> > > > > > at NHibernate.Engine.Versioning.Increment(Object version,
> > > > > > IVersionType versionType, ISessionImplementor session)
> > > > > > at
> >
> > >
> NHibernate.Event.Default.DefaultFlushEntityEventListener.GetNextVersion(Flu
>
> > > shEntityEvent
> > > > > > event)
> > > > > > at
> >
> > >
> NHibernate.Event.Default.DefaultFlushEntityEventListener.ScheduleUpdate(Flu
>
> > > shEntityEvent
> > > > > > event)
> > > > > > at
> >
> > >
> NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity(Flus
>
> > > hEntityEvent
> > > > > > event)
> > > > > > at
> >
> > >
> NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities(FlushE
>
> > > vent
> > > > > > event)
> > > > > > at
> >
> > >
> NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExe
>
> > > cutions(FlushEvent
> > > > > > event)
> > > > > > at
> >
> > > NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent
> > > > > > event)
> > > > > > at NHibernate.Impl.SessionImpl.Flush()
> >
> > > > > > We have checked that MSDTC is running fine. On test server, if we
>
> > > use
> > > > > > plain OracleConnection class within TransactionScope, then code
> is
> > > > > > working fine. Issue occurs when using NHibernate session only. We
>
> > > are
> > > > > > using:
> >
> > > > > > NHibernate 3.0.0
> > > > > > Oracle Client 11.2.0.1
> > > > > > .NET 3.5 SP1
> >
> > > > > > In the nhibernate logs, following are the last few lines when
> > > > > > transaction is suddenly rolled back without any error in the log:
> >
> > > > > > 2011-02-19 19:54:38,155 [9] DEBUG
> NHibernate.AdoNet.AbstractBatcher
> > > -
> > > > > > ExecuteNonQuery took 1 ms
> > > > > > 2011-02-19 19:54:38,155 [9] DEBUG
> NHibernate.AdoNet.AbstractBatcher
> > > -
> > > > > > Closed IDbCommand, open IDbCommands: 0
> > > > > > 2011-02-19 19:54:38,170 [9] DEBUG
> > > > > > NHibernate.Persister.Collection.ICollectionPersister - done
> deleting
> > > > > > collection
> > > > > > 2011-02-19 19:54:38,170 [9] DEBUG
> > > > > > NHibernate.Persister.Collection.ICollectionPersister - Inserting
> > > > > > collection: [XXX.BusinessEntities.RolePlayer.PartyNameList#843]
> > > > > > 2011-02-19 19:54:38,186 [9] DEBUG
> > > > > > NHibernate.Persister.Collection.ICollectionPersister - collection
>
> > > was
> > > > > > empty
> > > > > > 2011-02-19 19:54:38,186 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - registering flush end
> > > > > > 2011-02-19 19:54:38,201 [9] DEBUG
> > > > > > NHibernate.Event.Default.AbstractFlushingEventListener - post
> flush
> > > > > > 2011-02-19 19:54:38,201 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > [session-id=4391a921-5624-4552-bfa4-13b87f92b6cc] running
> > > > > > ISession.Dispose()
> >
> > > > > > ------- Here the first session is complete and second start
> starts
> > > > > > within same TransactionScope
> >
> > > > > > 2011-02-19 19:54:38,217 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > [session-id=5b33510a-593c-464c-98d9-f01eb52dce24] opened session
> at
> > > > > > timestamp: 634337420782, for session factory: [/
> > > > > > b72244cfece246d985ae4d4a2bbd9bd3]
> > > > > > 2011-02-19 19:54:38,217 [9] DEBUG
> > > NHibernate.Impl.AbstractSessionImpl
> > > > > > - enlisted into DTC transaction: Serializable
> > > > > > 2011-02-19 19:54:38,233 [9] DEBUG NHibernate.Engine.VersionValue
> -
> > > > > > version unsaved-value strategy UNDEFINED
> > > > > > 2011-02-19 19:54:38,248 [9] DEBUG
> NHibernate.Engine.IdentifierValue
> > > -
> > > > > > unsaved-value: 0
> > > > > > 2011-02-19 19:54:38,248 [9] DEBUG
> > > > > > NHibernate.Event.Default.AbstractSaveEventListener - transient
> > > > > > instance of: XXX.BusinessEntities.ScreenSectionConfirmation
> > > > > > 2011-02-19 19:54:38,264 [9] DEBUG
> > > > > > NHibernate.Event.Default.DefaultMergeEventListener - merging
> > > transient
> > > > > > instance
> > > > > > 2011-02-19 19:54:38,280 [9] DEBUG
> NHibernate.AdoNet.AbstractBatcher
> > > -
> > > > > > Opened new IDbCommand, open IDbCommands: 1
> > > > > > 2011-02-19 19:54:38,280 [9] DEBUG
> NHibernate.AdoNet.AbstractBatcher
> > > -
> > > > > > Building an IDbCommand object for the SqlString: select
> > > > > > SEQ_SCR_SECTION_CONFIRM_ID.nextval from dual
> > > > > > 2011-02-19 19:54:38,295 [9] DEBUG NHibernate.SQL - select
> > > > > > SEQ_SCR_SECTION_CONFIRM_ID.nextval from dual
> > > > > > 2011-02-19 19:54:38,295 [9] DEBUG
> > > > > > NHibernate.Connection.DriverConnectionProvider - Obtaining
> > > > > > IDbConnection from Driver
> > > > > > 2011-02-19 19:54:38,436 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > transaction completion
> > > > > > 2011-02-19 19:54:38,436 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - aggressively releasing database connection
> > > > > > 2011-02-19 19:54:38,451 [9] DEBUG
> > > > > > NHibernate.Connection.ConnectionProvider - Closing connection
> > > > > > 2011-02-19 19:54:38,451 [9] DEBUG
> > > NHibernate.Impl.AbstractSessionImpl
> > > > > > - rolled back DTC transaction
> > > > > > 2011-02-19 19:54:38,467 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > transaction completion
> > > > > > 2011-02-19 19:54:38,467 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - aggressively releasing database connection
> > > > > > 2011-02-19 19:54:38,483 [9] DEBUG
> > > NHibernate.Impl.AbstractSessionImpl
> > > > > > - rolled back DTC transaction
> > > > > > 2011-02-19 19:54:38,483 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > transaction completion
> > > > > > 2011-02-19 19:54:38,498 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - aggressively releasing database connection
> > > > > > 2011-02-19 19:54:38,498 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > [session-id=4391a921-5624-4552-bfa4-13b87f92b6cc] executing real
> > > > > > Dispose(True)
> > > > > > 2011-02-19 19:54:38,514 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > closing session
> > > > > > 2011-02-19 19:54:38,514 [9] DEBUG
> NHibernate.AdoNet.AbstractBatcher
> > > -
> > > > > > running BatcherImpl.Dispose(true)
> > > > > > 2011-02-19 19:54:38,530 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > transaction completion
> > > > > > 2011-02-19 19:54:38,545 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - aggressively releasing database connection
> > > > > > 2011-02-19 19:54:38,561 [9] DEBUG
> > > NHibernate.Impl.AbstractSessionImpl
> > > > > > - enlisted into DTC transaction: Serializable
> > > > > > 2011-02-19 19:54:38,561 [9] DEBUG NHibernate.Impl.SessionImpl -
> > > > > > transaction completion
> > > > > > 2011-02-19 19:54:38,576 [9] DEBUG
> > > NHibernate.AdoNet.ConnectionManager
> > > > > > - aggressively releasing database connection
> > > > > > 2011-02-19 19:54:38,576 [9] DEBUG NHibernate.Impl.SessionImpl -
> >
> > ...
> >
> > read more ยป
>
> --
> 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.
>
>

-- 
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