In order to improve the server resource utilization and user experience, IFS OData Provider has intoduced timeout values related to a request.
Three environment parameters and a HTTP header is used to implement this concept.
IFS_QUERY_TIMEOUT This is used to define default timeout for data retrieving requests. (5m by default)
IFS_MAX_QUERY_TIMEOUT This is used to define max value for timeout of data retrieving requests. (5m by default)
IFS_STATEMENT_TIMEOUT This is used to define general timeout for any given request. (including data persisting ones) (15m by default)
These parameter values can be overridden for the request using the wait property of HTTP preference header.
Ex:- Prefer: wait=10
If it is a data retrieval request then the wait preference should be less than IFS_MAX_QUERY_TIMEOUT, or IFS_MAX_QUERY_TIMEOUT is used as the request timeout.
For data modifying request, the wait preference should be less than IFS_STATEMENT_TIMEOUT, or IFS_STATEMENT_TIMEOUT is used as the request timeout.
In Batch Requests, an individual request (part) is executed with IFS_STATEMENT_TIMEOUT timeout independent of its nature (data retrieving/modifying).
When a request timeout is occurred, you will see following kind of an error.
HTTP code: 504
Message code: " ODP_OPERATION_TIMEOUT "
Message description: "Operation did not complete in the expected time (10 seconds)."
In this scenario you can use the following steps to figure out the necessary actions to take.
Determine whether the timeout in the error message (within brackets) is below than the maximum timeout applicable to the current request (data retrieving/modifying).
If so increase the wait preference header value according to above guidlines.
Check if you can optimize the performance of the request.
Ex:- Improve the sql query used in the Quick Report.
Increase the system parameter values as a temporary measure and contact IFS with details of the issue.
i.e:- Request Url, timeout value in the error message.
Please refer System Parameter page for more details.