diff --git a/src/HttpServer.hs b/src/HttpServer.hs index 07b724d..6d4f0a5 100644 --- a/src/HttpServer.hs +++ b/src/HttpServer.hs @@ -11,7 +11,7 @@ import Servant.API ((:>), Capture, Get, QueryParam, (:-), MimeRender (..), Accep import Data.ByteString (ByteString) import GHC.Generics (Generic) import Servant (Handler, err404) -import Control.Monad.Catch (throwM, MonadCatch, MonadThrow) +import Control.Monad.Catch (throwM, catch, MonadCatch, MonadThrow, SomeException) import Servant.Server (err500, ServerT) import Data.Maybe (fromMaybe) import Data.Map.Strict (Map) @@ -49,7 +49,9 @@ putFlagHandler :: Flags -> Text -> Bool -> LoggingHandler (Map Text Bool) putFlagHandler flags name val | name `S.notMember` validNames flags = throwM err404 | otherwise = do - setEnabled flags name val + setEnabled flags name val `catch` \e -> do + logFM ErrorS (ls ("failed to persist handler flag: " <> show (e :: SomeException))) + throwM err500 allFlags flags