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

Salesforce: a synchronous call that follow an asynchronous call will always result in a TimeoutException

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 3.0.0.RC3
    • Fix Version/s: 3.x
    • Component/s: camel-salesforce
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      Using the synchronous URL option, a synchronous operation following an asynchronous operation will result in a java.util.concurrent.TimeoutException. Subsequent synchronous operations will succeed. Despite the TimeoutException, the operation can still be successful on the salesforce side. I've yet to determine why Camel thinks the operation is timing out.

      Repro:

      from("direct:synchronousTest")
          .setBody(() -> {
              Contact c = new Contact();
              c.setLastName("Test");
              return c;
          })
          .to("salesforce:createSObject?synchronous=false") // no issues
          .setBody(() -> {
              Contact c = new Contact();
              c.setLastName("Test");
              return c;
          })
          .to("salesforce:createSObject?synchronous=true"); // TimeoutException
      

      stack trace:

      org.apache.camel.component.salesforce.api.SalesforceException: Unexpected error {0:null} executing {POST:https://cs44.salesforce.com/services/data/v45.0/sobjects/Contact}
      	at org.apache.camel.component.salesforce.internal.client.AbstractClientBase$1.onComplete(AbstractClientBase.java:206) ~[camel-salesforce-3.0.0-SNAPSHOT.jar:3.0.0-SNAPSHOT]
      	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:196) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:188) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:441) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpReceiver.abort(HttpReceiver.java:523) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpChannel.abortResponse(HttpChannel.java:156) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpChannel.abort(HttpChannel.java:149) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpExchange.abort(HttpExchange.java:257) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpConversation.abort(HttpConversation.java:149) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.HttpRequest.abort(HttpRequest.java:766) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.abort(HttpConnectionOverHTTP.java:204) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.close(HttpConnectionOverHTTP.java:190) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onIdleExpired(HttpConnectionOverHTTP.java:145) ~[jetty-client-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.io.ssl.SslConnection.onIdleExpired(SslConnection.java:302) ~[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:401) ~[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:171) ~[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:113) ~[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
      	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
      	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
      	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
      Caused by: java.util.concurrent.TimeoutException: Idle timeout 10000 ms
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              jeremyross Jeremy Ross
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: