Log and return 500 when handler flag persistence fails
This commit is contained in:
+4
-2
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user