[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