Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.23.4
-
None
-
Unknown
Description
Currently we are using the Salesforce component version 2.23.4.
Every 3 hours the component needs to resubscribe due to expiring token (expected behavior). Sometimes however it fails on:
org.apache.camel.component.salesforce.api.SalesforceException: Error subscribing to /event/CustomerLegalEntity__e: 403:denied_by_security_policy:subscribe_deniedorg.apache.camel.component.salesforce.api.SalesforceException: Error subscribing to /event/CustomerLegalEntity__e: 403:denied_by_security_policy:subscribe_denied at org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper$7.onMessage(SubscriptionHelper.java:406)
It turns out (not in the logging) that the server returns additional information:
{ext={sfdc={failureReason=503::Server is too busy. Please try your request again later.}}, ...}
As described in the Salesforce documentation here: https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/streaming_handling_errors.htm
the 503 Server too busy is a documented error that should/can be retried.
It would greatly add to the resilience of our system if the Salesforce component would automatically retry a subscribe if failed due to a temporary error. The same backoff mechanism as for the reconnect could apply.
Currently our workaround is to detect a 403 (more information is not available, like the failureReason) and restart the whole Camel subsystem.
Attachments
Issue Links
- links to