这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ jobs:
# build the server binary, and package into docker image
build_server:
docker:
- image: hasura/graphql-engine-server-builder:20190415-1
- image: hasura/graphql-engine-server-builder:20190507-1
working_directory: ~/graphql-engine
steps:
- attach_workspace:
Expand Down Expand Up @@ -223,7 +223,7 @@ jobs:
environment:
PG_VERSION: "11_1"
docker:
- image: hasura/graphql-engine-server-builder:20190415-1
- image: hasura/graphql-engine-server-builder:20190507-1
# TODO: change this to circleci postgis when they have one for pg 11
- image: mdillon/postgis:11-alpine
<<: *test_pg_env
Expand All @@ -233,7 +233,7 @@ jobs:
environment:
PG_VERSION: "10_6"
docker:
- image: hasura/graphql-engine-server-builder:20190415-1
- image: hasura/graphql-engine-server-builder:20190507-1
- image: circleci/postgres:10.6-alpine-postgis
<<: *test_pg_env

Expand All @@ -242,7 +242,7 @@ jobs:
environment:
PG_VERSION: "9_6"
docker:
- image: hasura/graphql-engine-server-builder:20190415-1
- image: hasura/graphql-engine-server-builder:20190507-1
- image: circleci/postgres:9.6-alpine-postgis
<<: *test_pg_env

Expand All @@ -251,7 +251,7 @@ jobs:
environment:
PG_VERSION: "9_5"
docker:
- image: hasura/graphql-engine-server-builder:20190415-1
- image: hasura/graphql-engine-server-builder:20190507-1
- image: circleci/postgres:9.5-alpine-postgis
<<: *test_pg_env

Expand Down
2 changes: 1 addition & 1 deletion .circleci/server-builder.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
FROM debian:stretch-20190228-slim

ARG docker_ver="17.09.0-ce"
ARG resolver="lts-13.12"
ARG resolver="lts-13.20"
ARG stack_ver="1.9.3"
ARG postgres_ver="11"

Expand Down
1 change: 1 addition & 0 deletions server/graphql-engine.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ library
, Hasura.RQL.Types.SchemaCache
, Hasura.RQL.Types.SchemaCacheTypes
, Hasura.RQL.Types.Common
, Hasura.RQL.Types.Catalog
, Hasura.RQL.Types.BoolExp
, Hasura.RQL.Types.Permission
, Hasura.RQL.Types.Error
Expand Down
52 changes: 30 additions & 22 deletions server/src-exec/Main.hs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{-# LANGUAGE TypeApplications #-}
module Main where

import Migrate (migrateCatalog)
Expand All @@ -16,6 +17,7 @@ import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Lazy.Char8 as BLC
import qualified Data.Text as T
import qualified Data.Time.Clock as Clock
import qualified Data.Yaml as Y
import qualified Network.HTTP.Client as HTTP
import qualified Network.HTTP.Client.TLS as HTTP
Expand Down Expand Up @@ -122,6 +124,8 @@ main = do
mJwtSecret mUnAuthRole corsCfg enableConsole
enableTelemetry strfyNum enabledAPIs lqOpts) -> do
let sqlGenCtx = SQLGenCtx strfyNum

initTime <- Clock.getCurrentTime
-- log serve options
unLogger logger $ serveOptsToLog so
hloggerCtx <- mkLoggerCtx $ defaultLoggerSettings False
Expand All @@ -138,10 +142,7 @@ main = do
pool <- Q.initPGPool ci cp pgLogger

-- safe init catalog
initRes <- initialise sqlGenCtx logger ci httpManager

-- prepare event triggers data
prepareEvents logger ci
initRes <- initialise pool sqlGenCtx logger httpManager

(app, cacheRef, cacheInitTime) <-
mkWaiApp isoL loggerCtx sqlGenCtx pool ci httpManager am
Expand All @@ -161,8 +162,9 @@ main = do
evFetchMilliSec <- getFromEnv defaultFetchIntervalMilliSec "HASURA_GRAPHQL_EVENTS_FETCH_INTERVAL"
logEnvHeaders <- getFromEnv False "LOG_HEADERS_FROM_ENV"

-- prepare event triggers data
prepareEvents pool logger
eventEngineCtx <- atomically $ initEventEngineCtx maxEvThrds evFetchMilliSec

let scRef = _scrCache cacheRef
unLogger logger $
mkGenericStrLog "event_triggers" "starting workers"
Expand All @@ -177,36 +179,42 @@ main = do
unLogger logger $ mkGenericStrLog "telemetry" telemetryNotice
void $ C.forkIO $ runTelemetry logger httpManager scRef initRes

finishTime <- Clock.getCurrentTime
let apiInitTime = realToFrac $ Clock.diffUTCTime finishTime initTime
unLogger logger $
mkGenericStrLog "server" "starting API server"
mkGenericStrLog "server" $
"starting API server, took " <> show @Double apiInitTime <> "s"
Warp.runSettings warpSettings app

