Our TFS was busy running at 100% processor usage because of the problem described in http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=177068&SiteID=1. < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
If you start the VS client, during this time, it gets unresponsive. If it were waiting for a little while (like 10-30 seconds), the way it would do if there were connectivity problems and came up with a error message, it would be OK. The problem was that even after 10 minutes VS was still blocked.
The only workaround we have came up with, was to pull out the network cable from the client computer in which case VS stated that the "A connection that was expected to be kept alive was closed by the server.". Only then continued VS to load the last used solution and work just fine, but obviously without TFS.
I was under impression, since the connection between VS and TFS is web services based, that there are no continuously running connections between the two and if the TFS is intermittently unavailable that the VS wouldn't bother. Well it isn't so, at least during the startup of the VS.

Visual Studio blocked if the TFS is busy
tom-
Some calls are obviously asynchronous (sending a query to the wit db for instance) some are not (getting the list of available TFS projects on a newly connected server), especially during login.< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Usually that is just what you want, since those calls that are not asynchronous usually have some kind of time out period. After the time out period elapses, an error message usually appears and that is OK.
The problem with the described case is that even after 10 or so minutes no error message appears and only after the network cable is pulled out an error message is shown.
Site Defense
I see from your original post that your DT was pegged by the branching bug. We plan on providing better cancellation support in v2 so that you'd likely be able to cancel a request that didn't return.
Buck
singlark
Hello Ognjen,
Would it be possible to answer a few questions
Thanks,
Ravi
sirbill
richardghome
Hello Buck,< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
it would be nice to be able to cancel a very long running request. Even in V2. :-)
However, it is still not too nice that VS hangs up waiting for a server that is in limbo...There could be some kind of watchdog to handle such a situation.
Anyway, the problem appears when you start VS and the server is busy even if VS doesn't load a solution right away, as long as the team explorer is open.
My questions:
-Are we the only one experiencing the problem or is it a known issue
-Is there a workaround in the current version (Beta 3 Refresh) or will there be in any newer version (other than the one we already found out ourselves - to plug the network cable in and out again) We have a server in daily usage in the production environment and this issue is somewhat irritating.
Thanks a lot.
Vertexwahn
Sorry for the delay, I was away on holidays... :-)< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Yes. When TE is set to auto-load, VS freezes during startup. Freezing occurs sometimes during splash-screen and sometimes right after the VS start page is displayed.
VS also freezes if the VSTS suddenly gets overloaded for some reason and I’m using source control or playing with work items.
If the start page is shown, TE displays "Connecting..."
I attached a debugger, and here are call stacks for both cases.
i) splash screen freeze
mscorlib.dll!System.Threading.WaitHandle.WaitAny(System.Threading.WaitHandle[] waitHandles, int millisecondsTimeout, bool exitContext) + 0x63 bytes
System.dll!System.Net.TimerThread.ThreadProc() + 0x2b8 bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x3b bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x81 bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x40 bytes
ii) start-page freeze
System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer = {Dimensions:[4096]}, int offset = 0, int size, System.Net.Sockets.SocketFlags socketFlags = None, out System.Net.Sockets.SocketError errorCode = Success) + 0x136 bytes
System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x1d bytes
System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int offset, int size) + 0x78 bytes
System.dll!System.Net.PooledStream.Read(byte[] buffer, int offset, int size) + 0x16 bytes
System.dll!System.Net.Connection.SyncRead(System.Net.HttpWebRequest request = {System.Net.HttpWebRequest}, bool userRetrievedStream = true, bool probeRead = false) + 0x12e bytes
System.dll!System.Net.ConnectStream.ProcessWriteCallDone(System.Net.ConnectionReturnResult returnResult) + 0x77 bytes
System.dll!System.Net.HttpWebRequest.WriteCallDone(System.Net.ConnectStream stream, System.Net.ConnectionReturnResult returnResult) + 0xb2 bytes
System.dll!System.Net.ConnectStream.CallDone(System.Net.ConnectionReturnResult returnResult) + 0x5a bytes
System.dll!System.Net.ConnectStream.ResubmitWrite(System.Net.ConnectStream oldStream, bool suppressWrite) + 0x3c8 bytes
System.dll!System.Net.HttpWebRequest.EndWriteHeaders_Part2() + 0x8d bytes
System.dll!System.Net.HttpWebRequest.EndWriteHeaders(bool async) + 0x159 bytes
System.dll!System.Net.HttpWebRequest.WriteHeadersCallback(System.Net.WebExceptionStatus errorStatus, System.Net.ConnectStream stream = {System.Net.ConnectStream}, bool async) + 0xe bytes
System.dll!System.Net.ConnectStream.WriteHeaders(bool async) + 0x2fa bytes
System.dll!System.Net.HttpWebRequest.EndSubmitRequest() + 0xa2 bytes
System.dll!System.Net.HttpWebRequest.CheckDeferredCallDone(System.Net.ConnectStream stream) + 0x47 bytes
System.dll!System.Net.HttpWebRequest.GetResponse() + 0x286 bytes
Microsoft.TeamFoundation.VersionControl.Client.dll!Microsoft.TeamFoundation.VersionControl.Client.AsyncWebRequest.ExecRequest(object obj) + 0x54 bytes
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(object state) + 0x2f bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x81 bytes
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(object state) + 0x6c bytes
Thanks!
Ognjen