[omniORB] multiple calls to same method

Wil_Evers@doosys.com Wil_Evers@doosys.com
Thu, 14 Oct 1999 10:29:39 GMT


Jan Zurek wrote :

>> -----Original Message-----
>> From:  Duncan Grisby [SMTP:dgrisby@uk.research.att.com]
>> Sent:  13 October 1999 18:27
>> To:    Zurek, Jan
>> Cc:    omniorb-list@uk.research.att.com
>> Subject:    Re: [omniORB] multiple calls to same method
>>
>> On Wednesday 13 October, "Zurek, Jan" wrote:
>>
>>> A client calls a method of an server-object.  This call is a
>>> blocking call and takes a while.  After approximatily 2 minutes
>>> a new (second) thread is started and the method is executed
>>> again, without a calling object anywhere!
>
>> The 2.8.0 release adds call timeouts to remote calls. By default,
>> the client gives up on a remote call after 60 seconds; the server
>> side gives up after 90 seconds. When a connection is closed after
>> a timeout, the client sees a COMM_FAILURE exception. My guess is
>> that you have a COMM_FAILURE exception handler which is
>> automatically re-trying the invocations.
>
>> You can change the timeout either with the command line arguments
>> -ORBclientCallTimeOutPeriod and -ORBserverCallTimeOutPeriod, or
>> using the omniORB::callTimeOutPeriod() call. If you set the timeout
>> to zero, calls never timeout.
>
> thanks for your reply.  After setting the parameters the
> problem went away.  The interesting thing still remains:
> we do not have an exception handler for COMM_FAILURE exception!
> So from our code there is no retry.

I did a similar test - on the server side, I made the first call sleep for
two minutes.  And yes, a second call came in after one  minute.  Just like
Jan, I did not install a user-written COMM_FAILURE handler.

I have to say this behaviour scares me - according to the CORBA spec, an
operation invocation has at-most-once semantics.  I can see why it makes
sense to have a client time out after a while, but if that happens, the
operation should not be invoked again, at least not by default.  The way
things are now, an application tested under normal conditions would start
to behave very strangely under heavy system loads.

- Wil

Wil Evers, DOOSYS IT Consultants, Maarssen, Holland