VSSImport fails part way through

This forum is now locked, since Gold Support is no longer offered.

Moderator: SourceGear

Locked
bradley2j
Posts: 5
Joined: Mon Jul 16, 2007 4:50 pm
Location: New Zealand

VSSImport fails part way through

Post by bradley2j » Mon Nov 26, 2007 12:31 am

Version 4.0.5 running on Windows 2003. The SourceSafe database, Vault server, SQL Server and VSSImport are all running on the same machine. SQL Server 2000 SP4

I tried to import our entire SourceSafe database. The SourceSafe files are about 1.5 GB. Estimated time was two days and it ran for about 24 hours before it started getting errors. After that no more files were created in Vault, but the folders were.

Here's a sample from the log. This was the first error that occurred. The log option was set on Quiet.

----25/11/2007 11:52:44 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled Login
----25/11/2007 11:56:40 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled : Critical Error! Error in the application.
at VaultServiceBase.VaultRepository.CreateFolderReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents, VaultFolders vfOwners, VaultFolder vfOld)
at VaultServiceBase.VaultRepository.GetReferenceCopiesByPath(Int64 nRevID, HybridDictionary hdNewRefParents, String strAbsolutePath, Boolean bRefCopyLastObjectWithAllFolders, VaultFSObjects& fsoList, Int32& nPinCount)
at VaultServiceBase.VaultRepository.ReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents)
at VaultServiceAPILib.VaultServiceAPI.BeginTx(Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID, VaultIntTx& vit)
at VaultService.VaultService.DoBeginTx(String strCallerLogEvt, Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID)
----25/11/2007 11:56:40 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled (b713d6e1-1106-4249-a594-4ce066f82a14) returned: FailInvalidToken
----25/11/2007 11:56:40 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled (b713d6e1-1106-4249-a594-4ce066f82a14) CheckIn: $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp returned: nil
----25/11/2007 11:56:40 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled Logout
----25/11/2007 11:56:42 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled Login
----25/11/2007 11:56:42 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled : Critical Error! Error in the application.
at VaultServiceBase.VaultRepository.CreateFolderReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents, VaultFolders vfOwners, VaultFolder vfOld)
at VaultServiceBase.VaultRepository.GetReferenceCopiesByPath(Int64 nRevID, HybridDictionary hdNewRefParents, String strAbsolutePath, Boolean bRefCopyLastObjectWithAllFolders, VaultFSObjects& fsoList, Int32& nPinCount)
at VaultServiceBase.VaultRepository.ReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents)
at VaultServiceAPILib.VaultServiceAPI.BeginTx(Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID, VaultIntTx& vit)
at VaultService.VaultService.DoBeginTx(String strCallerLogEvt, Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID)
----25/11/2007 11:56:42 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled (5df8a069-bc0f-417b-89ca-a86b6af3ce71) returned: FailInvalidToken
----25/11/2007 11:56:42 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled (5df8a069-bc0f-417b-89ca-a86b6af3ce71) CheckIn: $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp returned: nil
----25/11/2007 11:56:42 a.m. admin--192.168.100.110(192.168.100.110)--SSL Disabled Logout


I deleted the partially imported project (PXULWPFJ) and was able to import just that project with no errors. Are large imports just not practical?

The VSSImport tool is frustratingly inflexible. Each time you run it you have to go through the same steps of identifying the SourceSafe database and mapping the users. And you can only import one project at a time. Doing lots of small imports would be tremendously easier if you could select multiple projects to import. Or if it was scriptable so you didn't have to enter the details by hand each time.

What went wrong with this import and how can I avoid it next time?

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Mon Nov 26, 2007 9:48 am

There are a number of things that could have caused the errors you received. The "Critical Error" usually indicates an IIS problem or a database problem. Since this is a new import and the project imported fine by itself, I'd suspect IIS as the culprit. Whenever one sees a "Critical Error" the first thing to try is an iisreset (start - run - iisreset) and then try again. In your case, what you are doing with importing each project is fine.

Had you seen our KB articles on importing? There are three in our KB Article Index. Just look for the heading Import Tool.

It's not wrong or impossible to import an entire VSS database at once, it just has a higher likelihood of success. In order to exactly pinpoint what happened, we would need to take a closer look at your VSS database. That could take more time though than you continuing to import it one project at a time. If you would like it looked at, then send me an email at support at sourcegear.com (attn: Beth) with a link to this forum thread.

