[ 
https://issues.apache.org/jira/browse/CAMEL-10238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15428600#comment-15428600
 ] 

Dhiraj Bokde edited comment on CAMEL-10238 at 8/19/16 6:33 PM:
---------------------------------------------------------------

Hi Rajesh, 

Please attach logs as files next time. From your log it looks like CometD tries 
to reconnect after the 2 hour expiry by sending new handshake messages (I 
tested this and it worked in my local tests), but in your test OAuth token has 
also expired and Salesforce responds with the following message but HTTP status 
200:
{code}
{ext={replay=true}, advice={reconnect=none}, channel=/meta/handshake, id=104, 
error=401::Authentication invalid, successful=false}
{code}
The 401 is buried in the body, so {{SalesforceSecurityHandler}} in 2.18.x 
doesn't see it, and {{reconnect=none}} is causing CometD to terminate the 
connection. I'll also check what's going on in 2.17.x. 

I will create a test for this scenario and provide a way to handle it. BTW, is 
this consumer the only route in your application? I'm wondering why this wasn't 
seen earlier by other users. 


was (Author: dhirajsb):
Hi Rajesh, 

Please attach logs as files next time. From your log it looks like CometD tries 
to reconnect after the 2 hour expiry by sending new handshake messages (I 
tested this and it worked in my local tests), but in your test OAuth token has 
also expired and Salesforce responds with the following message but HTTP status 
200:
{code}
{ext={replay=true}, advice={reconnect=none}, channel=/meta/handshake, id=104, 
error=401::Authentication invalid, successful=false}
{code}
The 401 is buried in the body, so {{SalesforceSecurityHandler}} in 2.18.x 
doesn't see it, and {{reconnect=none}} is causing CometD to terminate the 
connection. I'll also check what's going on in 2.1.7.x. 

I will create a test for this scenario and provide a way to handle it. BTW, is 
this consumer the only route in your application? I'm wondering why this wasn't 
seen earlier by other users. 

