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 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