diff options
author | zeripath <art27@cantab.net> | 2019-11-21 18:32:02 +0000 |
---|---|---|
committer | techknowlogick <techknowlogick@gitea.io> | 2019-11-21 13:32:02 -0500 |
commit | cbaa1de9ec8ab1baa49357b660fab16a68097c84 (patch) | |
tree | 5f481d73c95ae24b91e7bb03abaa5cf921f806b5 /cmd | |
parent | d7ac9727bb5046118915cbb26b2dac1b7b27c9d4 (diff) | |
download | gitea-cbaa1de9ec8ab1baa49357b660fab16a68097c84.tar.gz gitea-cbaa1de9ec8ab1baa49357b660fab16a68097c84.zip |
Add Graceful shutdown for Windows and hooks for shutdown of goroutines (#8964)
* Graceful Shutdown for windows and others
Restructures modules/graceful, adding shutdown for windows, removing and
replacing the old minwinsvc code.
Creates a new waitGroup - terminate which allows for goroutines to
finish up after the shutdown of the servers.
Shutdown and terminate hooks are added for goroutines.
* Remove unused functions - these can be added in a different PR
* Add startup timeout functionality
* Document STARTUP_TIMEOUT
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/web.go | 3 | ||||
-rw-r--r-- | cmd/web_graceful.go | 6 | ||||
-rw-r--r-- | cmd/web_windows.go | 37 |
3 files changed, 4 insertions, 42 deletions
diff --git a/cmd/web.go b/cmd/web.go index 3ca4041a7d..22a7f9082d 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -227,7 +227,8 @@ func runWeb(ctx *cli.Context) error { log.Critical("Failed to start server: %v", err) } log.Info("HTTP Listener: %s Closed", listenAddr) - graceful.WaitForServers() + graceful.Manager.WaitForServers() + graceful.Manager.WaitForTerminate() log.Close() return nil } diff --git a/cmd/web_graceful.go b/cmd/web_graceful.go index 07b5a964c5..a37f669d09 100644 --- a/cmd/web_graceful.go +++ b/cmd/web_graceful.go @@ -1,5 +1,3 @@ -// +build !windows - // Copyright 2016 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. @@ -27,11 +25,11 @@ func runHTTPSWithTLSConfig(listenAddr string, tlsConfig *tls.Config, m http.Hand // NoHTTPRedirector tells our cleanup routine that we will not be using a fallback http redirector func NoHTTPRedirector() { - graceful.InformCleanup() + graceful.Manager.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.InformCleanup() + graceful.Manager.InformCleanup() } diff --git a/cmd/web_windows.go b/cmd/web_windows.go deleted file mode 100644 index cdd2cc513b..0000000000 --- a/cmd/web_windows.go +++ /dev/null @@ -1,37 +0,0 @@ -// +build windows - -// Copyright 2016 The Gitea Authors. All rights reserved. -// Use of this source code is governed by a MIT-style -// license that can be found in the LICENSE file. - -package cmd - -import ( - "crypto/tls" - "net/http" -) - -func runHTTP(listenAddr string, m http.Handler) error { - return http.ListenAndServe(listenAddr, m) -} - -func runHTTPS(listenAddr, certFile, keyFile string, m http.Handler) error { - return http.ListenAndServeTLS(listenAddr, certFile, keyFile, m) -} - -func runHTTPSWithTLSConfig(listenAddr string, tlsConfig *tls.Config, m http.Handler) error { - server := &http.Server{ - Addr: listenAddr, - Handler: m, - TLSConfig: tlsConfig, - } - return server.ListenAndServeTLS("", "") -} - -// NoHTTPRedirector is a no-op on Windows -func NoHTTPRedirector() { -} - -// NoMainListener is a no-op on Windows -func NoMainListener() { -} |