old connections lingering around?

Michael Teske subscribe at teskor.de
Wed Sep 16 15:37:10 BST 2015


Hi,

I have a strange problem with closed connections lingering around for a while. This is the situation:

Corba Process A monitors instances of Corba processes B and informs interested clients about B-Processes going up and down.
Client C now asks A for a specific instance of B, and gets an object back, in my case this is fixed on giop:tcp:192.168.68.46:5622 .
Everything works fine.
Now, this instance of B gets restarted. Process A notices that and sends the new object reference B' (which is again on giop:tcp:192.168.68.46:5622)
to C. Now here's the problem: C tries to do a call on B' but gets a 
CORBA::COMM_FAILURE(COMM_FAILURE_WaitingForReply, CORBA::COMPLETED_MAYBE) exception for some time. The strange thing is that the call on B' starts to work after a few retries (I try it every 500 ms and it takes 4 to 5 tries). 

The problem is not always reproducable, but I managed to catch the situation white C running on -ORBtraceLevel 40:

First try:
omniORB: (10) 2015-09-16 15:33:03.317113: LocateRequest to remote: root<6>
omniORB: (10) 2015-09-16 15:33:03.317125: sendChunk: to giop:tcp:192.168.68.46:5622 38 bytes
omniORB: (10) 2015-09-16 15:33:03.317179: Error in network receive (start of message): giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:03.317187: throw giopStream::CommFailure from giopStream.cc:808(0,MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: (10) 2015-09-16 15:33:03.317249: Client connection giop:tcp:192.168.68.46:5622 refcount = 0
omniORB: (10) 2015-09-16 15:33:03.317257: Client close connection to giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:03.317282: throw COMM_FAILURE from omniObjRef.cc:706 (MAYBE,COMM_FAILURE_WaitingForReply)

second:
omniORB: (10) 2015-09-16 15:33:03.817433: LocateRequest to remote: root<6>
omniORB: (10) 2015-09-16 15:33:03.817469: sendChunk: to giop:tcp:192.168.68.46:5622 38 bytes
omniORB: (10) 2015-09-16 15:33:03.817550: Error in network receive (start of message): giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:03.817563: throw giopStream::CommFailure from giopStream.cc:808(0,MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: (10) 2015-09-16 15:33:03.817656: Client connection giop:tcp:192.168.68.46:5622 refcount = 0
omniORB: (10) 2015-09-16 15:33:03.817667: Client close connection to giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:03.817702: throw COMM_FAILURE from omniObjRef.cc:706 (MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: (210) 2015-09-16 15:33:04.297490: sendChunk: to giop:tcp:192.168.68.46:29050 64 bytes

third:
omniORB: (10) 2015-09-16 15:33:04.317883: LocateRequest to remote: root<6>
omniORB: (10) 2015-09-16 15:33:04.317915: sendChunk: to giop:tcp:192.168.68.46:5622 38 bytes
omniORB: (10) 2015-09-16 15:33:04.317997: Error in network receive (start of message): giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:04.318006: throw giopStream::CommFailure from giopStream.cc:808(0,MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: (10) 2015-09-16 15:33:04.318058: Client connection giop:tcp:192.168.68.46:5622 refcount = 0
omniORB: (10) 2015-09-16 15:33:04.318075: Client close connection to giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:04.318099: throw COMM_FAILURE from omniObjRef.cc:706 (MAYBE,COMM_FAILURE_WaitingForReply)
omniORB: (212) 2015-09-16 15:33:04.798691: sendChunk: to giop:tcp:192.168.68.46:29050 64 bytes

forth:
omniORB: (10) 2015-09-16 15:33:04.818237: LocateRequest to remote: root<6>
omniORB: (10) 2015-09-16 15:33:04.818264: Client attempt to connect to giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:04.818369: Client opened connection to giop:tcp:192.168.68.46:5622
omniORB: (10) 2015-09-16 15:33:04.818378: sendChunk: to giop:tcp:192.168.68.46:5622 38 bytes

and from here it worked. To me it seems that some old connections are used 
although they have been closed or abandoned from the other side. Is there a possibility to 
get omniorb to reconnect after the first error happens?

Thanks for any help,
  Michael



More information about the omniORB-list mailing list