Hemang Ajmera created CAMEL-13999:
-------------------------------------
Summary: Salesforce Component IDLE_TIMEOUT Blocks Async Request
Responses for 2.x
Key: CAMEL-13999
URL: https://issues.apache.org/jira/browse/CAMEL-13999
Project: Camel
Issue Type: Bug
Components: camel-salesforce
Affects Versions: 2.23.0
Reporter: Hemang Ajmera
Assignee: Claus Ibsen
Fix For: 3.0.0, 3.0.0.RC1
Bulk, Composite Batch, etc. all throw an exception when trying to return on
more than a few records due to [static final
IDLE_TIMEOUT|https://github.com/apache/camel/blob/master/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java#L80]
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|https://github.com/apache/camel/blob/master/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java#L714],
instead opting to take the [hardcoded
defaults|https://github.com/apache/camel/blob/master/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java#L707].
--
This message was sent by Atlassian Jira
(v8.3.4#803005)