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