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)