Mabrouk Belhout created CAMEL-11980:
---------------------------------------

             Summary: PushTopic client doesn't clear refresh token after a long 
disconnected period
                 Key: CAMEL-11980
                 URL: https://issues.apache.org/jira/browse/CAMEL-11980
             Project: Camel
          Issue Type: Bug
          Components: camel-salesforce
    Affects Versions: 2.19.0
         Environment: Salesforce API version 41.0 (we don't know if this affect 
other API versions)
            Reporter: Mabrouk Belhout
            Priority: Major


The bayeux client implements a mechanism to reconnect to salesforce's pushtopic 
after a network failure.

In production, we experienced a lost of network connection. Bayeux client tried 
to reconnect and failed to.
when analyzing, we saw a bunch of logs  

o.a.c.c.s.i.s.SubscriptionHelper : Error restarting: Error during HANDSHAKE: 
403::Handshake denied org.apache.camel.CamelException: Error during HANDSHAKE: 
403::Handshake denied
o.a.c.c.s.i.s.SubscriptionHelper : Failed to restart after pausing for 0 msecs 
[skipped...]
o.a.c.c.s.i.s.SubscriptionHelper : Error restarting: Error during HANDSHAKE: 
403::Handshake denied org.apache.camel.CamelException: Error during HANDSHAKE: 
403::Handshake denied
o.a.c.c.s.i.s.SubscriptionHelper : Failed to restart after pausing for 5000 
msecs 
[skipped...]
o.a.c.c.s.i.s.SubscriptionHelper : Error restarting: Error during HANDSHAKE: 
403::Handshake denied org.apache.camel.CamelException: Error during HANDSHAKE: 
403::Handshake denied
o.a.c.c.s.i.s.SubscriptionHelper : Failed to restart after pausing for 24000 
msecs 
[skipped...]
o.a.c.c.s.i.s.SubscriptionHelper : Error restarting: Error during HANDSHAKE: 
403::Handshake denied org.apache.camel.CamelException: Error during HANDSHAKE: 
403::Handshake denied
o.a.c.c.s.i.s.SubscriptionHelper : Failed to restart after pausing for 30000 
msecs 

o.a.c.c.s.SalesforceConsumer : Aborting restart attempt due to: Error during 
HANDSHAKE: 403::Handshake denied. Caused by: 
[org.apache.camel.component.salesforce.api.SalesforceException - Aborting 
restart attempt due to: Error during HANDSHAKE: 403::Handshake denied] 
org.apache.camel.component.salesforce.api.SalesforceException: Aborting restart 
attempt due to: Error during HANDSHAKE: 403::Handshake denied
then the stacktrace.


When going deeped in analyzing, we figure out that Salesforce, after such a 
loss of network, can answer by a 401 code (subscription to channel is not valid 
anymore)  and in some circumstances by a 403 code (authentication is not valid 
anymore - the refresh token has been invalidated by salesforce).

401 code implies that the client reissue a login with same refreshToken.
403 code implies that the client reissue a new login phase ( thus invalidating 
the previous refreshToken).


401 code is already handled by SubscriptionHelper, while 403 is not.
see the doStart() method after the handshakeError test




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to