summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-11-21 18:32:02 +0000
committertechknowlogick <techknowlogick@gitea.io>2019-11-21 13:32:02 -0500
commitcbaa1de9ec8ab1baa49357b660fab16a68097c84 (patch)
tree5f481d73c95ae24b91e7bb03abaa5cf921f806b5 /cmd
parentd7ac9727bb5046118915cbb26b2dac1b7b27c9d4 (diff)
downloadgitea-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.go3
-rw-r--r--cmd/web_graceful.go6
-rw-r--r--cmd/web_windows.go37
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() {
-}