mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-02-20 14:55:52 +01:00
Merge pull request #301 from lehins/deal-with-slow-queries
Disable the really slow pages
This commit is contained in:
commit
47ae6b8387
@ -1,6 +1,7 @@
|
|||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
import Control.Monad.Logger (runNoLoggingT, runStdoutLoggingT)
|
import Control.Monad.Logger (runNoLoggingT, runStdoutLoggingT)
|
||||||
@ -10,7 +11,7 @@ import Database.Persist.Sql (ConnectionPool, SqlBackend, runSqlPool)
|
|||||||
import Gauge
|
import Gauge
|
||||||
import Pantry.Internal.Stackage (PackageNameP(..))
|
import Pantry.Internal.Stackage (PackageNameP(..))
|
||||||
import RIO
|
import RIO
|
||||||
import Settings (getAppSettings, AppSettings(..), configSettingsYmlValue)
|
import Settings (getAppSettings, AppSettings(..), DatabaseSettings(..), configSettingsYmlValue)
|
||||||
import Stackage.Database.Query
|
import Stackage.Database.Query
|
||||||
import Stackage.Database.Schema (withStackageDatabase, runDatabase)
|
import Stackage.Database.Schema (withStackageDatabase, runDatabase)
|
||||||
import Stackage.Database.Types (LatestInfo, SnapName(..), SnapshotPackageInfo(..))
|
import Stackage.Database.Types (LatestInfo, SnapName(..), SnapshotPackageInfo(..))
|
||||||
@ -19,17 +20,12 @@ import Yesod.Default.Config2
|
|||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
appSettings <- getAppSettings
|
appSettings <- getAppSettings
|
||||||
let pgConf =
|
|
||||||
PostgresConf
|
|
||||||
{ pgPoolSize = appPostgresPoolsize appSettings
|
|
||||||
, pgConnStr = encodeUtf8 $ appPostgresString appSettings
|
|
||||||
}
|
|
||||||
let snapName = SNLts 16 4
|
let snapName = SNLts 16 4
|
||||||
mSnapInfo <-
|
mSnapInfo <-
|
||||||
runSimpleApp $
|
runSimpleApp $
|
||||||
withStackageDatabase
|
withStackageDatabase
|
||||||
True
|
True
|
||||||
pgConf
|
(appDatabase appSettings)
|
||||||
(\db -> runDatabase db $ getSnapshotPackageInfoQuery snapName (PackageNameP "yesod"))
|
(\db -> runDatabase db $ getSnapshotPackageInfoQuery snapName (PackageNameP "yesod"))
|
||||||
let snapInfo = fromMaybe (error "snapInfo not retrieved") mSnapInfo
|
let snapInfo = fromMaybe (error "snapInfo not retrieved") mSnapInfo
|
||||||
defaultMain [benchs snapInfo]
|
defaultMain [benchs snapInfo]
|
||||||
@ -39,13 +35,10 @@ runBenchApp pool m = runSimpleApp $ runSqlPool m pool
|
|||||||
|
|
||||||
createBenchPool :: IO ConnectionPool
|
createBenchPool :: IO ConnectionPool
|
||||||
createBenchPool = do
|
createBenchPool = do
|
||||||
baSettings <- loadYamlSettingsArgs [configSettingsYmlValue] useEnv
|
loadYamlSettingsArgs [configSettingsYmlValue] useEnv >>= \case
|
||||||
pool <-
|
AppSettings{appDatabase = DSPostgres pgString pgPoolSize} ->
|
||||||
runNoLoggingT $
|
runNoLoggingT $ createPostgresqlPool (encodeUtf8 pgString) pgPoolSize
|
||||||
createPostgresqlPool
|
_ -> throwString "Benchmarks are crafted for PostgreSQL"
|
||||||
(encodeUtf8 $ appPostgresString baSettings)
|
|
||||||
(appPostgresPoolsize baSettings)
|
|
||||||
pure pool
|
|
||||||
|
|
||||||
releasePool :: ConnectionPool -> IO ()
|
releasePool :: ConnectionPool -> IO ()
|
||||||
releasePool = destroyAllResources
|
releasePool = destroyAllResources
|
||||||
|
|||||||
@ -1,22 +1,26 @@
|
|||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
|
||||||
module Handler.PackageList where
|
module Handler.PackageList where
|
||||||
|
|
||||||
import Import
|
import Import
|
||||||
import Stackage.Database
|
import Text.Blaze
|
||||||
|
|
||||||
|
|
||||||
-- FIXME maybe just redirect to the LTS or nightly package list
|
-- FIXME maybe just redirect to the LTS or nightly package list
|
||||||
getPackageListR :: Handler Html
|
getPackageListR :: Handler Html
|
||||||
getPackageListR =
|
getPackageListR = do
|
||||||
track "Handler.PackageList.getPackageListR" $
|
sendResponseStatus status404 =<<
|
||||||
defaultLayout $ do
|
defaultLayout
|
||||||
cacheSeconds $ 60 * 60 * 2
|
(toWidget (preEscapedText
|
||||||
setTitle "Package list"
|
("Page has been disabled, see: " <>
|
||||||
packages <- getAllPackages
|
"<a href=\"https://github.com/fpco/stackage-server/issues/299\">" <>
|
||||||
$(widgetFile "package-list")
|
"github:fpco/stackage-server#299</a>")))
|
||||||
where
|
-- track "Handler.PackageList.getPackageListR" $
|
||||||
strip x = fromMaybe x (stripSuffix "." x)
|
-- defaultLayout $ do
|
||||||
makePackageLink snapName pli =
|
-- cacheSeconds $ 60 * 60 * 2
|
||||||
SnapshotR snapName $ StackageSdistR $ PNVNameVersion (pliName pli) (pliVersion pli)
|
-- 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)
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import RIO.Time (FormatTime)
|
|||||||
import Import
|
import Import
|
||||||
import Stackage.Database
|
import Stackage.Database
|
||||||
import Stackage.Snapshot.Diff
|
import Stackage.Snapshot.Diff
|
||||||
|
import Text.Blaze
|
||||||
|
|
||||||
getStackageHomeR :: SnapName -> Handler TypedContent
|
getStackageHomeR :: SnapName -> Handler TypedContent
|
||||||
getStackageHomeR name =
|
getStackageHomeR name =
|
||||||
@ -155,12 +156,19 @@ getSnapshotPackagesR name = track "Handler.StackageHome.getSnapshotPackagesR" $
|
|||||||
redirect $ SnapshotR name StackageHomeR
|
redirect $ SnapshotR name StackageHomeR
|
||||||
|
|
||||||
getDocsR :: SnapName -> Handler Html
|
getDocsR :: SnapName -> Handler Html
|
||||||
getDocsR name = track "Handler.StackageHome.getDocsR" $ do
|
getDocsR _name = do
|
||||||
cacheSeconds $ 60 * 60 * 48
|
sendResponseStatus status404 =<<
|
||||||
Entity sid _ <- lookupSnapshot name >>= maybe notFound return
|
defaultLayout
|
||||||
mlis <- getSnapshotModules sid
|
(toWidget (preEscapedText
|
||||||
render <- getUrlRender
|
("Page has been disabled, see: " <>
|
||||||
let mliUrl mli = render $ haddockUrl name mli
|
"<a href=\"https://github.com/fpco/stackage-server/issues/300\">" <>
|
||||||
defaultLayout $ do
|
"github:fpco/stackage-server#300</a>")))
|
||||||
setTitle $ toHtml $ "Module list for " ++ toPathPiece name
|
-- track "Handler.StackageHome.getDocsR" $ do
|
||||||
$(widgetFile "doc-list")
|
-- 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")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user