From cbaa1de9ec8ab1baa49357b660fab16a68097c84 Mon Sep 17 00:00:00 2001 From: zeripath Date: Thu, 21 Nov 2019 18:32:02 +0000 Subject: 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 --- cmd/web.go | 3 ++- cmd/web_graceful.go | 6 ++---- cmd/web_windows.go | 37 ------------------------------------- 3 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 cmd/web_windows.go (limited to 'cmd') 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() { -} -- cgit v1.2.3