IBM Support

JR62950: YOU RECEIVE A RUNTIME EXCEPTION IN IBM PROCESS FEDERATION SERVER WHEN A REQUEST TO ELASTICSEARCH FAILS WITH A TIMEOUT EXCEPTION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Under heavy loads, requests to the remote Elasticsearch cluster
    might fail with a timeout exception, causing Process Federation
    Server to report a runtime exception similar to this exception:
    
    Stack Dump = java.lang.RuntimeException: error while performing
    request
    at
    org.elasticsearch.client.RestClient$SyncResponseListener.get(Res
    tClient.java:682)
    at
    org.elasticsearch.client.RestClient.performRequest(RestClient.ja
    va:220)
    at
    org.elasticsearch.client.RestClient.performRequest(RestClient.ja
    va:192)
    at
    org.elasticsearch.client.RestClient.performRequest(RestClient.ja
    va:154)
    at
    com.ibm.bpm.elasticsearch.client.impl.ESClientImpl.getClusterHea
    lth(ESClientImpl.java:304)
    at
    com.ibm.bpm.elasticsearch.client.impl.ESClientComponent.getClust
    erHealth(ESClientComponent.java:286)
    at
    com.ibm.bpm.elasticsearch.impl.ElasticsearchServiceManager.isEla
    sticsearchReady(lasticsearchServiceManager.java:238)
    at
    com.ibm.bpm.elasticsearch.impl.ElasticsearchServiceManager.run(E
    lasticsearchServiceManager.java:127)
    at
    com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrappe
    r.run(ExecutorServiceImpl.java:239)
    at
    java.util.concurrent.Executors$RunnableAdapter.call(Executors.ja
    va:522)
    at java.util.concurrent.FutureTask.run(FutureTask.java:277)
    at
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExec
    utor.java:1160)
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe
    cutor.java:635)
    at java.lang.Thread.run(Thread.java:818)
    Caused by: java.util.concurrent.TimeoutException
    at
    org.apache.http.nio.pool.AbstractNIOConnPool.processPendingReque
    st(AbstractNIOConnPool.java:364)
    at
    org.apache.http.nio.pool.AbstractNIOConnPool.processNextPendingR
    equest(AbstractNIOConnPool.java:344)
    at
    org.apache.http.nio.pool.AbstractNIOConnPool.release(AbstractNIO
    ConnPool.java:318)
    at
    org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManage
    r.releaseConnection(oolingNHttpClientConnectionManager.java:303)
    at
    org.apache.http.impl.nio.client.AbstractCientExchangeHandler.rel
    easeConnection(AbstractClientExchangeHandler.java:239)
    at
    org.apache.http.impl.nio.client.MainClientExec.responseCompleted
    (MainClientExec.java:387)
    at
    org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl
    .responseCompleted(DefaultClientExchangeHandlerImpl.java:168)
    at
    org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processRes
    ponse(HttpAsyncRequestExecutor.java:436)
    at
    org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseRe
    ceived(HttpAsyncRequestExecutor.java:309)
    at
    org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInp
    ut(DefaultNHttpClientConnection.java:255)
    at
    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(
    InternalIODispatch.java:81)
    at
    org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(
    InternalIODispatch.java:39)
    at
    org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(A
    bstractIODispatch.java:114)
    at
    org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIORe
    actor.java:162)
    at
    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(
    AbstractIOReactor.java:337)
    at
    org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents
    (AbstractIOReactor.java:315)
    at
    org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(Abstr
    actIOReactor.java:276)
    at
    org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIORea
    ctor.java:104)
    at
    org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Wo
    rker.run(AbstractMultiworkerIOReactor.java:588)
    ... 1 more
    
    
    PRODUCTS AFFECTED
    IBM Business Automation Workflow
    

Local fix

Problem summary

  • No additional information is available.
    

Problem conclusion

  • A fix is available or will be available that ensures
     -Process Federation Server properly processes timeout
    exceptions when communicating with an external Elasticsearch
    cluster
     -Process Federation Server Elasticsearch client provides
    additional configuration attributes for the
    <ibmPfs_remoteElasticsearch> configuration element in the
    server.xml to optionally customise the following configuration
    properties:
       -connectTimeout: The maximum length of time Process
    Federation Server waits to connect to the remote Elasticsearch
    cluster to call its REST API. Specify a positive integer
    followed by the unit of time, which can be seconds (s). For
    example, specify 30 seconds as 30s. The default setting of 10s
    is used if a value is not set.
       -readTimeout: The maximum length of time Process Federation
    Server waits for the remote Elasticsearch to respond. Specify a
    positive integer followed by the unit of time, which can be
    seconds (s). For example, specify 60 seconds as 60s. The default
    setting of 30s is used if a value is not set.
       -threadCount: The number of worker threads of the
    Elasticsearch client. Specify an integer. If the specified value
    is 0 or negative, the Elasticsearch client uses one worker
    thread per available processor. The default setting of 0 is used
    if a value is not set.
       -maxConnTotal: The maximum number of connections allowed
    across all routes when Process Federation Server connects to the
    remote Elasticsearch cluster to call its REST API. Specify a
    positive integer. If the value is provided less or equal to 0,
    the default Elasticsearch High Level REST Client value is used.
       -maxConnPerRoute: The maximum number of connections allowed
    for a route when Process Federation Server connects to the
    remote Elasticsearch cluster to call its REST API. Specify a
    positive integer. If the value is provided less or equal to 0,
    the default Elasticsearch High Level REST Client value is used.
    

Temporary fix

  • Not applicable.
    

Comments

APAR Information

  • APAR number

    JR62950

  • Reported component name

    BUS AUTO WORKFL

  • Reported component ID

    5737H4100

  • Reported release

    J00

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2020-10-23

  • Closed date

    2020-11-03

  • Last modified date

    2025-07-13

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    BUS AUTO WORKFL

  • Fixed component ID

    5737H4100

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SS8JB4","label":"IBM Business Automation Workflow"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"19.0.0.1","Line of Business":{"code":"LOB76","label":"Data Platform"}}]

Document Information

Modified date:
14 July 2025