> Camel-salesforce component never tries to reconnect after a disconnect
> ----------------------------------------------------------------------
>
>                 Key: CAMEL-10238
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10238
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-salesforce
>    Affects Versions: 2.17.2, 2.17.3, 2.18.0
>            Reporter: Rajesh A
>            Assignee: Dhiraj Bokde
>
> My connection to salesforce-streaming api gets disconnect automatically after 
> 2 hours. This is because salesforce automatically disconnects the connection 
> from server side. However, I was expecting camel-salesforce component to 
> reconnect automatically after disconnect. But, it does not reconnect and I do 
> not have a  hold or a way to reconnect. Seems to be a defect and a blocker to 
> me.
> Here is the trace log
> {code}
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_CONNECT]: {clientId=3u9riwg6ag3r5dd3ay86i444f, 
> channel=/meta/connect, id=84, successful=true}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Connecting, 
> transport 
> org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$3@4e0cc334
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Sending 
> messages [{clientId=3u9riwg6ag3r5dd3ay86i444f, channel=/meta/connect, id=85, 
> connectionType=long-polling}]
> [36mo.a.c.c.s.i.s.SubscriptionHelper$3      [0;39m [2m:[0;39m Received 
> messages [{clientId=3u9riwg6ag3r5dd3ay86i444f, channel=/meta/connect, id=85, 
> successful=true}]
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Processing 
> /meta/connect {clientId=3u9riwg6ag3r5dd3ay86i444f, channel=/meta/connect, 
> id=85, successful=true}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> CONNECTED -> CONNECTED
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_CONNECT]: {clientId=3u9riwg6ag3r5dd3ay86i444f, 
> channel=/meta/connect, id=85, successful=true}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Connecting, 
> transport 
> org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$3@4e0cc334
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Sending 
> messages [{clientId=3u9riwg6ag3r5dd3ay86i444f, channel=/meta/connect, id=86, 
> connectionType=long-polling}]
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> CONNECTED -> UNCONNECTED
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Messages failed 
> [{clientId=3u9riwg6ag3r5dd3ay86i444f, channel=/meta/connect, id=86, 
> connectionType=long-polling}]
> java.io.EOFException: HttpConnectionOverHTTP@12f0e719(l:/10.172.131.200:50574 
> <-> 
> r:my-proxy.com/x.x.x.x:xx,closed=false)[HttpChannelOverHTTP@2a4927(exchange=HttpExchange@6ae1ae35
>  req=TERMINATED/null@null 
> res=PENDING/null@null)[send=HttpSenderOverHTTP@51fea1e0(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator{s=START}],recv=HttpReceiverOverHTTP@44234ce9(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0
>  of -1}]]]
>       at 
> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:277)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1309) 
> [jetty-http-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:182)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:129)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:69)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:89)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:122)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
> [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>  [jetty-util-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>  [jetty-util-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_CONNECT]: {failure={exception=java.io.EOFException: 
> HttpConnectionOverHTTP@12f0e719(l:/10.172.131.200:50574 <-> 
> r:my-proxy.com/x.x.x.x:xx,closed=false)[HttpChannelOverHTTP@2a4927(exchange=HttpExchange@6ae1ae35
>  req=TERMINATED/null@null 
> res=PENDING/null@null)[send=HttpSenderOverHTTP@51fea1e0(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator{s=START}],recv=HttpReceiverOverHTTP@44234ce9(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0
>  of -1}]]], message={clientId=3u9riwg6ag3r5dd3ay86i444f, 
> channel=/meta/connect, id=86, connectionType=long-polling}, 
> connectionType=long-polling}, channel=/meta/connect, id=86, 
> subscription=null, successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Connecting, 
> transport 
> org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$3@4e0cc334
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Sending 
> messages [{clientId=3u9riwg6ag3r5dd3ay86i444f, advice={timeout=0}, 
> channel=/meta/connect, id=87, connectionType=long-polling}]
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> UNCONNECTED -> UNCONNECTED
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Messages failed 
> [{clientId=3u9riwg6ag3r5dd3ay86i444f, advice={timeout=0}, 
> channel=/meta/connect, id=87, connectionType=long-polling}]
> org.eclipse.jetty.io.EofException: null
>       at 
> org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(SslConnection.java:723)
>  ~[jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:408) 
> ~[jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:302) 
> ~[jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:129) 
> [jetty-io-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpSenderOverHTTP.sendHeaders(HttpSenderOverHTTP.java:108)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.client.HttpSender.send(HttpSender.java:204) 
> [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpChannelOverHTTP.send(HttpChannelOverHTTP.java:78)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpConnectionOverHTTP$Delegate.send(HttpConnectionOverHTTP.java:218)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpConnectionOverHTTP.send(HttpConnectionOverHTTP.java:91)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpDestinationOverHTTP.send(HttpDestinationOverHTTP.java:36)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.http.HttpDestinationOverHTTP.send(HttpDestinationOverHTTP.java:26)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.PoolingHttpDestination.process(PoolingHttpDestination.java:150)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.PoolingHttpDestination.send(PoolingHttpDestination.java:85)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.PoolingHttpDestination.send(PoolingHttpDestination.java:76)
>  [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.eclipse.jetty.client.HttpDestination.send(HttpDestination.java:187) 
> [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:527) 
> [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:694) 
> [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:678) 
> [jetty-client-9.2.14.v20151106.jar:9.2.14.v20151106]
>       at 
> org.cometd.client.transport.LongPollingTransport.send(LongPollingTransport.java:191)
>  [cometd-java-client-3.0.9.jar:na]
>       at 
> org.cometd.client.BayeuxClient$BayeuxClientState.transportSend(BayeuxClient.java:1430)
>  [cometd-java-client-3.0.9.jar:na]
>       at 
> org.cometd.client.BayeuxClient$BayeuxClientState.send(BayeuxClient.java:1425) 
> [cometd-java-client-3.0.9.jar:na]
>       at org.cometd.client.BayeuxClient.sendConnect(BayeuxClient.java:482) 
> [cometd-java-client-3.0.9.jar:na]
>       at org.cometd.client.BayeuxClient$12.run(BayeuxClient.java:815) 
> [cometd-java-client-3.0.9.jar:na]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_66]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> [na:1.8.0_66]
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>  [na:1.8.0_66]
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>  [na:1.8.0_66]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [na:1.8.0_66]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [na:1.8.0_66]
>       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
> Caused by: java.nio.channels.ClosedChannelException: null
>       ... 30 common frames omitted
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_CONNECT]: 
> {failure={exception=org.eclipse.jetty.io.EofException, 
> message={clientId=3u9riwg6ag3r5dd3ay86i444f, advice={timeout=0}, 
> channel=/meta/connect, id=87, connectionType=long-polling}, 
> connectionType=long-polling}, channel=/meta/connect, id=87, 
> subscription=null, successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Connecting, 
> transport 
> org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$3@4e0cc334
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Sending 
> messages [{clientId=3u9riwg6ag3r5dd3ay86i444f, advice={timeout=0}, 
> channel=/meta/connect, id=88, connectionType=long-polling}]
> [36mo.a.c.c.s.i.s.SubscriptionHelper$3      [0;39m [2m:[0;39m Received 
> messages [{advice={reconnect=handshake, interval=0}, channel=/meta/connect, 
> id=88, error=403::Unknown client, successful=false}]
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Processing 
> /meta/connect {advice={reconnect=handshake, interval=0}, 
> channel=/meta/connect, id=88, error=403::Unknown client, successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> UNCONNECTED -> REHANDSHAKING
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_CONNECT]: {advice={reconnect=handshake, interval=0}, 
> channel=/meta/connect, id=88, error=403::Unknown client, successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Handshaking on 
> transport 
> org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$3@4e0cc334:
>  {supportedConnectionTypes=[long-polling], channel=/meta/handshake, 
> version=1.0}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Sending 
> messages [{ext={replay=true}, supportedConnectionTypes=[long-polling], 
> channel=/meta/handshake, id=89, version=1.0}]
> [36mo.a.c.c.s.i.s.SubscriptionHelper$3      [0;39m [2m:[0;39m Received 
> messages [{ext={replay=true}, advice={reconnect=none}, 
> channel=/meta/handshake, id=89, error=401::Authentication invalid, 
> successful=false}]
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m Processing 
> /meta/handshake {ext={replay=true}, advice={reconnect=none}, 
> channel=/meta/handshake, id=89, error=401::Authentication invalid, 
> successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> REHANDSHAKING -> TERMINATING
> [36mo.a.c.c.s.i.s.SubscriptionHelper        [0;39m [2m:[0;39m 
> [CHANNEL:META_HANDSHAKE]: {ext={replay=true}, advice={reconnect=none}, 
> channel=/meta/handshake, id=89, error=401::Authentication invalid, 
> successful=false}
> [36morg.cometd.client.BayeuxClient          [0;39m [2m:[0;39m State update: 
> TERMINATING -> DISCONNECTED
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to