[omniORB] Local calls, servant locators and POA::create_reference

Duncan Grisby dgrisby@uk.research.att.com
Tue, 24 Oct 2000 10:22:21 +0100


On Monday 23 October, "Chris Newbold" wrote:

> In my application, there is an entire collection of objects which
> use a servant locator to handle invocations. (I don't think its
> relevant, but the reason for doing so is that I want to pool
> servant instances since there are 1000's of objects, but only
> a handful are ever receiving invocations at any given time.)

[...]
> However, I've noticed that omniORB doesn't seem to recognize
> that it can short-circuit calls to these objects when they are
> in the same process. It winds up doing a full-blown remote
> dispatch and context switch. (omniORB doesn't seem to have any
> problems recognizing when other, "normal" objects are local.)

You're right -- omniORB 3 does not short-circuit calls to local
objects in all circumstances. If fact, unless the servant object is
available at the time the call is invoked, the call will go via the
TCP/IP loopback interface. Doing it that way means that there is only
one path through the complex code which deals with activating objects
and so on. So, it's not that omniORB doesn't notice that it can short-
circuit the calls -- it's that it knows that it _can't_ short-circuit
them.

We are reworking all sorts of things for what will be omniORB 4. This
is one of the things we will look into. Invocations though a servant
manager of some kind will always be slower than ones to a servant
which is already activated, though, since a lot more code has to run.

Cheers,

Duncan.

-- 
 -- Duncan Grisby  \  Research Engineer  --
  -- AT&T Laboratories Cambridge          --
   -- http://www.uk.research.att.com/~dpg1 --