Do you have a lot of imports to do? A VSS import is a one-time operation, so once the migration is complete, it's not something you need to worry about again.

On the other comments, I can take a feature request and that way the developers will see it. All feedback is appreciated.

bradley2j
Posts: 5
Joined: Mon Jul 16, 2007 4:50 pm
Location: New Zealand

Post by bradley2j » Mon Nov 26, 2007 4:55 pm

We have a lot of small projects in a fairly flat directory structure. To complete the import that failed I would have to individually import 82 projects. At 15 minutes per project that would take close to three days of tedious labor. If I could select multiple projects to import then I could do all that with just a few runs of the Import Tool.

Can I run multiple imports at once? At least then I wouldn't have to wait for each one to finish before running the next one.

I have little confidence that another attempt to import the whole database at once won't also fail.

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Mon Nov 26, 2007 5:56 pm

Running multiple imports at once isn't supported. I would be concerned that transactions would not be numbered correctly.

Can you check the log in the directory that the VSS import tool is in and see what errors you received on that largest import? Every import is recorded in that one file, so you may need to look back at the first one. What errors do you have?

bradley2j
Posts: 5
Joined: Mon Jul 16, 2007 4:50 pm
Location: New Zealand

Post by bradley2j » Mon Nov 26, 2007 9:04 pm

These are the errors that occured when the import stopped working.

Checked in $/Dev/PaymentExpress/PXULWPFJ ($/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp) at 15/12/2004 11:45:52 p.m.
Change set type: Modified
Adding to transaction: $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp - C:\Documents and Settings\bradley.smith\Local Settings\Temp\2\tmp5813.tmp
Transaction succeeded.
Checked in $/Dev/PaymentExpress/PXULWPFJ ($/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp) at 18/12/2004 8:45:26 p.m.
Change set type: Modified
Adding to transaction: $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp - C:\Documents and Settings\bradley.smith\Local Settings\Temp\2\tmp5814.tmp
An error occurred while trying to begin a transaction.
Transaction failed
An exception was encountered during the transaction. Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> VaultLib.VaultRefCopyException: Error in the application.
at VaultServiceBase.VaultRepository.CreateFolderReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents, VaultFolders vfOwners, VaultFolder vfOld)
at VaultServiceBase.VaultRepository.GetReferenceCopiesByPath(Int64 nRevID, HybridDictionary hdNewRefParents, String strAbsolutePath, Boolean bRefCopyLastObjectWithAllFolders, VaultFSObjects& fsoList, Int32& nPinCount)
at VaultServiceBase.VaultRepository.ReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents)
at VaultServiceAPILib.VaultServiceAPI.BeginTx(Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID, VaultIntTx& vit)
at VaultService.VaultService.DoBeginTx(String strCallerLogEvt, Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID)
at VaultService.VaultService.BeginTxImport(Int32 nRepID, VaultDateTime dtBeginTx, Int32 nTxUserID, String strComment, VaultRequestItem[]& requests, String& strTxID)
--- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at VaultClientNetLib.ClientService.VaultService.BeginTxImport(Int32 nRepID, VaultDateTime dtBeginTx, Int32 nTxUserID, String strComment, VaultRequestItem[]& requests, String& strTxID)
at VaultClientNetLib.VaultConnection.BeginTx_Import(Int32 nRepID, VaultDateTime dtgBegin, Int32 nUserID, VaultRequestItem[]& requests, String& strTxID, String comment)
at VaultClientOperationsLib.ClientInstance.Commit(ChangeSetItemColl givenItems, String strChangeSetComment, Boolean keepCheckedOut, Boolean removeLocalCopy, CommitType committype, VaultDateTime dateImport, Int32 nUserIDImport, Int64& nRevID, Int32[]& retBegEndTx)
**Failed** - Error trying to commit. Exception of type 'System.Exception' was thrown.
Trace: at VSSImport.WizardForm.ProcessTransaction(String strProgressText, VaultDateTime dtg, Int32 userID)
25/11/2007 11:56:40 a.m. - Unable to commit for 18/12/2004 8:45:26 p.m. - $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp - Checked in $/Dev/PaymentExpress/PXULWPFJ.
Refreshing SourceSafe connection...
Opening: E:\USR\SrcSafe\srcsafe.ini
User: bradley.smith
VSS database open: True

