[omniORB] 答复: Sporadic CommFailure from giopStream.cc:808(0, MAYBE, COMM_FAILURE_WaitingForReply)
huxy
huxy at neusoft.com
Thu Sep 1 06:54:55 BST 2016
Hi Martin,
Probably it's caused by the server initiating to close a one-way connection.
From my understanding, the solution can be:
Set the option offerBiDirectionalGIOP to 1
Or call makeRestrictedReference() with the argument server_hold_open set to
true
the following is an extract from doc/omniORB.pdf
server_hold_open
Normally, both clients and servers can decide to close a GIOP connection at
any time. When using normal two-way calls, this is no problem since if a
server closes a connection, the client is guaranteed to notice it when it
waits for a reply, and can retry the call if necessary. With one way calls,
however, if a server closes a connection just as the client is sending a
request, the client will not know whether the one way call was received or
not, and the call will potentially be lost. By setting the server_hold_open
parameter to true, the server will not close the connection, relying on the
client to do so. In that case, one way calls will not be lost unless there
is a network problem that breaks the GIOP connection.
Hope this information can help.
Best regards
Alex
-----邮件原件-----
发件人: Goettlicher, Martin via omniORB-list
[mailto:omniorb-list at omniorb-support.com]
发送时间: 2016年8月31日 23:36
收件人: omniorb-list at omniorb-support.com
主题: [omniORB] Sporadic CommFailure from giopStream.cc:808(0, MAYBE,
COMM_FAILURE_WaitingForReply)
Hi all,
in a client/server application I have sporadic CommFailure exceptions as
shown in the subject. Client and server both use omniORB 4.2.1 and run on
the same Linux computer. The problem occurs on different Linux distributions
(testet on CentOS 7.2 and OpenSUSE 42.1).
Since I have no clue what's wrong I would like to ask if somebody on this
list could have a look into the log output with trace level 40 from client
and server and give me a hint about the problem. The log output shows a call
"openPsCnt" (no arguments and an int return value) which succeeded, followed
by a call which failed, followed by a call which succeeded again. When the
call fails at the client side, the application code in the server isn't
called at all.
Many thanks for your help.
Best regards,
Martin
---------------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s)
is intended only for the use of the intended recipient and may be confidential and/or privileged of
Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is
not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying
is strictly prohibited, and may be unlawful.If you have received this communication in error,please
immediately notify the sender by return e-mail, and delete the original message and all copies from
your system. Thank you.
---------------------------------------------------------------------------------------------------
More information about the omniORB-list
mailing list