Log and return 500 when handler flag persistence fails

This commit is contained in:
2026-09-25 13:14:25 +03:00
parent 1697d55ad5
commit 4d8cb8dc36
+4 -2
View File
@@ -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