Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-13796

Salesforce Component IDLE_TIMEOUT Blocks Async Request Responses

    XMLWordPrintableJSON

Details

    • Unknown

    Description

      Bulk, Composite Batch, etc. all throw an exception when trying to return on more than a few records due to static final IDLE_TIMEOUT on the instantiated salesforce component httpClient:

       

      Caused by: org.apache.camel.component.salesforce.api.SalesforceException: Unexpected error {0:null} executing {POST:https://genericSFDCInstance.salesforce.com/services/data/v38.0/composite/batch}
              at org.apache.camel.component.salesforce.internal.client.AbstractClientBase$1.onComplete(AbstractClientBase.java:199) ~[camel-salesforce-2.23.0.jar:2.23.0]
              at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:202) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:194) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:470) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpReceiver.abort(HttpReceiver.java:552) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpChannel.abortResponse(HttpChannel.java:156) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpChannel.abort(HttpChannel.java:149) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpExchange.abort(HttpExchange.java:257) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpConversation.abort(HttpConversation.java:141) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.HttpRequest.abort(HttpRequest.java:767) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.abort(HttpConnectionOverHTTP.java:204) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.close(HttpConnectionOverHTTP.java:190) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onIdleExpired(HttpConnectionOverHTTP.java:145) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.ssl.SslConnection.onIdleExpired(SslConnection.java:286) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:401) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_201]
              at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_201]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_201]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_201]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_201]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_201]
              ... 1 more

      Caused by: java.util.concurrent.TimeoutException: Idle timeout 5000 ms
              at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onIdleExpired(HttpConnectionOverHTTP.java:145) ~[jetty-client-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.ssl.SslConnection.onIdleExpired(SslConnection.java:286) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:401) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50) ~[jetty-io-9.4.12.v20180830.jar:9.4.12.v20180830]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_201]
              at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_201]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_201]
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_201]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_201]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_201]
              ... 1 more

       

      Note that as IDLE_TIMEOUT is static, it cannot be set via Spring, and the httpClientProperties map is never used to set any timeouts, instead opting to take the hardcoded defaults.

       

      Attachments

        Issue Links

          Activity

            People

              davsclaus Claus Ibsen
              mtajiri Marc Tajiri
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: