Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.19.0
-
Salesforce API version 41.0 (we don't know if this affect other API versions)
-
Unknown
Description
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
Attachments
Issue Links
- links to