The CreatorCon Call for Content is officially open! Get started here.

ECCResponseTimeoutException while using MID Server for On-Prem Environment

GayatriG9086339
Tera Contributor

Hi everyone,

We are facing an issue while invoking a REST API through the MID Server in our on-premise environment. The error message is:

com.glide.ecc.ECCResponseTimeoutException: No response for ECC message request with sysid=97c4a2f487e8fa1068e0fcc5dabb3527 after waiting for 30 seconds in ECC Queue.

Details:

Integration Type: Outbound REST (via MID Server)

API Call Type: Synchronous

Behavior: The job runs successfully for a few minutes and then fails with the above error.

 

What we have tried:

  1. Increased the timeout value using setTimeout() in the script.
  2. Added/updated the following system properties:
  • com.glide.rest.outbound.ecc_response.timeout = 360
  • com.glide.http.outbound.max_timeout.enabled = false

Despite these changes, the error persists — the response still times out after around 30 seconds.


Looking for Guidance:

  1. Is there any additional configuration required on the MID Server or ECC Queue to extend this timeout for synchronous REST calls?
  2. Does the MID Server have any internal timeout limits that override the system property values?

Any insights or suggestions from the community would be greatly appreciated!
@Russ Hancock  @Mike Allen @John Caruso 

3 REPLIES 3

Kieran Anson
Kilo Patron

Can you share the script you've written? As depending on your use of the RestMessage API, you may be overriding the synchronous behaviour and/or timeout behaviour

Hi @Kieran Anson,

Thank you for the response! 

Here are the insights from the script we’re using:

 

var r;
var response;
var responseBody;
var httpStatus;

r = new sn_ws.RESTMessageV2("x_custom_app.Integration_Data_Catalogs", "GetDataCatalogs");
r.setStringParameterNoEscape("root_url", rootURL);
r.setQueryParameter('filter', filter);
r.setQueryParameter('skip', skip);
r.setQueryParameter('limit', limit);

this.setHTTPHeaders(r); // set request headers

r.setHttpTimeout(30000); // 30 seconds timeout

response = r.execute();
responseBody = response.haveError() ? response.getErrorMessage() : JSON.parse(response.getBody());
httpStatus = response.getStatusCode();

if (httpStatus == 200) {
    return {
        success: true,
        result: responseBody
    };
} else {
    this.logger.error("APIUtility:", "fetchCatalogs:", "Error Message: " + responseBody);
    return this.errorObject(responseBody);
}
 

Please note that the REST API call is made through the MID Server.

 

Hi @Kieran Anson,
Thanks for the response! 

Here are the insights from the script we’re using:

var r;
var response;
var responseBody;
var httpStatus;

r = new sn_ws.RESTMessageV2("x_custom_app.Integration_Data_Catalogs", "GetDataCatalogs");
r.setStringParameterNoEscape("root_url", rootURL);
r.setQueryParameter('filter', filter); 
r.setQueryParameter('skip', skip);
r.setQueryParameter('limit', limit);

this.setHTTPHeaders(r); // set request headers

r.setHttpTimeout(30000); // 30 seconds timeout

response = r.execute();
responseBody = response.haveError() ? response.getErrorMessage() : JSON.parse(response.getBody());
httpStatus = response.getStatusCode();

if (httpStatus == 200) {
    return {
        success: true,
        result: responseBody
    };
} else {
    this.logger.error("APIUtility:", "fetchCatalogs:", "Error Message: " + responseBody);
    return this.errorObject(responseBody);
}

Please note that the REST API call is made through the MID Server.