From 182bb019920e4b560260ff6750dc04f008fb5885 Mon Sep 17 00:00:00 2001 From: Tirumarai Selvan A Date: Wed, 31 Oct 2018 14:43:49 +0530 Subject: [PATCH] give precedence to Retry-After header --- server/src-lib/Hasura/Events/Lib.hs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/server/src-lib/Hasura/Events/Lib.hs b/server/src-lib/Hasura/Events/Lib.hs index 6d9d55e479076..f4cc88c6878ef 100644 --- a/server/src-lib/Hasura/Events/Lib.hs +++ b/server/src-lib/Hasura/Events/Lib.hs @@ -237,13 +237,13 @@ processEvent logenv pool e = do retryConfM = etiRetryConf <$> eti retryConf = fromMaybe (RetryConf 0 10) retryConfM tries = eTries e - retryHeaderSeconds = parseRetryHeader mretryHeader + mretryHeaderSeconds = parseRetryHeader mretryHeader triesExhausted = tries >= rcNumRetries retryConf - noRetryHeader = isNothing retryHeaderSeconds + noRetryHeader = isNothing mretryHeaderSeconds if triesExhausted && noRetryHeader -- current_try = tries + 1 , allowed_total_tries = rcNumRetries retryConf + 1 then liftIO $ runExceptT $ runErrorAndUnlockQ pool e else do - let delay = chooseDelay triesExhausted (rcIntervalSec retryConf) retryHeaderSeconds + let delay = fromMaybe (rcIntervalSec retryConf) mretryHeaderSeconds -- give precedence to Retry-After header liftIO $ runExceptT $ runRetryAfterAndUnlockQ pool e delay getRetryAfterHeaderFromError (HStatus resp) = getRetryAfterHeaderFromResp resp @@ -262,12 +262,6 @@ processEvent logenv pool e = do Nothing -> Nothing Just sec -> if sec > 0 then Just sec else Nothing - -- we need to choose delay between the retry conf and the retry-after header - chooseDelay _ retryConfSec Nothing = retryConfSec - chooseDelay triesExhausted retryConfSec (Just retryHeaderSec) = if triesExhausted - then retryHeaderSec - else min retryHeaderSec retryConfSec - tryWebhook :: ( MonadReader r m , MonadIO m