Henrique Andrade
2007-01-30 03:58:00 UTC
Hi:
Let me describe the problem I am facing as well as an application scenario.
Problem: not being able to detect that the message size limit has been
reached via server/client-side exceptions. Detection cannot be done at the
server nor can it be done at the client. In other words, failure occurs and
cannot be detected (tested in omniORB 4.0.7 and 4.1).
Scenario: an RPC call is made to the server and the server's response has a
varying size, which can potentially go over the limit giopMaxMsgSize
In this scenario, on the server side, an internal MARSHAL exception
eventually happens once the server detects the message is beyond the
giopMaxMsgSize
limit and is handled internally (ORB tracing confirms that) by one of the
ORB threads, but it does not reach the application. That means, the app
fails, but there is no way for it to know a failure occurred.
On the client, side a COMM_FAILURE exception will happen. However, the minor
code does not indicate MARSHAL_MessageSizeExceedLimit (it indicates
COMM_FAILURE_WaitingForReply instead). So the client does not know why the
failure occurred either -- that is that the response is larger than what can
be handled.
Note that this behavior seems to be asymmetrical. That is, if the client
makes an RPC which sends a parameter whose size is greater than giopMaxMsgSize,
the client gets a MARSHAL exception with the correct minor code and can
react accordingly as expected.
On the original problem I described, is there anything that can be done to
allow the detection of that failure as well as the actual reason (as in the
minor code) so at least the problem can be logged? If not, would it be
possible for me to file a feature request?
Thanks,
Henrique
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20070129/2aa0d8be/attachment.htm
Let me describe the problem I am facing as well as an application scenario.
Problem: not being able to detect that the message size limit has been
reached via server/client-side exceptions. Detection cannot be done at the
server nor can it be done at the client. In other words, failure occurs and
cannot be detected (tested in omniORB 4.0.7 and 4.1).
Scenario: an RPC call is made to the server and the server's response has a
varying size, which can potentially go over the limit giopMaxMsgSize
In this scenario, on the server side, an internal MARSHAL exception
eventually happens once the server detects the message is beyond the
giopMaxMsgSize
limit and is handled internally (ORB tracing confirms that) by one of the
ORB threads, but it does not reach the application. That means, the app
fails, but there is no way for it to know a failure occurred.
On the client, side a COMM_FAILURE exception will happen. However, the minor
code does not indicate MARSHAL_MessageSizeExceedLimit (it indicates
COMM_FAILURE_WaitingForReply instead). So the client does not know why the
failure occurred either -- that is that the response is larger than what can
be handled.
Note that this behavior seems to be asymmetrical. That is, if the client
makes an RPC which sends a parameter whose size is greater than giopMaxMsgSize,
the client gets a MARSHAL exception with the correct minor code and can
react accordingly as expected.
On the original problem I described, is there anything that can be done to
allow the detection of that failure as well as the actual reason (as in the
minor code) so at least the problem can be logged? If not, would it be
possible for me to file a feature request?
Thanks,
Henrique
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20070129/2aa0d8be/attachment.htm