Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Exception on grid server 2.10.0.4
d___k
#1 Posted : Monday, September 22, 2014 10:37:53 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 9/22/2014(UTC)
Posts: 4
Location: Poland

Was thanked: 1 time(s) in 1 post(s)
Hello,

Ater update from version 2.7.0.5 connection between my client 2.10.0.4 for Visual 2010 and corresponding Grid Node Server running on Windows 2008 Server looks like it's working. Projects are being compiled and tests run. Despite i'm still receiving error messages:

System.Exception: Service nCrunch.Core.Grid.Connectivity.GridContractMessageBugReportDataProvider is not registered
w nCrunch.Common.ServiceLocator.FetchInstance[T](Boolean throwOnMissingService)
w nCrunch.Core.Grid.Connectivity.ReceivableSerializationContractMessage.GetMessage(BinarySerializer serializer)
w nCrunch.Core.Grid.Connectivity.GridMessageReceiver.TryRead(Byte[] newData, Int32 newDataLength)
w nCrunch.Core.Grid.Connectivity.OpenConnection..()
w nCrunch.Common.ErrorHandler.DoWithErrorHandling(Action action, Object context)

Are the exceptions somewhat important or how to get rid of them?
Remco
#2 Posted : Monday, September 22, 2014 11:44:42 AM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 7,144

Thanks: 959 times
Was thanked: 1290 time(s) in 1196 post(s)
Hi, thanks for sharing this issue.

This error is being kicked up by an error handler gone wrong. The correct message is actually that of a protocol incompatibility. Have you also upgraded your grid node server to the latest version (2.10)?
d___k
#3 Posted : Monday, September 22, 2014 12:04:40 PM(UTC)
Rank: Newbie

Groups: Registered
Joined: 9/22/2014(UTC)
Posts: 4
Location: Poland

Was thanked: 1 time(s) in 1 post(s)
I have already installed correct version. I have checked it out in programs/function Windows console and as I have mentioned tests are being run on that server.

In server log there are serveral exceptions:

[14:02:07.0499-?-28] Ceasing to send messages because of an error (was the connection closed?): System.IO.IOException: Nie można zapisać danych do połączenia transportowego: Nawiązane połączenie zostało przerwane przez oprogramowanie zainstalowane w komputerze-hoście. ---> System.Net.Sockets.SocketException: Nawiązane połączenie zostało przerwane przez oprogramowanie zainstalowane w komputerze-hoście
w System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
--- Koniec śladu stosu wyjątków wewnętrznych ---

Server stack trace:
w System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
w  .Write(Byte[] , Int32 , Int32 )
w nCrunch.Core.Grid.Connectivity.Zlib.DeflateStream.Write(Byte[] buffer, Int32 offset, Int32 count)
w nCrunch.Core.Grid.Connectivity.BidirectionalStream.Write(Byte[] buffer, Int32 offset, Int32 count)
w System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
w System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)

Exception rethrown at [0]:
w System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(Message reqMsg, Boolean bProxyCase)
w System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed, MessageData& msgData)
w nCrunch.Core.Grid.Connectivity.BidirectionalStream..EndInvoke(IAsyncResult )
w nCrunch.Core.Grid.Connectivity.BidirectionalStream.EndWrite(IAsyncResult asyncResult)
w nCrunch.Core.Grid.Connectivity.GridMessageSender.(IAsyncResult )

and then

[14:02:07.6321-NodeProcessor-7] Build was successful for C:\NCrunch Grid Node\6036\52\[project name].dll
[14:02:07.6881-NodeProcessor-29] Build was successful for C:\NCrunch Grid Node\6036\51\[project name].dll
Remco
#4 Posted : Monday, September 22, 2014 10:38:43 PM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 7,144

Thanks: 959 times
Was thanked: 1290 time(s) in 1196 post(s)
Are these errors showing for you in the distributed processing window?

If so, they may be getting kicked up from a protocol failure from a different connection. If the grid node is being shared with another client that is running a different version (i.e. 2.7), then the failure of the grid node to handle the protocol error will result in a node-wide error being reported which is broadcast to all clients. You'll also receive this if there is another piece of software trying to communicate with the node that isn't NCrunch (for example, if you have someone scanning for open ports on the machine or trying to mess with it). Connections usually show themselves in the logs, so it may be possible to identify the source IP by checking through the logs prior to the failure.

The errors themselves are essentially noise. They won't affect the option of the grid node and it should run tests without problem. The exception you've captured in the server log also falls into this category.
d___k
#5 Posted : Tuesday, September 23, 2014 8:16:43 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 9/22/2014(UTC)
Posts: 4
Location: Poland

Was thanked: 1 time(s) in 1 post(s)
Indeed the client running previous version was the reason of these messeges while the server was doing its job for new clients.

I'd like to better understand the logic of Ncrunch grid. Could you tell me why the server is broadcasting such a messeges? It is not enough to log them in the file?

Thanks for your help.
Remco
#6 Posted : Tuesday, September 23, 2014 10:50:45 PM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 7,144

Thanks: 959 times
Was thanked: 1290 time(s) in 1196 post(s)
The behaviour in this case isn't exactly by design. Normally when a protocol or version incompatibility issue appears, it should become visible on the client's side with a meaningful error. In this case, the error is appearing on both the client (where it is showing correctly) and the server, as the server isn't able to make sense of the message. The server's error handling isn't designed to correctly handle/swallow the error, so it kicks it up further in a different form where the error is then trapped by higher level handling.

The top level error handler on the server will write errors to a log file (if logging is enabled), and it will also broadcast them out to all connected clients. The idea here is to make sure that you become aware of the error. Sometimes errors can cause grid nodes to become completely unresponsive or can destabilise the client's engine. If the errors were only written to the log and not broadcasted out, there's a very high chance that no one will notice at all ... and bad things would continue to happen!
d___k
#7 Posted : Thursday, September 25, 2014 9:07:24 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 9/22/2014(UTC)
Posts: 4
Location: Poland

Was thanked: 1 time(s) in 1 post(s)
When connecting to multiple servers there is a probability to leave the problems unnoticed. So I think that is good idea to broadcast them.

Thank you for the explanation.
1 user thanked d___k for this useful post.
Remco on 9/25/2014(UTC)
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

YAF | YAF © 2003-2011, Yet Another Forum.NET
This page was generated in 0.060 seconds.
Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download