[omniORB] OmniOrb uses wrong network adapter
Peter Danziger
p_danziger at hotmail.com
Wed May 8 11:04:33 BST 2013
Duncan,
thank you very much for your comprehensive answer. Yes, I have already tried to do the
address resolution myself, but it didn't help.
This is the result if I use "corbaloc::10.1.2.31:9901/Analyzer1":
LocateRequest to remote: key<Analyzer1>'
Client attempt to connect to giop:tcp:169.254.95.120:9901'
Failed to connect (no peer name): 169.254.95.120'
Switch rope to use address giop:tcp:169.254.95.12U:9901'
Unable to open new connection: giop:tcp:169.254.95.12U:9901'
throw giopStream: :CommFai|ure From giopStream.cc:1153(0,NO,TRANSIENT_ConnectFailed)'
throw TRANSIENT From omniObjReF.cc:1135 (NO,TRANSIENT_ConnectFailed)'
The Orb seems to do a reverse lookup get the wrong (169.254.95.120) from the right (10.1.2.31) IP address.
Regards,
Volker
> Subject: Re: [omniORB] OmniOrb uses wrong network adapter
> From: duncan at grisby.org
> To: p_danziger at hotmail.com
> CC: omniorb-list at omniorb-support.com
> Date: Tue, 30 Apr 2013 18:17:30 +0100
>
> On Tue, 2013-04-09 at 18:28 +0200, Peter Danziger wrote:
>
> > I forgot to mention, that we are using corbaloc to access the service,
> > e.g. "corbaloc::wgvcxpa1:9942/drsm480". The "wgvcxpa1" is resolved to
> > the wrong IP address.
>
> omniORB gives that name to getaddrinfo() or a similar system call to
> resolve the name. If a name resolves to multiple addresses, it's up to
> the machine's DNS setup as to what order the results come back. If
> connecting to an address fails, omniORB actually tries to connect to
> other addresses in turn until one works, except that often the only way
> to know that a connection has failed is that it times out, by which time
> it's too late to try the other addresses.
>
> Every time omniORB needs to open a connection, it re-resolves the name,
> so if the name resolution changes, different connection attempts to the
> same name can lead to different addresses. omniORB will open a new
> connection either if it previously closed the connection because it was
> idle, or because it wants to make a concurrent call while another call
> is already in progress.
>
> The answer about forcing omniORB to use the address you want ought to be
> to use the clientTransportRules configuration, and only allow it to
> connect to the correct address. Unfortunately, the transport rules are
> evaluated before the name lookup, so they can't save you.
>
> I'll look into processing the transport rules on the resolved names as a
> way to avoid this problem. As an alternative, are you able to resolve
> the name yourself, rather than using the name in the corbaloc? That way
> you'll be able to pick the correct address for yourself.
>
> Cheers,
>
> Duncan.
>
> --
> -- Duncan Grisby --
> -- duncan at grisby.org --
> -- http://www.grisby.org --
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20130508/5bfaa5d7/attachment.html>
More information about the omniORB-list
mailing list