If someone want to take additional look a this, I attached he NH patch with the failing test.
2009/10/7 Ayende Rahien <[email protected]> > when in doubt with nhibernate, plug in nh prof :-) > Here is what is going on there: > > -- statement #1 > INSERT INTO [Submission] > (Version, > Id) > VALUES (1 /* @p0 */, > 0 /* @p1 */) > > -- statement #2 > ERROR: > Could not synchronize database state with session > NHibernate.StaleStateException: Unexpected row count: -1; expected: 1 > at > NHibernate.AdoNet.Expectations.BasicExpectation.VerifyOutcomeNonBatched(Int32 > rowCount, IDbCommand statement) in > C:\oss\NHibernate\src\NHibernate\AdoNet\Expectations.cs:line 33 > at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation > expectation) in > C:\oss\NHibernate\src\NHibernate\AdoNet\NonBatchingBatcher.cs:line 40 > at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, > Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, > ISessionImplementor session) in > C:\oss\NHibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line > 2642 > at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, > Object[] fields, Object obj, ISessionImplementor session) in > C:\oss\NHibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line > 2990 > at NHibernate.Action.EntityInsertAction.Execute() in > C:\oss\NHibernate\src\NHibernate\Action\EntityInsertAction.cs:line 59 > at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) in > C:\oss\NHibernate\src\NHibernate\Engine\ActionQueue.cs:line 130 > at NHibernate.Engine.ActionQueue.ExecuteActions(IList list) in > C:\oss\NHibernate\src\NHibernate\Engine\ActionQueue.cs:line 113 > at NHibernate.Engine.ActionQueue.ExecuteActions() in > C:\oss\NHibernate\src\NHibernate\Engine\ActionQueue.cs:line 146 > at > NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource > session) in > C:\oss\NHibernate\src\NHibernate\Event\Default\AbstractFlushingEventListener.cs:line > 255 > at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent > event) in > C:\oss\NHibernate\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:line > 19 > at NHibernate.Impl.SessionImpl.Flush() in > C:\oss\NHibernate\src\NHibernate\Impl\SessionImpl.cs:line 1523 > at > NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment > preparingEnlistment) in > C:\oss\NHibernate\src\NHibernate\Transaction\AdoNetWithDistrubtedTransactionFactory.cs:line > 107 > > -- statement #3 > ERROR: > DTC transaction prepre phase failed > System.Transactions.TransactionException: The operation is not valid for > the state of the transaction. ---> System.Data.SqlClient.SqlException: > Timeout expired. The timeout period elapsed prior to completion of the > operation or the server is not responding. > at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException > exception, Boolean breakConnection) > at > System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject > stateObj) > at > System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject > stateObj, UInt32 error) > at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult > asyncResult, TdsParserStateObject stateObj) > at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() > at System.Data.SqlClient.TdsParserStateObject.ReadBuffer() > at System.Data.SqlClient.TdsParserStateObject.ReadByte() > at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, > SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet > bulkCopyHandler, TdsParserStateObject stateObj) > at > System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] > buffer, TransactionManagerRequestType request, String transactionName, > TransactionManagerIsolationLevel isoLevel, Int32 timeout, > SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean > isDelegateControlRequest) > at > System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest > transactionRequest, String transactionName, IsolationLevel iso, > SqlInternalTransaction internalTransaction, Boolean > isDelegateControlRequest) > at > System.Data.SqlClient.SqlDelegatedTransaction.SinglePhaseCommit(SinglePhaseEnlistment > enlistment) > --- End of inner exception stack trace --- > at System.Transactions.TransactionState.Rollback(InternalTransaction tx, > Exception e) > at System.Transactions.Transaction.Rollback() > at System.Transactions.TransactionScope.InternalDispose() > at System.Transactions.TransactionScope.Dispose() > at > NHibernate.Transaction.AdoNetWithDistrubtedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment > preparingEnlistment) in > C:\oss\NHibernate\src\NHibernate\Transaction\AdoNetWithDistrubtedTransactionFactory.cs:line > 113 > > > I am not sure _why_ this is going on, though. > > But I don't get what is actually happening, which is really annoying. > I managed to repro that on the NH code base, I'll post to the nh dev > mailing list with the details. > > > 2009/10/7 Simone Busoli <[email protected]> > >> That must be something trivial, or at least that's what I usually end up >> with when I struggle on stuff like this after going down the 'select is >> broken' path. >> >> 2009/10/7 Ayende Rahien <[email protected]> >> >>> I can't figure out what is going on there yet, it is REALLY strange. >>> >>> 2009/10/7 Simone Busoli <[email protected]> >>> >>> That's pretty weird, I think thousands of people are doing the same all >>>> over the world, or am I missing something which makes this case special? >>>> >>>> 2009/10/7 Ayende Rahien <[email protected]> >>>> >>>> That is a bug, investigating where the issue is now >>>>> >>>>> 2009/10/7 Vadim Kantorov <[email protected]> >>>>> >>>>> >>>>>> Uploaded a repro. It presumes you have an sql express instance on your >>>>>> machine (if not, please go to the DefaultDatabaseConfiguration file to >>>>>> change) and "bugs" database created with enabled trusted connection. >>>>>> >>>>>> On 8 окт, 00:48, Vadim Kantorov <[email protected]> wrote: >>>>>> > Ok, I have an idea how to reproduce ;) >>>>>> > Instead of creating a new project, I'll copy this one and remove all >>>>>> > the rubbish :) >>>>>> > >>>>>> > On 8 окт, 00:23, Ayende Rahien <[email protected]> wrote: >>>>>> > >>>>>> > >>>>>> > >>>>>> > > Can you create a unit test to reproduce the problem?This scenario >>>>>> is known >>>>>> > > to work correctly (at least I think so, I wrote a test for >>>>>> something >>>>>> > > similar). >>>>>> > >>>>>> > > 2009/10/7 Vadim Kantorov <[email protected]> >>>>>> > >>>>>> > > > Helped. Ridiculous. >>>>>> > > > Oren, I would like the session to be enlisted in the >>>>>> transaction, so >>>>>> > > > it is ok, isn't it? >>>>>> > >>>>>> > > > I still have no clue what this exception means and what are the >>>>>> > > > internal reasons.. >>>>>> > > > Oren, if you do, could you please explain further a little bit. >>>>>> > >>>>>> > > > I wonder if it is me who screwed up or it is NH or whatever that >>>>>> is >>>>>> > > > buggy. >>>>>> > >>>>>> > > > On 7 окт, 23:37, Corey Kaylor <[email protected]> wrote: >>>>>> > > > > Not sure which Dialect is being used, but if it's SQL Server >>>>>> we've had >>>>>> > > > > issues with the enlistment of transactions in NHibernate and >>>>>> changed our >>>>>> > > > > settings to use the property below. I hadn't had time to track >>>>>> down >>>>>> > > > exactly >>>>>> > > > > why the default transaction factory had issues, but regardless >>>>>> for us >>>>>> > > > this >>>>>> > > > > fixed our issues. >>>>>> > > > > .SetProperty(Environment.TransactionStrategy, >>>>>> > > > > "NHibernate.Transaction.AdoNetTransactionFactory") >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" 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/rhino-tools-dev?hl=en -~----------~----~----~----~------~----~------~--~---
nh-dtc-bug.patch
Description: Binary data
