From 3393217f66102c281416d6e55404e56733d97cdf Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Fri, 24 Apr 2020 12:41:33 +0300 Subject: [PATCH] Keep using old Stack versions on API failures --- src/Application.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Application.hs b/src/Application.hs index ab35795..8454f55 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -38,7 +38,7 @@ import Network.Wai.Middleware.RequestLogger (Destination(Logger), IPAddrSource(..), OutputFormat(..), destination, mkRequestLogger, outputFormat) -import RIO (LogFunc, LogOptions, logOptionsHandle, withLogFunc, runRIO, logError) +import RIO (LogFunc, LogOptions, logOptionsHandle, withLogFunc, runRIO, logError, displayShow) import RIO.Prelude.Simple (runSimpleApp) import Stackage.Database (withStackageDatabase) import Stackage.Database.Cron (newHoogleLocker, singleRun) @@ -152,11 +152,14 @@ withFoundation appLogFunc appSettings inner = do grRefresh appWebsiteContent withStackageDatabase (appShouldLogAll appSettings) pgConf $ \appStackageDatabase -> do appLatestStackMatcher <- - mkAutoUpdate + mkAutoUpdateWithModify defaultUpdateSettings { updateFreq = 1000 * 1000 * 60 * 30 -- update every thirty minutes , updateAction = getLatestMatcher appHttpManager } + \oldMatcher -> getLatestMatcher appHttpManager `catchAny` \e -> do + runRIO appLogFunc $ RIO.logError $ "Couldn't get Stack matcher: " <> displayShow e + pure oldMatcher appHoogleLock <- newMVar () appMirrorStatus <- mkUpdateMirrorStatus hoogleLocker <- newHoogleLocker appLogFunc appHttpManager