Discussion:
[omniORB] giopstream::CommFailure
Tahar Ouhrouche
2007-06-28 17:31:53 UTC
Permalink
Hi All,
I have a client/server application using omniORB4.
When I run the client, everything goes well. But when I stop the server then
I get this message in debug mode:

omniORB: throw giopStream::CommFailure from giopStream.cc
:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp:134.32.185.82:1724
omniORB: AsyncInvoker: thread id = 4 has exited. Total threads = 3

The client does not crash. it works fine. I try to run the server a second
time (without restarting the client) then I get an exception which causes a
crash to the client.

omniORB: throw giopStream::CommFailure from giopStream.cc
:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp:134.32.185.82:1736
omniORB: AsyncInvoker: thread id = 5 has exited. Total threads = 3

Do I need to restart the client every time the server goes down?

Thanks a lot for your help,

Cheers,

Tahar Ouhrouche
Software engineer,
Schlumberger - Oslo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20070628/9e836c0f/attachment.htm
João Lopes
2007-06-28 19:58:45 UTC
Permalink
AFAIK you have to restart the client ORB every time the server dies.
The reason for this is that the client make a TCP connection to the
server and when the server comes up again it cannot recover the old
TCP connection from the client.

Please correct me if I'm wrong.

Jo?o Lopes
Post by Tahar Ouhrouche
Hi All,
I have a client/server application using omniORB4.
When I run the client, everything goes well. But when I stop the server then
omniORB: throw giopStream::CommFailure from
giopStream.cc:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp: 134.32.185.82:1724
omniORB: AsyncInvoker: thread id = 4 has exited. Total threads = 3
The client does not crash. it works fine. I try to run the server a second
time (without restarting the client) then I get an exception which causes a
crash to the client.
omniORB: throw giopStream::CommFailure from
giopStream.cc:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp: 134.32.185.82:1736
omniORB: AsyncInvoker: thread id = 5 has exited. Total threads = 3
Do I need to restart the client every time the server goes down?
Thanks a lot for your help,
Cheers,
Tahar Ouhrouche
Software engineer,
Schlumberger - Oslo
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
Duncan Grisby
2007-06-28 20:04:30 UTC
Permalink
Post by João Lopes
AFAIK you have to restart the client ORB every time the server dies.
The reason for this is that the client make a TCP connection to the
server and when the server comes up again it cannot recover the old
TCP connection from the client.
That's not true. If the server comes up with the same endpoint
information, the client can reconnect with a new TCP connection. In some
cases of unclean server shutdown, the client is unable to tell that the
connection has broken, so the first call it tries to do fails with a
COMM_FAILURE, but subsequence calls will open a new connection and
succeed.

You can use a COMM_FAILURE exception handler to automatically retry the
call once, rather than having to handle it specifically on all calls.
See section 4.7 of the omniORB manual.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Duncan Grisby
2007-06-28 20:06:47 UTC
Permalink
Post by Tahar Ouhrouche
I have a client/server application using omniORB4.
When I run the client, everything goes well. But when I stop the server then
omniORB: throw giopStream::CommFailure from giopStream.cc
:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp:134.32.185.82:1724
That shows the server side of a connection noticing that the connection
has closed, and cleaning up. It is absolutely normal, and not a sign of
any kind or problem.
Post by Tahar Ouhrouche
The client does not crash. it works fine. I try to run the server a second
time (without restarting the client) then I get an exception which causes a
crash to the client.
omniORB: throw giopStream::CommFailure from giopStream.cc
:874(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: Server connection refcount = 1
omniORB: Server connection refcount = 0
omniORB: Server close connection from giop:tcp:134.32.185.82:1736
That's exactly the same thing. It's not a sign of a problem. It's also a
trace from the server side. Perhaps your "client" is also a server
supporting callbacks?

In what way does your client crash?

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...