We are using Vault (3.0.5) in our CCNET based continuous integration process. CCNET runs Vault history command for checking the modifications of all the configured projects. We have 5-6 projects configured in CCNET.
When CCNET service is started, it runs the following command for each project (We use rememberlogin feature):
c:\program files\sourcegear\vault client\vault.exe history "$/Path/To/Project/Folder/In/Vault" -rowlimit "100"
Most of the times the command fails with the following error:
<vault> <error> The connection to the server failed: server cannot be contacted or uses a protocol that is not supported by this client. Server was unable to process request. --> Specified cast is not valid. </error> <exception> System.Exception: The connection to the server failed: server cannot be contacted or uses a protocol that is not supported by this client. Server was unable to process request. --> Specified cast is not valid. at VaultCmdLineClient.VaultCmdLineClient.Login(Boolean bAllowAuto, Boolean bSaveSession) at VaultCmdLineClient.VaultCmdLineClient.ProcessCommandHistory(String strReposPath) at VaultCmdLineClient.VaultCmdLineClient.ProcessCommand(Args curArg) at VaultCmdLineClient.VaultCmdLineClient.Main(String[] args) </exception> <result success="no" /> </vault>
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
Later when the service is running, history command works fine most of the time. It still fails once in a while. I have noticed from CCNET logs that the command fails when it is run on two or more vault folders (configured as separate CCNET projects) simultaneously.
Is there any issue with running history command concurrently on multiple vault folders? Please let me know some pointers to resolve this issue.
Regards.
Vault history command occassional failure from CCNET
Moderator: SourceGear
Can you turn on Vault client logging for the command line client to try to catch the error when it happens? Also, if you're willing can you rebuild the command line client from source (included in the ClientAPI.msi) and change the line
to
Code: Select all
throw new Exception( string.Format("The connection to the server failed: server cannot be contacted or uses a protocol that is not supported by this client. {0}", e.Message) );
Code: Select all
throw new Exception( string.Format("The connection to the server failed: server cannot be contacted or uses a protocol that is not supported by this client. {0}{1}", e.Message, e.StackTrace) );