aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-12-15 09:51:28 +0000
committerGitHub <noreply@github.com>2019-12-15 09:51:28 +0000
commite3c3b33ea7a5a223e22688c3f0eb2d3dab9f991c (patch)
tree21dcdc6ec138a502590550672ac0a11f364935ea /cmd
parent8bea92c3dc162e24f6dcc2902dfed5ab94576826 (diff)
downloadgitea-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.go4
-rw-r--r--cmd/web.go10
-rw-r--r--cmd/web_graceful.go4
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 {