diff options
author | zeripath <art27@cantab.net> | 2019-12-15 09:51:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-15 09:51:28 +0000 |
commit | e3c3b33ea7a5a223e22688c3f0eb2d3dab9f991c (patch) | |
tree | 21dcdc6ec138a502590550672ac0a11f364935ea /cmd | |
parent | 8bea92c3dc162e24f6dcc2902dfed5ab94576826 (diff) | |
download | gitea-e3c3b33ea7a5a223e22688c3f0eb2d3dab9f991c.tar.gz gitea-e3c3b33ea7a5a223e22688c3f0eb2d3dab9f991c.zip |
Graceful: Xorm, RepoIndexer, Cron and Others (#9282)
* Change graceful to use a singleton obtained through GetManager instead of a global.
* Graceful: Make TestPullRequests shutdownable
* Graceful: Make the cron tasks graceful
* Graceful: AddTestPullRequest run in graceful ctx
* Graceful: SyncMirrors shutdown
* Graceful: SetDefaultContext for Xorm to be HammerContext
* Avoid starting graceful for migrate commands and checkout
* Graceful: DeliverHooks now can be shutdown
* Fix multiple syncing errors in modules/sync/UniqueQueue & Make UniqueQueue closable
* Begin the process of making the repo indexer shutdown gracefully
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/migrate.go | 4 | ||||
-rw-r--r-- | cmd/web.go | 10 | ||||
-rw-r--r-- | cmd/web_graceful.go | 4 |
3 files changed, 12 insertions, 6 deletions
diff --git a/cmd/migrate.go b/cmd/migrate.go index 1fa1d09e25..2428925887 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -5,6 +5,8 @@ package cmd import ( + "context" + "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/migrations" "code.gitea.io/gitea/modules/log" @@ -32,7 +34,7 @@ func runMigrate(ctx *cli.Context) error { log.Trace("Log path: %s", setting.LogRootPath) setting.InitDBConfig() - if err := models.NewEngine(migrations.Migrate); err != nil { + if err := models.NewEngine(context.Background(), migrations.Migrate); err != nil { log.Fatal("Failed to initialize ORM engine: %v", err) return err } diff --git a/cmd/web.go b/cmd/web.go index cc00a32198..243b9a4108 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -5,6 +5,7 @@ package cmd import ( + "context" "fmt" "net/http" _ "net/http/pprof" // Used for debugging if enabled and a web server is running @@ -96,6 +97,10 @@ func runLetsEncryptFallbackHandler(w http.ResponseWriter, r *http.Request) { } func runWeb(ctx *cli.Context) error { + managerCtx, cancel := context.WithCancel(context.Background()) + graceful.InitManager(managerCtx) + defer cancel() + if os.Getppid() > 1 && len(os.Getenv("LISTEN_FDS")) > 0 { log.Info("Restarting Gitea on PID: %d from parent PID: %d", os.Getpid(), os.Getppid()) } else { @@ -108,7 +113,7 @@ func runWeb(ctx *cli.Context) error { } // Perform global initialization - routers.GlobalInit() + routers.GlobalInit(graceful.GetManager().HammerContext()) // Set up Macaron m := routes.NewMacaron() @@ -199,8 +204,7 @@ func runWeb(ctx *cli.Context) error { log.Critical("Failed to start server: %v", err) } log.Info("HTTP Listener: %s Closed", listenAddr) - graceful.Manager.WaitForServers() - graceful.Manager.WaitForTerminate() + <-graceful.GetManager().Done() log.Info("PID: %d Gitea Web Finished", os.Getpid()) log.Close() return nil diff --git a/cmd/web_graceful.go b/cmd/web_graceful.go index 5f8b85b390..f3c41766af 100644 --- a/cmd/web_graceful.go +++ b/cmd/web_graceful.go @@ -28,13 +28,13 @@ func runHTTPSWithTLSConfig(network, listenAddr string, tlsConfig *tls.Config, m // NoHTTPRedirector tells our cleanup routine that we will not be using a fallback http redirector func NoHTTPRedirector() { - graceful.Manager.InformCleanup() + graceful.GetManager().InformCleanup() } // NoMainListener tells our cleanup routine that we will not be using a possibly provided listener // for our main HTTP/HTTPS service func NoMainListener() { - graceful.Manager.InformCleanup() + graceful.GetManager().InformCleanup() } func runFCGI(network, listenAddr string, m http.Handler) error { |