View Issue Details

IDProjectCategoryView StatusLast Update
000466810000-007: ProfilesApi Changepublic2024-01-02 17:20
ReporterDavid Levine Assigned ToPaul Hunkar  
PriorityhighSeverityfeatureReproducibilityalways
Status closedResolutionno change required 
Summary0004668: Minimum values for operation limits for all conformance units
Description

When a server does not provide properties to identify an operation limit, such as MaxNodesPerRead, there should be a specified minimum value that clients can use that should work. Clients should not have to guess or possess secret knowledge of what value to use. Currently if a client exceeds a limit and receives an error status it has no way to determine what steps it needs to take to recover because it does not know what operation limit should work.

This applies to all profiles for all conformance units that contain operation limits . It is expected that the same conformance unit in different profiles may have different limits.

Certification testing shall test all operation limits to verify a server meets the minimum required limit.

TagsNo tags attached.
Commit Version
Fix Due Date

Activities

Jim Luth

2019-04-02 17:06

administrator   ~0010098

Add Profile related test for writes.

Paul Hunkar

2020-09-17 05:38

developer   ~0012890

We have added more limits and capabilities (via your other mantis issues). Certification has always checked all limits and ensure that server (under normal operations) honor there limits [limits can be missed as stated in the specification]

If you have specific limits that you would like please provided a more specific Mantis issue, so it can be addressed. server behavior can vary a great deal (Nano device to standard cloud server - so minimum limits are far to apply, unless they are very basic - i.e. 1 session, 1 subscription etc.

David Levine

2020-09-18 16:59

developer   ~0012955

There is a missing operational limit for the Browse service request but I don't think it can be fully addressed with a server property. I raised this during the F2F and got pushback from Matthias, but this needs further discussion because the client does not have sufficient information to know what the limit should be, and according to Matthias, neither does the server.

The Nodes in the Server may have any number of references: 0 < References < infinite. The client has no knowledge of the number of references each starting node has, and for max efficiency will create requests with as many starting nodes as possible up to the value of MaxNodesPerBrowseRequest. The Browse service takes a parameter called "requestedMaxReferencesPerNode" which supplied by the client (this is not one of the operational limits but something is needed). The spec says this parameter "Indicates the maximum number of references to return for each starting Node specified in the request. The value 0 indicates that the Client is imposing no limitation (see 7.5 for Counter definition)." (EDITORIAL: I have no idea why the Counter definition is mentioned here, really does not belong).

To me this means that this argument indicates the client's ability to process results and throttles the server's reply if it cannot keep up. It does not mean it is used to keep the reply data within the limits of the server or its infrastructure. This would not make sense anyway since the client has no knowledge of the server's or network's constraints at the server's location. If that is its intended purpose the spec should state that, but it still makes no sense since would a general purpose client cannot "know" what the server can handle.

In our case the client can handle any size reply so it calls the Browse service request with argument "requestedMaxReferencesPerNode" set to 0.

This usually works but we ran into a use case where the Browse request failed with error BadEncodingLimitsExceeded (in our testing this error was was returned in the reply message, which means it was generated server-side). When this occurs it is difficult to diagnose the root cause or how to fix it because there is no information available on what the limit should be, or what caused it to exceed the limit. If this occurs in the field it will result in a support call that will probably get escalated to the engineer (i.e. user->hisBoss->salesman->support->supportBoss->VP->myBoss->me ==> badThingsHappen up and down that chain ).

The ideal solution is where the system contains sufficient information for automatic configuration so that it just works. Configurable options should be applied at the site where the necessary data exists. For example, if the server can send 100K references in a reply it could check if the encoded message exceeded some internal limit and start using continuation points when it hits that limit.

If this is a server side limitation then the server should set this, not the client. If the client must set this value and must account for server side limits then it needs more information:

  • number of references in a node (this ought to be contained in a BrowseReply message anyway for other reasons)
  • the size of a reply for each reference
  • the max size of a reply the server can handle

If I am using the API incorrectly then please explain how the client should determine what this limit it.

Paul Hunkar

2022-03-08 06:42

developer   ~0016244

the requestedMaxReferencesPerNode - is a client side throttle. The server that had an encoding problem is broken - it is suppose to return a continuation point and what can fit in the response, with the remainder in the browsenext call(s)

I ss no change needed in the API, only a fix to the broken server.

Jim Luth

2024-01-02 17:20

administrator   ~0020556

submitter agrees to close with no change required.

Issue History

Date Modified Username Field Change
2019-03-11 17:12 David Levine New Issue
2019-03-12 02:54 Paul Hunkar Project Certification => 10000-007: Profiles
2019-03-12 02:54 Paul Hunkar Category Feature Request => Api Change
2019-04-02 17:06 Jim Luth Note Added: 0010098
2019-04-02 17:06 Jim Luth Assigned To => Paul Hunkar
2019-04-02 17:06 Jim Luth Status new => assigned
2020-09-17 05:38 Paul Hunkar Status assigned => feedback
2020-09-17 05:38 Paul Hunkar Note Added: 0012890
2020-09-18 16:59 David Levine Note Added: 0012955
2020-09-18 16:59 David Levine Status feedback => assigned
2022-03-08 06:42 Paul Hunkar Status assigned => feedback
2022-03-08 06:42 Paul Hunkar Note Added: 0016244
2024-01-02 17:20 Jim Luth Status feedback => closed
2024-01-02 17:20 Jim Luth Resolution open => no change required
2024-01-02 17:20 Jim Luth Note Added: 0020556