[omniORB] bidir problem ?
Fernando A. de Araujo Filho
maverick@elogica.com.br
Mon Dec 2 13:41:01 2002
Hi, (sorry for BAD english),
I have made modifications in one program to supports OmniOrb4.
The same program, depending on its functionality, act as client or server.
I have implemented BIDIR policy with
...
{ "clientTransportRule", "* unix,tcp,bidir" },
{ "serverTransportRule", "* unix,tcp,bidir" },
{ "oneCallPerConnection", "0" },
{ "offerBiDirectionalGIOP", "1" },
{ "acceptBiDirectionalGIOP", "1" },
...
and
pl.length(1);
a <<= BiDirPolicy::BOTH;
pl[0] = orb->create_policy(BiDirPolicy::BIDIRECTIONAL_POLICY_TYPE, a);
poa = poaRef->create_POA("myBidirPolicy", pman, pl);
...
The first time my client narrow a reference to the server, everything works
fine. The client pass a callback
reference to the server, and both sides can invoke calls without any
problem, in BIDIR mode.
Good to bypass firewalls ...
The problem I have occurs when any side die. IE, if the server die and
restart, and the client
try to narrow a new T_var, I have a :
[2002-12-02 08:33:49][Information] - omniORB: LocateRequest to remote:
root<0>
[2002-12-02 08:33:49][Information] - omniORB: AsyncInvoker: thread id = 6
has exited. Total threads = 5
[2002-12-02 08:33:49][Information] - omniORB: AsyncInvoker: thread id = 8
has exited. Total threads = 4
[2002-12-02 08:33:59][Information] - omniORB: throw TRANSIENT from
giopRope.cc:321 (NO,TRANSIENT_CallTimedout)
If i dont apply BIDIR policy, and not offer and or accept BiDirectionalGIOP,
the problem not occurs.
Any side can die and restart without any problem.
The problem occurs when I have a BIDIR conection, and any side restarts.
I observed in giopimpl12.cc the code below :
...
/*
$Log: giopImpl12.cc,v $
Revision 1.1.4.18 2002/11/26 16:54:35 dgrisby
Fix exception interception.
...
// I suppose the "GIOP::CloseConnection" message is received
// when the other side is dying, in IIOP 1.2.
void
giopImpl12::unmarshalWildCardRequestHeader(giopStream* g) {
...
case GIOP::CloseConnection:
if (g->pd_strand->biDir) {
// proper shutdown of a connection.
// XXX what to do?
}
inputRaiseCommFailure(g);
break;
...
I dont know if is related. In more then 20 days I have made dozens of
changes in my code, and does not work.
Alias, I allways redo my changes, because appears the rigth to me.
??????????? ~8() I am becaming crazy ;..;uhuhauhuauh :-) (Bjorn, be patient
:-))
I really needs help ...
thanks in advance,
Fernando A. de Araujo Filho
maverick@elogica.com.br