[omniORB] Timeout of _non_existent ?

Tim Ward timw@lsl.co.uk
Tue, 28 Aug 2001 11:28:35 +0100


From: "Duncan Grisby" <dgrisby@uk.research.att.com>
>
> You can use the -ORBclientCallTimeOutPeriod argument or
> omniORB::callTimeOutPeriod() to get a COMM_FAILURE more rapidly. See
> section 8.3 of the manual.

Thanks - I did find that in the end, and it solves the immediate problem.

However:

(1) It appears to be OmniORB specific and one might have preferred a
standard solution to what is obviously an orb-independent problem. Is this a
hole in the design of Corba?

(2) It's not clear to me from the documentation what the scope of
callTimeOutPeriod() is:

(a) if my client is single-threaded can I change the timeouts round a single
method call on a server (or non_existent etc) and change them back again
immediately afterwards, thus safely having shorter (say) timeouts in effect
for just a single invocation?

(b) what happens with multi-threaded clients - are the timeout periods
specified by callTimeOutPeriod() applied only to calls made by the thread
that calls callTimeOutPeriod() or would multiple threads b*gger each other
up by changing global timeout values?

Also we have observed the following "feature" of using callTimeOutPeriod():

- set a short timeout, say 2 seconds
- invoke an operation on the server
- suspend the server for longer than the timeout, eg at a debugger
breakpoint
- resume the server after the client has responded to the timeout exception.

What happens next is that the server sees a second invocation of the method,
ie something seems to be doing a retry. (Which has been queued up somewhere
as the client code has long since lost interest in this operation.) This
isn't a big deal for our system, but we are curious to know what is doing
the retrying and what control we might have over it?

Thanks

Tim Ward
Brett Ward Limited