Archived

This forum has been archived. Please start a new discussion on GitHub.

Intermittent lost connection exception

Hi

Configuration:
Windows XP SP2
Ice 3.3.1
Apps developed for C# using Visual Studio 2008

Problem:
I have an application which implements the Publish/Subscribe pattern (N.B. I'm not using IceStorm for reasons I won't go into). Subscriber applications pass their proxy to the publisher on initialisation. At some point into the future the publisher calls methods on each subscriber proxy to publish a range of data objects. N.B. All connections to the remote adaptor are synchronous invocations i.e TCP. Due to the size of the payload I have increased the Ice.MessageSizeMax to 102400.

We have encountered (on an intermittent basis) an IceConnectionLostexception. The attachment is a screen shot of the debugger output. One of the error properties indicated a Windows Socket error 10054. The developers who raised the issue were confident the subscriber application had not crashed or destroyed any of the Ice objects. Once the error occurred it seemed to persist until a reboot occurred.

The application was tested on a mulitple platforms. Some platforms appeared error free while others experienced the problem.

Are there any outstanding bugs related to socket failures?
Can terminating an application (via task manager) have any impact?
Is it normal for Ice exceptions to have an empty message string (see attachment)?


Regards John

Comments

  • Error 10054 is "connection reset by peer", which means that the other end crashed or was disconnected (such as by pulling a network cable).
    Are there any outstanding bugs related to socket failures?
    Can terminating an application (via task manager) have any impact?
    Is it normal for Ice exceptions to have an empty message string (see attachment)?

    We are not aware of any bugs in this area. If you terminate an Ice application via task manager, that will cause the exception you are seeing. Is that what you are doing?

    Ice exceptions may or may not have an empty message string, depending on where in the run time they are thrown and whether there is additional useful information that can be included.

    I would suggest to run your application with Ice.Trace.Network=3 and Ice.Warn.Connections=1. The trace may yield more insight as to what's happening.

    Cheers,

    Michi.
  • Hi,

    I can't say for sure if developers have been terminating their apps using the Task Manager. I'll have to try and monitor for a re-ocurrence of the problem and ascertain what's causing it.

    I have noticed on one occasion when IceGrid service (run from DOS console) was forcibly closed, the socket had not been closed (i.e. using netstat). The only way I know of clearing the problem was to reboot.

    I must say I like the comprehensive level of logging and exception handling provided by Ice. Strangely our developers scream foul of our application's middleware (based on Ice) when exceptions and log messages start occurring, only to realise later it is the client or server application that is the problem.

    Regards John