[omniORB] Nested call blocked
Sai-Lai Lo
S.Lo@uk.research.att.com
24 Jan 2001 11:00:37 +0000
It may be the case that Visibroker is using the same tcp connection to sent
the "display()" and the "push()" request. If that is the case, omniORB will
not see the push request because there is only 1 thread dispatched to serve
one connection. The thread is in the process of waiting for the reply to
"request()".
Unless you can tell visibroker to have at most 1 outstanding request per
connection, I'm afraid we have an interoperability problem here.
If you can, I suggest you break the long nested call chain. Either by
1. in display() spawn another thread to do request() and then return
immediately.
OR
2. in request(), spawn another thread to do push() and then return
immediately.
In omniORB4 currently under development, we'll address this issue.
Sai-Lai
>>>>> Peter Nyquist writes:
> We have a system with one client/server using omniORB on Linux (A)
> and another client/server using Visibroker on Windows 2000 (B).
> In A there are two CORBA objects, Gateway and GatewaySession.
> In B there are two CORBA objects, ConnectManager and ApplicationSession.
> At startup, Gateway receives a reference to ConnectManager from the naming
> service.
> A client connects to the GatewaySession, which using Gateway's reference
> calls newConnection(GatewaySession-ref) in ConnectManager. Connect manager
> passes the GatewaySession-ref to ApplicationSession. No calls are now
> "hanging".
> The following nested calls now occur:
> Visibroker side omniORB
> side
> ApplicationSession -----> display(ApplicationSession-ref) ----->
> GatewaySession
> ApplicationSession <----- request() <--------------------------<
> GatewaySession
> ApplicationSession -----> push() ------------------------------> blocked in
> omniORB.
> The push() call does not reach the GatewaySession code.
> It seems that since omniORB is already processing the display() call, it
> cannot handle the
> nested push() call. Is this a correct analysis of the problem? Is this a
> known problem?
> Can we set up omniORB to somehow handle this type of nested call?
> When we run VisiBroker on both sides, it works just fine. Running JavaORB ->
> omniBroker still
> shows the same problem.
> Thanks
--
Sai-Lai Lo S.Lo@uk.research.att.com
AT&T Laboratories Cambridge WWW: http://www.uk.research.att.com
24a Trumpington Street Tel: +44 1223 343000
Cambridge CB2 1QA Fax: +44 1223 313542
ENGLAND