Branch failing after upgrade to 4.01

If you are having a problem using Vault, post a message here.

Moderator: SourceGear

Post Reply
eboykin
Posts: 20
Joined: Fri Aug 18, 2006 10:36 am

Branch failing after upgrade to 4.01

Post by eboykin » Mon Jun 25, 2007 5:46 am

We recently upgraded from 3.1 to 4.01 and now I cant seem to branch a project.
A bit more info. I am branching a LARGE project. I was able to branch a MUCH smaller one.

Here is the log file that is beign generated:

----6/25/2007 7:16:32 AM eb--pool-71-174-69-43.bstnma.fios.verizon.net(71.174.69.43)--SSL Disabled 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.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at VaultServiceSQL.VaultSqlSCC.BranchFolder(VaultSqlConn conn, String strSessionID, Int32 nRepID, Hashtable htSharedItems, HybridDictionary htTxModifiedItems, Int64 nTxID, Int32 nTxItem, Byte nTxType, VaultDateTime vdTxBegin, String strItemPath, String strNewBranchName, String strXml, BranchingModTime bmt, VaultFolder vfRoot, String strTxComment, Int32& nCopiedSecurityFolderRights, VaultFolder& vfOut) at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at VaultServiceSQL.VaultSqlSCC.BranchFolder(VaultSqlConn conn, String strSessionID, Int32 nRepID, Hashtable htSharedItems, HybridDictionary htTxModifiedItems, Int64 nTxID, Int32 nTxItem, Byte nTxType, VaultDateTime vdTxBegin, String strItemPath, String strNewBranchName, String strXml, BranchingModTime bmt, VaultFolder vfRoot, String strTxComment, Int32& nCopiedSecurityFolderRights, VaultFolder& vfOut)
----6/25/2007 7:16:47 AM eb--pool-71-174-69-43.bstnma.fios.verizon.net(71.174.69.43)--SSL Disabled 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.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
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)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction)
at System.Data.SqlClient.SqlInternalTransaction.Rollback()
at System.Data.SqlClient.SqlTransaction.Rollback()
at VaultServiceSQL.VaultSqlConn.RollbackTransaction() at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
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)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction)
at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction)
at System.Data.SqlClient.SqlInternalTransaction.Rollback()
at System.Data.SqlClient.SqlTransaction.Rollback()
at VaultServiceSQL.VaultSqlConn.RollbackTransaction()
----6/25/2007 7:16:48 AM eb--pool-71-174-69-43.bstnma.fios.verizon.net(71.174.69.43)--SSL Disabled (457e6480-68e5-4585-abb0-d2efebd435f7) EndTx (Revision - 0) returned: FailDBReader
----6/25/2007 7:16:48 AM eb--pool-71-174-69-43.bstnma.fios.verizon.net(71.174.69.43)--SSL Disabled (457e6480-68e5-4585-abb0-d2efebd435f7) CopyBranch: $/Delphi_50 to $/Delphi_50_163 returned: FailDBReader
----6/25/2007 7:22:12 AM dl--10.0.0.124(10.0.0.124)--SSL Disabled Login

jclausius
Posts: 3706
Joined: Tue Dec 16, 2003 1:17 pm
Location: SourceGear
Contact:

Post by jclausius » Mon Jun 25, 2007 8:05 am

The SQL Server timeout period is configured in your vault.config file. Change the value for SQLCommandTimeout to something like 1200 (or higher) for a 20 minute timeout, and save the file. You'll need to restart the Vault server (iisreset.exe) to force the server to re-read the changes.

Branch times should be faster in Vault 3.5.2 and Vault 4.0, but it will be a bit more demanding on your SQL Server's disk I/O and temporary database usage.
Jeff Clausius
SourceGear

eboykin
Posts: 20
Joined: Fri Aug 18, 2006 10:36 am

Post by eboykin » Mon Jun 25, 2007 9:57 am

I set the timeout to 1 hour. It still failed. This is a fairly large source tree. It's close to 2.75 GB in size. The database has plenty of room for the data and log files to grow.

A large chunk of that is in a cloaked folder. Does a branching operation include cloaked folders? I would hope not.

