You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If the UA reference server sets its operation Limit MaxNodesPerRead to 65536, say, and the UA reference client sets its MaxArrayLength to a smaller value (65535, say), then calling, e.g., Session.ReadNodesAsync with sufficiently many nodes (about 50000) will result in an error in BinaryEncoder.WriteArrayLength(BadEncodingLimitsExceeded), since the number of nodes to be encoded equals MaxNodesPerRead while the Encoder wants to write an array of length at most MaxArrayLength.
Expected Behavior
Setting and working with such limits (esp. when they are distributed between client and server) should not result in an operation to fail.
I think the interdependencies between the various quotas and limits should be analyzed, and then the implications should make their way into the implementation.
The example in this description shows that a transport quota on server side for the number of nodes per read request should be lowered for the clients session, if the client has configured quotas which may be violated as a consequence of using the server settings, e.g. when creating packages of limited size for service calls. It seems, e.g., that the MaxArrayLength on the client side must exceed all other perRequest quotes set in the client (either through client configuration or server configuration) to avoid that encoding limits are exceeded.
(Of course this issue can be fixes by adapting the configuration, but this assumes the user is able to figure out which settings lead to the issue, which is not that easy).
The text was updated successfully, but these errors were encountered:
Type of issue
Current Behavior
If the UA reference server sets its operation Limit
MaxNodesPerRead
to 65536, say, and the UA reference client sets itsMaxArrayLength
to a smaller value (65535, say), then calling, e.g.,Session.ReadNodesAsync
with sufficiently many nodes (about 50000) will result in an error inBinaryEncoder.WriteArrayLength
(BadEncodingLimitsExceeded)
, since the number of nodes to be encoded equalsMaxNodesPerRead
while the Encoder wants to write an array of length at mostMaxArrayLength
.Expected Behavior
Setting and working with such limits (esp. when they are distributed between client and server) should not result in an operation to fail.
Steps To Reproduce
See the Current Behavior section.
Environment
Anything else?
I think the interdependencies between the various quotas and limits should be analyzed, and then the implications should make their way into the implementation.
The example in this description shows that a transport quota on server side for the number of nodes per read request should be lowered for the clients session, if the client has configured quotas which may be violated as a consequence of using the server settings, e.g. when creating packages of limited size for service calls. It seems, e.g., that the MaxArrayLength on the client side must exceed all other perRequest quotes set in the client (either through client configuration or server configuration) to avoid that encoding limits are exceeded.
(Of course this issue can be fixes by adapting the configuration, but this assumes the user is able to figure out which settings lead to the issue, which is not that easy).
The text was updated successfully, but these errors were encountered: