IBM Support

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

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

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

    2020-11-03

  • 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

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SS8JB4","label":"IBM Business Automation Workflow"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"19.0.0.1"}]

Document Information

Modified date:
14 December 2020