mirror of
https://github.com/project-zot/zot.git
synced 2026-06-15 20:07:55 +08:00
Add wait group for graceful shutdown, closes #302
Signed-off-by: Petu Eusebiu <peusebiu@cisco.com>
This commit is contained in:
committed by
Ramkumar Chinchani
parent
f011192615
commit
627cb97ef1
+13
-1
@@ -1,12 +1,14 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
goSync "sync"
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/handlers"
|
||||
@@ -34,6 +36,7 @@ type Controller struct {
|
||||
Audit *log.Logger
|
||||
Server *http.Server
|
||||
Metrics monitoring.MetricServer
|
||||
wgShutDown *goSync.WaitGroup // use it to gracefully shutdown goroutines
|
||||
}
|
||||
|
||||
func NewController(config *config.Config) *Controller {
|
||||
@@ -43,6 +46,7 @@ func NewController(config *config.Config) *Controller {
|
||||
|
||||
controller.Config = config
|
||||
controller.Log = logger
|
||||
controller.wgShutDown = new(goSync.WaitGroup)
|
||||
|
||||
if config.Log.Audit != "" {
|
||||
audit := log.NewAuditLogger(config.Log.Level, config.Log.Audit)
|
||||
@@ -195,7 +199,7 @@ func (c *Controller) Run() error {
|
||||
|
||||
// Enable extensions if extension config is provided
|
||||
if c.Config.Extensions != nil && c.Config.Extensions.Sync != nil {
|
||||
ext.EnableSyncExtension(c.Config, c.Log, c.StoreController)
|
||||
ext.EnableSyncExtension(c.Config, c.wgShutDown, c.StoreController, c.Log)
|
||||
}
|
||||
|
||||
monitoring.SetServerInfo(c.Metrics, c.Config.Commit, c.Config.BinaryType, c.Config.GoVersion, c.Config.Version)
|
||||
@@ -247,3 +251,11 @@ func (c *Controller) Run() error {
|
||||
|
||||
return server.Serve(l)
|
||||
}
|
||||
|
||||
func (c *Controller) Shutdown() {
|
||||
// wait gracefully
|
||||
c.wgShutDown.Wait()
|
||||
|
||||
ctx := context.Background()
|
||||
_ = c.Server.Shutdown(ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user