HCExport -> do
ci <- procConnInfo rci
res <- runTx pgLogger ci fetchMetadata
res <- runTx' pgLogger ci fetchMetadata
either printErrJExit printJSON res

HCClean -> do
ci <- procConnInfo rci
res <- runTx pgLogger ci cleanCatalog
res <- runTx' pgLogger ci cleanCatalog
either printErrJExit (const cleanSuccess) res

HCExecute -> do
queryBs <- BL.getContents
ci <- procConnInfo rci
let sqlGenCtx = SQLGenCtx False
res <- runAsAdmin sqlGenCtx pgLogger ci httpManager $ execQuery queryBs
pool <- getMinimalPool pgLogger ci
res <- runAsAdmin pool sqlGenCtx httpManager $ execQuery queryBs
either printErrJExit BLC.putStrLn res

HCVersion -> putStrLn $ "Hasura GraphQL Engine: " ++ T.unpack currentVersion
where

runTx pgLogger ci tx = do
pool <- getMinimalPool pgLogger ci
runTx pool tx =
runExceptT $ Q.runTx pool (Q.Serializable, Nothing) tx

runAsAdmin sqlGenCtx pgLogger ci httpManager m = do
runTx' pgLogger ci tx = do
pool <- getMinimalPool pgLogger ci
runExceptT $ Q.runTx pool (Q.Serializable, Nothing) tx

runAsAdmin pool sqlGenCtx httpManager m = do
res <- runExceptT $ peelRun emptySchemaCache adminUserInfo
httpManager sqlGenCtx (PGExecCtx pool Q.Serializable) m
return $ fmap fst res
Expand All @@ -219,28 +227,28 @@ main = do
let connParams = Q.defaultConnParams { Q.cpConns = 1 }
Q.initPGPool ci connParams pgLogger

initialise sqlGenCtx (Logger logger) ci httpMgr = do
initialise pool sqlGenCtx (Logger logger) httpMgr = do
currentTime <- getCurrentTime
let pgLogger = mkPGLogger $ Logger logger
-- initialise the catalog
initRes <- runAsAdmin sqlGenCtx pgLogger ci httpMgr $ initCatalogSafe currentTime
initRes <- runAsAdmin pool sqlGenCtx httpMgr $
initCatalogSafe currentTime
either printErrJExit (logger . mkGenericStrLog "db_init") initRes

-- migrate catalog if necessary
migRes <- runAsAdmin sqlGenCtx pgLogger ci httpMgr $ migrateCatalog currentTime
migRes <- runAsAdmin pool sqlGenCtx httpMgr $
migrateCatalog currentTime
either printErrJExit (logger . mkGenericStrLog "db_migrate") migRes

-- generate and retrieve uuids
getUniqIds pgLogger ci
getUniqIds pool

prepareEvents (Logger logger) ci = do
let pgLogger = mkPGLogger $ Logger logger
prepareEvents pool (Logger logger) = do
logger $ mkGenericStrLog "event_triggers" "preparing data"
res <- runTx pgLogger ci unlockAllEvents
res <- runTx pool unlockAllEvents
either printErrJExit return res

getUniqIds pgLogger ci = do
eDbId <- runTx pgLogger ci getDbId
getUniqIds pool = do
eDbId <- runTx pool getDbId
dbId <- either printErrJExit return eDbId
fp <- liftIO generateFingerprint
return (dbId, fp)
Expand Down
20 changes: 15 additions & 5 deletions server/src-exec/Migrate.hs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import qualified Data.Yaml.TH as Y
import qualified Database.PG.Query as Q

curCatalogVer :: T.Text
curCatalogVer = "13"
curCatalogVer = "14"

migrateMetadata
:: ( MonadTx m
Expand Down Expand Up @@ -272,6 +272,13 @@ from12To13 = liftTx $ do
$(Q.sqlFromFile "src-rsr/migrate_from_12_to_13.sql")
return ()

from13To14 :: MonadTx m => m ()
from13To14 = liftTx $ do
-- Migrate database
Q.Discard () <- Q.multiQE defaultTxErrorHandler
$(Q.sqlFromFile "src-rsr/migrate_from_13_to_14.sql")
return ()

migrateCatalog
:: ( MonadTx m
, CacheRWM m
Expand All @@ -295,13 +302,16 @@ migrateCatalog migrationTime = do
| preVer == "7" -> from7ToCurrent
| preVer == "8" -> from8ToCurrent
| preVer == "9" -> from9ToCurrent
| preVer == "10" -> from10ToCurrent
| preVer == "11" -> from11ToCurrent
| preVer == "12" -> from12ToCurrent
| preVer == "10" -> from10ToCurrent
| preVer == "11" -> from11ToCurrent
| preVer == "12" -> from12ToCurrent
| preVer == "13" -> from13ToCurrent
| otherwise -> throw400 NotSupported $
"unsupported version : " <> preVer
where
from12ToCurrent = from12To13 >> postMigrate
from13ToCurrent = from13To14 >> postMigrate

from12ToCurrent = from12To13 >> from13ToCurrent

from11ToCurrent = from11To12 >> from12ToCurrent

Expand Down
Loading