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 Data.ByteString (ByteString)
|
||||||
import GHC.Generics (Generic)
|
import GHC.Generics (Generic)
|
||||||
import Servant (Handler, err404)
|
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 Servant.Server (err500, ServerT)
|
||||||
import Data.Maybe (fromMaybe)
|
import Data.Maybe (fromMaybe)
|
||||||
import Data.Map.Strict (Map)
|
import Data.Map.Strict (Map)
|
||||||
@@ -49,7 +49,9 @@ putFlagHandler :: Flags -> Text -> Bool -> LoggingHandler (Map Text Bool)
|
|||||||
putFlagHandler flags name val
|
putFlagHandler flags name val
|
||||||
| name `S.notMember` validNames flags = throwM err404
|
| name `S.notMember` validNames flags = throwM err404
|
||||||
| otherwise = do
|
| 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
|
allFlags flags
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user