I get an exception on Domain.Build (Perform mode), after a binary update.
Xtensive.Storage.StorageException: Error 'Unknown'. Original message: This SqlTransaction has completed; it is no longer usable. ---> System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at Xtensive.Sql.SqlConnection.Rollback()
at Xtensive.Storage.Providers.Sql.Driver.RollbackTransaction(Session session, SqlConnection connection)
--- End of inner exception stack trace ---
at Xtensive.Storage.Providers.Sql.Driver.RollbackTransaction(Session session, SqlConnection connection)
at Xtensive.Storage.Providers.Sql.SessionHandler.RollbackTransaction()
at Xtensive.Storage.Session.RollbackTransaction(Transaction transaction)
at Xtensive.Storage.Transaction.Rollback()
at Xtensive.Storage.TransactionScope.Dispose()
at Xtensive.Storage.Building.Builders.DomainBuilder.BuildDomain(DomainConfiguration configuration, DomainBuilderConfiguration builderConfiguration)
at Xtensive.Storage.Upgrade.UpgradingDomainBuilder.BuildStageDomain(UpgradeStage stage)
at Xtensive.Storage.Upgrade.UpgradingDomainBuilder.Build(DomainConfiguration configuration)
at PersistenceModule.CreateDomain()
Old version of dataobjects 1.0.5887.272748, new version 1.0.6015.32474.
I’m doing an update of binaries (with a 4Go database to update with an Update handler) : I don’t know if it is important (data does not seem changed after reverting to old binaries).
Any idea or recommendation?
EDIT:
The original exception is a timeout exception (I should have guessed;) ) Is there a standard way to increase timeout during domain build? Is it possible you display a more meaningful exception in this case?
First exception:
System.Data.SqlClient.SqlException occurred
Message=Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=11
LineNumber=0
Number=-2
Procedure=""
Server=localhost\SQLEXPRESS
State=0
StackTrace:
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.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Xtensive.Storage.Providers.Sql.Driver.ExecuteNonQuery(Session session, DbCommand command) in c:\Temp\DataObjects.Net\Xtensive.Storage\Xtensive.Storage.Providers.Sql\Driver.Operations.cs:line 138
InnerException:
Call stack:
System.Data.dll!System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(string methodName = "ExecuteNonQuery", bool async = false) + 0x136 bytes
System.Data.dll!System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(System.Data.Common.DbAsyncResult result = null, string methodName = "ExecuteNonQuery", bool sendToPipe = false) + 0x1bd bytes
System.Data.dll!System.Data.SqlClient.SqlCommand.ExecuteNonQuery() + 0xa1 bytes
Xtensive.Storage.Providers.Sql.dll!Xtensive.Storage.Providers.Sql.Driver.ExecuteNonQuery(Xtensive.Storage.Session session = null, System.Data.Common.DbCommand command = {System.Data.SqlClient.SqlCommand}) Line 138 + 0xb bytes C#
Xtensive.Storage.Providers.Sql.dll!Xtensive.Storage.Providers.Sql.SchemaUpgradeHandler.Execute(System.Collections.Generic.IEnumerable<string> batch = Count = 260) Line 112 + 0x21 bytes C#
Xtensive.Storage.Providers.Sql.dll!Xtensive.Storage.Providers.Sql.SchemaUpgradeHandler.UpgradeSchema(Xtensive.Modelling.Actions.ActionSequence upgradeActions = {Xtensive.Modelling.Actions.ActionSequence}, Xtensive.Storage.Indexing.Model.StorageInfo sourceSchema = ".", Xtensive.Storage.Indexing.Model.StorageInfo targetSchema = ".") Line 69 C#
Xtensive.Storage.dll!Xtensive.Storage.Building.Builders.DomainBuilder.SynchronizeSchema(Xtensive.Storage.Building.SchemaUpgradeMode schemaUpgradeMode = Perform) Line 354 C#
Xtensive.Storage.dll!Xtensive.Storage.Building.Builders.DomainBuilder.BuildDomain(Xtensive.Storage.Configuration.DomainConfiguration configuration = {Xtensive.Storage.Configuration.DomainConfiguration}, Xtensive.Storage.Building.Builders.DomainBuilderConfiguration builderConfiguration = {Xtensive.Storage.Building.Builders.DomainBuilderConfiguration}) Line 71 C#
Xtensive.Storage.dll!Xtensive.Storage.Upgrade.UpgradingDomainBuilder.BuildStageDomain(Xtensive.Storage.Upgrade.UpgradeStage stage = Upgrading) Line 82 + 0x2a bytes C#
Xtensive.Storage.dll!Xtensive.Storage.Upgrade.UpgradingDomainBuilder.Build(Xtensive.Storage.Configuration.DomainConfiguration configuration = {Xtensive.Storage.Configuration.DomainConfiguration}) Line 59 + 0xb bytes C#
Xtensive.Storage.dll!Xtensive.Storage.Domain.Build(Xtensive.Storage.Configuration.DomainConfiguration configuration = {Xtensive.Storage.Configuration.DomainConfiguration}) Line 225 + 0x9 bytes C#
EDIT 2:
I added the suggested code:
DomainConfiguration domainConfig = new DomainConfiguration(connectionUrl);
SessionConfiguration systemSessionConfig = domainConfig.Sessions.System;
if (systemSessionConfig == null)
{
systemSessionConfig = new SessionConfiguration(WellKnown.Sessions.System);
domainConfig.Sessions.Add(systemSessionConfig);
}
systemSessionConfig.DefaultCommandTimeout = 600; // 10 min.
But this isn't working either.

The command timeout seems not to be set.
Alex : I really need this solved : the upgrade must work with large database.