With most applications that connect to an API, unnecessary exceptions
can be returned back to the caller in the case of transient network or
service issues. To avoid this RAthena has implemented a
retry method with exponential backoff. This technique increases the
reliability of the application with connecting to AWS
Athena.
RAthena’s retry?By default RAthena performs a retry noisily, this means
it will report the exception it has encountered and let the user know
how long RAthena will wait until it retries again. This is
reported in the following format:
{expection message} + "Request failed. Retrying in " + {wait time} + " seconds..."This is to keep the user informed in what RAthena is
doing behind the scenes.
By default RAthena retries 5 times and does it noisily.
To configure this, RAthena_options has been give 2 extra
parameters retry and retry_quiet.
retry is the number of retries RAthena will
perform. retry_quiet tells RAthena to retry
quietly or not.
We can change the default retry settings so that RAthena
will retry 10 times and do it quietly:
RAthena_options(retry = 10, retry_quiet = TRUE)If you wish to create your own custom retry function just set the
retry to 0:
library(DBI)
library(RAthena)
# connection to AWS Athena
con = dbConnect(athena())
# Stop RAthena retrying
RAthena_options(retry = 0)
# build your own custom retry function
custom_retry = function(x){
# your custom retry method
}
# apply your own retry function
custom_retry(dbGetQuery(con, "select ..."))If you wish to increase the retry functionality of
RAthena for example the use of different backoff
algorithms, please raise a ticket at issues or raise
a pull request.