Simple, hacky approach to ensure only one cabal-loader-stackage runs

This commit is contained in:
Michael Snoyman 2015-04-03 09:14:54 +03:00
parent d6b9c8c04e
commit d98d3866ec
2 changed files with 6 additions and 0 deletions

View File

@ -16,6 +16,7 @@ import Data.Hackage.DeprecationInfo
import Data.Unpacking (newDocUnpacker, createHoogleDatabases) import Data.Unpacking (newDocUnpacker, createHoogleDatabases)
import Data.WebsiteContent import Data.WebsiteContent
import Data.Slug (SnapSlug (..), safeMakeSlug, HasGenIO) import Data.Slug (SnapSlug (..), safeMakeSlug, HasGenIO)
import Data.Streaming.Network (bindPortTCP)
import Data.Time (diffUTCTime) import Data.Time (diffUTCTime)
import qualified Database.Esqueleto as E import qualified Database.Esqueleto as E
import qualified Database.Persist import qualified Database.Persist
@ -249,6 +250,10 @@ instance HasHttpManager CabalLoaderEnv where
cabalLoaderMain :: IO () cabalLoaderMain :: IO ()
cabalLoaderMain = do cabalLoaderMain = do
-- Hacky approach instead of PID files
void $ catchIO (bindPortTCP 17834 "127.0.0.1") $ \_ ->
error $ "cabal loader process already running, exiting"
conf <- fromArgs parseExtra conf <- fromArgs parseExtra
dbconf <- getDbConf conf dbconf <- getDbConf conf
pool <- Database.Persist.createPoolConfig dbconf pool <- Database.Persist.createPoolConfig dbconf

View File

@ -166,6 +166,7 @@ library
, auto-update , auto-update
, stackage-types , stackage-types
, yesod-sitemap , yesod-sitemap
, streaming-commons
executable stackage-server executable stackage-server
if flag(library-only) if flag(library-only)