Sorted :)

I wasn't flushing the session in my UOW when commit was called.



On Aug 20, 3:40 pm, Ollie Riches <[email protected]> wrote:
> I think the important detail for the exception is:
>
> 2010-08-20 15:27:22,563 [6] ERROR NHibernate.Impl.AbstractSessionImpl
> - 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()
>    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.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest
> transactionRequest, String name, IsolationLevel iso,
> SqlInternalTransaction internalTransaction, Boolean
> isDelegateControlRequest)
>    at
> System.Data.SqlClient.SqlDelegatedTransaction.SinglePhaseCommit(SinglePhaseEnlistment
> enlistment)
>
> On Aug 20, 3:38 pm, Ollie Riches <[email protected]> wrote:
>
> > I'm receiving the following error when I started using MessageQueue
> > inside a TransactionScope transaction - any ideas why this is
> > happening, I realise the transaction is now getting prompted to a
> > distributed transaction and hence have turned on and configured MSDTC.
>
> > I suspect this is something to do with row count, does anyone know?
>
> > Shown below is the MessageQueue that is causing NH to fail:
>
> >                 using (var queue = new MessageQueue(_exportEndpoint))
> >                 {
> >                     var label = string.Format("{0} ComponentId - {1}",
> > DateTime.Now.ToUniversalTime(), componentId);
> >                     queue.Send(contents, label,
> > MessageQueueTransactionType.Automatic);
> >                     _log.WriteInfo("ExportToQueue: Message sent to
> > queue - " + label);
> >                 }
>
> > Shown below is the exception from NH:
>
> > 2010-08-20 15:27:22,516 [6] ERROR
> > NHibernate.Event.Default.AbstractFlushingEventListener - 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)
> >    at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation
> > expectation)
> >    at
> > NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
> > Object[] fields, Object[] oldFields, Object rowId, Boolean[]
> > includeProperty, Int32 j, Object oldVersion, Object obj,
> > SqlCommandInfo sql, ISessionImplementor session)
> >    at
> > NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert(Object
> > id, Object[] fields, Object[] oldFields, Object rowId, Boolean[]
> > includeProperty, Int32 j, Object oldVersion, Object obj,
> > SqlCommandInfo sql, ISessionImplementor session)
> >    at
> > NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id,
> > Object[] fields, Int32[] dirtyFields, Boolean hasDirtyCollection,
> > Object[] oldFields, Object oldVersion, Object obj, Object rowId,
> > ISessionImplementor session)
> >    at NHibernate.Action.EntityUpdateAction.Execute()
> >    at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
> >    at NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
> >    at NHibernate.Engine.ActionQueue.ExecuteActions()
> >    at
> > NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource
> > session)

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