Any other ideas?

eboykin
Posts: 20
Joined: Fri Aug 18, 2006 10:36 am

Still failing.

Post by eboykin » Tue Jun 26, 2007 3:29 am

I set the timeout to 1 hour.

I restarted the db and web servers.

I defregged the harddrives.

I attempted the branch late at night when nobody was logged in

This server is a full raid-5 server with plenty of ram. I am running this branch during a zero load period.

It is still failing due to timeouts.

I've branced this tree before with Vault 3.x. This problem has only started with the upgrade to 4.01

----6/25/2007 11:08:38 PM eb--10.0.0.6(10.0.0.6)--SSL Disabled 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.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at VaultServiceSQL.VaultSqlSCC.BranchFolder(VaultSqlConn conn, String strSessionID, Int32 nRepID, Hashtable htSharedItems, HybridDictionary htTxModifiedItems, Int64 nTxID, Int32 nTxItem, Byte nTxType, VaultDateTime vdTxBegin, String strItemPath, String strNewBranchName, String strXml, BranchingModTime bmt, VaultFolder vfRoot, String strTxComment, Int32& nCopiedSecurityFolderRights, VaultFolder& vfOut) at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at VaultServiceSQL.VaultSqlSCC.BranchFolder(VaultSqlConn conn, String strSessionID, Int32 nRepID, Hashtable htSharedItems, HybridDictionary htTxModifiedItems, Int64 nTxID, Int32 nTxItem, Byte nTxType, VaultDateTime vdTxBegin, String strItemPath, String strNewBranchName, String strXml, BranchingModTime bmt, VaultFolder vfRoot, String strTxComment, Int32& nCopiedSecurityFolderRights, VaultFolder& vfOut)
----6/25/2007 11:08:53 PM eb--10.0.0.6(10.0.0.6)--SSL Disabled (d7624a54-9238-4a04-8175-6bacca8c48a6) EndTx (Revision - 0) returned: FailDBReader
----6/25/2007 11:08:53 PM eb--10.0.0.6(10.0.0.6)--SSL Disabled (d7624a54-9238-4a04-8175-6bacca8c48a6) CopyBranch: $/Delphi_50 to $/Delphi_50_163 returned: FailDBReader

jclausius
Posts: 3706
Joined: Tue Dec 16, 2003 1:17 pm
Location: SourceGear
Contact:

Post by jclausius » Tue Jun 26, 2007 7:12 am

Its not the size of the branch, but the number of nodes that will determine how much time it takes to branch.

A couple of suggestions for branching:

1) Make sure your indices have all been re-built and defragged. The branch will build a folder structure inside the database. If your DB has not been optimized, this may take some time. Additionally, all new nodes will need to be added to existing tables and their indices. Properly maintained indices will improve performance in this area.

2) Make sure SQL Server's temp database has plenty of room to grow, and is on a fast disk IO subsystem. The temporary folder structure mentioned above is manipulated in temp tables which are stored in the temp database.

3) Make sure the temp and sgvault databases have plenty of room for growth. Adding 100s of thousands of nodes will cause the databases to grow requiring room on disk. Also, if your .mdf files are more than 1GB, you may want to reconsider changing the growth strategy. Using a fixed growth setting rather than a percentage based setting will give you more control when your databases reach a larger size.

4) Make sure the temp and sgvault databases which exist on a file system based disk subsystems that have been properly fragmented. The growth mentioned in step 3 will need to take blocks from the file system. If you're file system is severely fragmented, then those operations will be slowed down.

5) Increase the SQL command timeout. Ultimately, you'll need to find a setting to allow the database enough time to complete the operation.

6) Ensure the SQL Server is not being starved of CPU or disk time. If you are not already doing so, reduce the amount of processor time or disk time the SQL Server machine spends on other processes. This would include email servers, virus servers and scans, domain controllers, etc.


The branching in Vault 3.5.2 and above was vastly improved. In our internal tests, branches that took hours were completed in mere minutes. If none of the suggestions above seem to help the situation, then we may need to escalate this and bring your database in-house to try to trouble shoot the problem in a controlled environment.
Jeff Clausius
SourceGear

Post Reply