Merge pull request #301 from lehins/deal-with-slow-queries

Disable the really slow pages
This commit is contained in:
Michael Snoyman 2020-11-11 09:37:10 +02:00 committed by GitHub
commit 47ae6b8387
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 39 deletions

View File

@ -1,6 +1,7 @@
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad.Logger (runNoLoggingT, runStdoutLoggingT)
@ -10,7 +11,7 @@ import Database.Persist.Sql (ConnectionPool, SqlBackend, runSqlPool)
import Gauge
import Pantry.Internal.Stackage (PackageNameP(..))
import RIO
import Settings (getAppSettings, AppSettings(..), configSettingsYmlValue)
import Settings (getAppSettings, AppSettings(..), DatabaseSettings(..), configSettingsYmlValue)
import Stackage.Database.Query
import Stackage.Database.Schema (withStackageDatabase, runDatabase)
import Stackage.Database.Types (LatestInfo, SnapName(..), SnapshotPackageInfo(..))
@ -19,17 +20,12 @@ import Yesod.Default.Config2
main :: IO ()
main = do
appSettings <- getAppSettings
let pgConf =
PostgresConf
{ pgPoolSize = appPostgresPoolsize appSettings
, pgConnStr = encodeUtf8 $ appPostgresString appSettings
}
let snapName = SNLts 16 4
mSnapInfo <-
runSimpleApp $
withStackageDatabase
True
pgConf
(appDatabase appSettings)
(\db -> runDatabase db $ getSnapshotPackageInfoQuery snapName (PackageNameP "yesod"))
let snapInfo = fromMaybe (error "snapInfo not retrieved") mSnapInfo
defaultMain [benchs snapInfo]
@ -39,13 +35,10 @@ runBenchApp pool m = runSimpleApp $ runSqlPool m pool
createBenchPool :: IO ConnectionPool
createBenchPool = do
baSettings <- loadYamlSettingsArgs [configSettingsYmlValue] useEnv
pool <-
runNoLoggingT $
createPostgresqlPool
(encodeUtf8 $ appPostgresString baSettings)
(appPostgresPoolsize baSettings)
pure pool
loadYamlSettingsArgs [configSettingsYmlValue] useEnv >>= \case
AppSettings{appDatabase = DSPostgres pgString pgPoolSize} ->
runNoLoggingT $ createPostgresqlPool (encodeUtf8 pgString) pgPoolSize
_ -> throwString "Benchmarks are crafted for PostgreSQL"
releasePool :: ConnectionPool -> IO ()
releasePool = destroyAllResources

View File

@ -1,22 +1,26 @@
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
module Handler.PackageList where
import Import
import Stackage.Database
import Text.Blaze
-- FIXME maybe just redirect to the LTS or nightly package list
getPackageListR :: Handler Html
getPackageListR =
track "Handler.PackageList.getPackageListR" $
defaultLayout $ do
cacheSeconds $ 60 * 60 * 2
setTitle "Package list"
packages <- getAllPackages
$(widgetFile "package-list")
where
strip x = fromMaybe x (stripSuffix "." x)
makePackageLink snapName pli =
SnapshotR snapName $ StackageSdistR $ PNVNameVersion (pliName pli) (pliVersion pli)
getPackageListR = do
sendResponseStatus status404 =<<
defaultLayout
(toWidget (preEscapedText
("Page has been disabled, see: " <>
"<a href=\"https://github.com/fpco/stackage-server/issues/299\">" <>
"github:fpco/stackage-server#299</a>")))
-- track "Handler.PackageList.getPackageListR" $
-- defaultLayout $ do
-- cacheSeconds $ 60 * 60 * 2
-- setTitle "Package list"
-- packages <- getAllPackages
-- $(widgetFile "package-list")
-- where
-- strip x = fromMaybe x (stripSuffix "." x)
-- makePackageLink snapName pli =
-- SnapshotR snapName $ StackageSdistR $ PNVNameVersion (pliName pli) (pliVersion pli)

View File

@ -17,6 +17,7 @@ import RIO.Time (FormatTime)
import Import
import Stackage.Database
import Stackage.Snapshot.Diff
import Text.Blaze
getStackageHomeR :: SnapName -> Handler TypedContent
getStackageHomeR name =
@ -155,12 +156,19 @@ getSnapshotPackagesR name = track "Handler.StackageHome.getSnapshotPackagesR" $
redirect $ SnapshotR name StackageHomeR
getDocsR :: SnapName -> Handler Html
getDocsR name = track "Handler.StackageHome.getDocsR" $ do
cacheSeconds $ 60 * 60 * 48
Entity sid _ <- lookupSnapshot name >>= maybe notFound return
mlis <- getSnapshotModules sid
render <- getUrlRender
let mliUrl mli = render $ haddockUrl name mli
defaultLayout $ do
setTitle $ toHtml $ "Module list for " ++ toPathPiece name
$(widgetFile "doc-list")
getDocsR _name = do
sendResponseStatus status404 =<<
defaultLayout
(toWidget (preEscapedText
("Page has been disabled, see: " <>
"<a href=\"https://github.com/fpco/stackage-server/issues/300\">" <>
"github:fpco/stackage-server#300</a>")))
-- track "Handler.StackageHome.getDocsR" $ do
-- cacheSeconds $ 60 * 60 * 48
-- Entity sid _ <- lookupSnapshot name >>= maybe notFound return
-- mlis <- getSnapshotModules sid
-- render <- getUrlRender
-- let mliUrl mli = render $ haddockUrl name mli
-- defaultLayout $ do
-- setTitle $ toHtml $ "Module list for " ++ toPathPiece name
-- $(widgetFile "doc-list")