Yes, DESelect Segment implements a retry logic for all Selection runs, normal and scheduled.
What is a retry logic?
A retry logic is a method used to deal with unsuccessful operations. It is only useful for transient failures and it helps improve the stability of an application. The concept behind a retry logic is that on an operation failing, the system automatically retries to perform the exact same operation, until it succeeds, or for a definite number of times.
When is the retry triggered?
The retry logic gets triggered by specific messages and does not always start by itself.
The SFMC messages that trigger the retry are the following:
- Error saving AdditionalQueryPart: This error occurs sometimes on SFMC server when it is too busy to process a request that includes a lot of filters. The recommended workaround from SFMC support is to retry the request.
- A network-related or instance-specific error occurred while establishing a connection to SQL Server: The server was not found or was not accessible: This error can occur when SFMC failed to connect to its database, and therefore cannot serve our request.
- Connection Timeout Expired: The timeout period elapsed while attempting to consume the pre-login handshake acknowledgment. This could be because the pre-login handshake failed or the server was unable to respond back in time: Our connection to SFMC took too long to complete and timed out.
How does the retry logic work?
Whenever DESelect receives one of the retry messages as the response from SFMC the retry gets triggered. The maximum amount of times DESelect will retry this is 3 times.
The retry will be terminated earlier only if:
- We get a response that the operation was completed successfully.
- We get a response that the operation failed with a message that is not a retry message.
Between the attempts, there is an incremental wait time of 1 second:
- The first retry will happen 1 second after the original run failed.
- If it fails, the next one will wait 2 seconds before running.
The final retry attempt will run 3 seconds after the second one failed.
How can you tell if a specific run was retried?
Whenever a Selection is retried, but still fails to complete, a custom message is shown to the user:
Looks like SFMC server is currently too busy to process your request. Please try again in a few minutes. For more information, create a support case here.
This message will show up in all these places:
- The status column of the Selection
- The Selection run logs
- If the Selection is scheduled it will be included inside the body of the email the user received.
Apart from this message, there will be no indication to the user that the retry occurred.
In cases where the retry was triggered, and the Selection completed successfully, the user will not be made aware that the retry occurred.
Can the retry logic be extended?
We want to make sure we provide the best experience for our users. Therefore, we are looking into extending the messages that trigger the retry. Feel free to reach out to us here with any ideas regarding SFMC messages that could be added to the policy.