[omniORB] client call timeout

Luke Deller ldeller at xplantechnology.com
Tue Jan 3 10:55:51 GMT 2006


Hi Peter,

On Mon, 2005-12-19 at 17:06 +0100, Peter Honeder wrote:
> I have the following problem with omniorb. Imagine the IOR of some 
> object I know and now I would like to find out if the object is still 
> alive. So I call the method isAlive of this object (which is available 
> for this object).

There's no need to define your own method for this purpose; you can call
_non_existent() on any object reference.  See section 4.3.5 of the CORBA
spec for details.

> The problem now arises if the ior of the object contains an ip address 
> which is not within my subnet and some router in between filters the 
> packet and does not drop my connection by sending a close back. The 
> problem which arises then is that it takes a tcp timeout of about 3 
> minutes until the check finishes.
> 
> I can workaround the problem by using the clientCallTimeOutPeriod 
> setting but this would also mean that a client call can only take that 
> long. This imposes further problems to the situation as some calls could 
> take about 5-10 seconds but the isAlive check should only take 0,5-1 
> seconds maximum.
> 
> Is there some kind of option to check if only the connection 
> establishment took a certain period of time. Something like 
> clientCallConnectionEstablishmentTimeOutPeriod which could be set to 500 
> ms while still keeping the clientCallTimeOutPeriod blocking with value 0?
> 
> Alternatively do you know a better way to check if an object is still 
> alive? In my case small numbers of false negatives would be not much of 
> a problem (e.g. if the network is unresponsive once in a while).

As well as the global clientCallTimeOutPeriod setting which you have
found, omniORB also allows the timeout to be set per-thread or
per-object-reference.  Details are in section 8.3.1 of the omniORB
manual:
  http://omniorb.sourceforge.net/omni40/omniORB/omniORB008.html#htoc93

So you can check if an object is still alive by temporarily setting a
low timeout for your thread, and then calling the _non_existent method.

Regards,
Luke.


**********************************************************************************************

Important Note
This email (including any attachments) contains information which is
confidential and may be subject to legal privilege.  If you are not
the intended recipient you must not use, distribute or copy this
email.  If you have received this email in error please notify the
sender immediately and delete this email. Any views expressed in this
email are not necessarily the views of XPlan Technology.

It is the duty of the recipient to virus scan and otherwise test the
information provided before loading onto any computer system.
Xplan Technology does not warrant that the
information is free of a virus or any other defect or error.
**********************************************************************************************




More information about the omniORB-list mailing list