25/11/2007 11:56:40 a.m. - Refreshing connection to the Vault server.

Logged out of the Vault Server.
Connected to Vault.
An error occurred while trying to begin a transaction.
Transaction failed
An exception was encountered during the transaction. Exception: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> VaultLib.VaultRefCopyException: Error in the application.
at VaultServiceBase.VaultRepository.CreateFolderReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents, VaultFolders vfOwners, VaultFolder vfOld)
at VaultServiceBase.VaultRepository.GetReferenceCopiesByPath(Int64 nRevID, HybridDictionary hdNewRefParents, String strAbsolutePath, Boolean bRefCopyLastObjectWithAllFolders, VaultFSObjects& fsoList, Int32& nPinCount)
at VaultServiceBase.VaultRepository.ReferenceCopy(Int64 nRevID, HybridDictionary hdNewRefParents)
at VaultServiceAPILib.VaultServiceAPI.BeginTx(Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID, VaultIntTx& vit)
at VaultService.VaultService.DoBeginTx(String strCallerLogEvt, Int32 nTxUserID, Int32 nRepID, VaultDateTime dtBeginTx, String strComment, VaultRequestItem[]& requests, String& strTxID)
at VaultService.VaultService.BeginTxImport(Int32 nRepID, VaultDateTime dtBeginTx, Int32 nTxUserID, String strComment, VaultRequestItem[]& requests, String& strTxID)
--- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at VaultClientNetLib.ClientService.VaultService.BeginTxImport(Int32 nRepID, VaultDateTime dtBeginTx, Int32 nTxUserID, String strComment, VaultRequestItem[]& requests, String& strTxID)
at VaultClientNetLib.VaultConnection.BeginTx_Import(Int32 nRepID, VaultDateTime dtgBegin, Int32 nUserID, VaultRequestItem[]& requests, String& strTxID, String comment)
at VaultClientOperationsLib.ClientInstance.Commit(ChangeSetItemColl givenItems, String strChangeSetComment, Boolean keepCheckedOut, Boolean removeLocalCopy, CommitType committype, VaultDateTime dateImport, Int32 nUserIDImport, Int64& nRevID, Int32[]& retBegEndTx)
**Failed** - Error trying to commit. Exception of type 'System.Exception' was thrown.
Trace: at VSSImport.WizardForm.ProcessTransaction(String strProgressText, VaultDateTime dtg, Int32 userID)
25/11/2007 11:56:42 a.m. - Unable to commit for 18/12/2004 8:45:26 p.m. - $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp - Checked in $/Dev/PaymentExpress/PXULWPFJ.
Refreshing SourceSafe connection...
Opening: E:\USR\SrcSafe\srcsafe.ini
User: bradley.smith
VSS database open: True

25/11/2007 11:56:42 a.m. - Refreshing connection to the Vault server.

Logged out of the Vault Server.
Connected to Vault.
**Failed** - Second attempt to process $/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp - Checked in $/Dev/PaymentExpress/PXULWPFJ
Checked in $/Dev/PaymentExpress/PXULWPFJ ($/Dev/PaymentExpress/PXULWPFJ/DpsTransaction.cpp) at 24/12/2004 12:40:30 p.m.

bradley2j
Posts: 5
Joined: Mon Jul 16, 2007 4:50 pm
Location: New Zealand

Post by bradley2j » Mon Nov 26, 2007 9:09 pm

I'm surprised that you can't have multiple imports running at the same time. From the logs it looks like the import is just checking in file versions the same way an interactive user would. I suppose there must be some magic to get the dates right and not have everything look like it was checked in today. Anyway, there can be multiple interactive users all making changes at the same time so why not multiple imports?
Maybe it's just not something that gets tested.

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Tue Nov 27, 2007 5:25 pm

Technically, you "may" have multiple imports running at once, but it's not a recommended thing and we don't test it. It will put a drag on resources. It's not likely to go any faster, but I guess there might be the benefit of being able to walk away. In addition you don't want users using VSS and Vault while you are doing the import.

As far as the errors you are seeing, I'm not sure at the moment what could be causing those. If you would like to have this dug into further, then please send me an email at support at sourcegear.com (attn:Beth) with a link to this forum thread.

Locked