Add a timeout on the package page

This commit is contained in:
Michael Snoyman 2020-10-27 13:50:29 +02:00
parent bfb01a7a92
commit 615667401f
No known key found for this signature in database
GPG Key ID: 907EAE2F42B52046

View File

@ -86,16 +86,17 @@ packagePage mspi pname =
handlePackage :: Either HackageCabalInfo SnapshotPackageInfo -> Handler Html handlePackage :: Either HackageCabalInfo SnapshotPackageInfo -> Handler Html
handlePackage epi = do handlePackage epi = do
(isDeprecated, inFavourOf, snapInfo, PackageInfo{..}) <- run $ do (isDeprecated, inFavourOf, snapInfo, PackageInfo{..}) <- do
(isDeprecated, inFavourOf) <- getDeprecatedQuery pname (isDeprecated, inFavourOf) <- run $ getDeprecatedQuery pname
snapInfo <- case epi of snapInfo <- case epi of
Right spi -> Right <$> getSnapshotPackagePageInfoQuery spi maxDisplayedDeps Right spi -> Right <$> timeout 2000000 (run $ getSnapshotPackagePageInfoQuery spi maxDisplayedDeps)
Left hci -> pure $ Left hci Left hci -> pure $ Left hci
pinfo <- getPackageInfoQuery epi pinfo <- run $ getPackageInfoQuery epi
pure (isDeprecated, inFavourOf, snapInfo, pinfo) pure (isDeprecated, inFavourOf, snapInfo, pinfo)
(msppi, mhciLatest) <- case snapInfo of (msppi, mhciLatest) <- case snapInfo of
Left hci -> pure (Nothing, Just hci) Left hci -> pure (Nothing, Just hci)
Right sppi -> pure (Just sppi, sppiLatestHackageCabalInfo sppi) Right (Just sppi) -> pure (Just sppi, sppiLatestHackageCabalInfo sppi)
Right Nothing -> pure (Nothing, Nothing)
let authors = enumerate piAuthors let authors = enumerate piAuthors
maintainers = maintainers =
let ms = enumerate piMaintainers let ms = enumerate piMaintainers