service graceful shutdown

This commit is contained in:
ginuerzh
2025-01-08 23:12:06 +08:00
parent eef3bd7f25
commit 489a762811
4 changed files with 33 additions and 9 deletions
+12 -5
View File
@@ -12,6 +12,7 @@ import (
"crypto/x509/pkix"
"encoding/pem"
"math/big"
"sync/atomic"
"time"
"github.com/go-gost/core/logger"
@@ -20,14 +21,19 @@ import (
)
var (
defaultTLSConfig *tls.Config
defaultTLSConfig atomic.Value
)
func DefaultTLSConfig() *tls.Config {
return defaultTLSConfig
v, _ := defaultTLSConfig.Load().(*tls.Config)
return v
}
func BuildDefaultTLSConfig(cfg *config.TLSConfig) {
func SetDefaultTLSConfig(cfg *tls.Config) {
defaultTLSConfig.Store(cfg)
}
func BuildDefaultTLSConfig(cfg *config.TLSConfig) (*tls.Config, error) {
log := logger.Default()
if cfg == nil {
@@ -43,7 +49,7 @@ func BuildDefaultTLSConfig(cfg *config.TLSConfig) {
// generate random self-signed certificate.
cert, err := genCertificate(cfg.Validity, cfg.Organization, cfg.CommonName)
if err != nil {
log.Fatal(err)
return nil, err
}
tlsConfig = &tls.Config{
Certificates: []tls.Certificate{cert},
@@ -52,7 +58,8 @@ func BuildDefaultTLSConfig(cfg *config.TLSConfig) {
} else {
log.Debug("load global TLS certificate files OK")
}
defaultTLSConfig = tlsConfig
return tlsConfig, nil
}
func genCertificate(validity time.Duration, org string, cn string) (cert tls.Certificate, err error) {
+6 -1
View File
@@ -84,9 +84,14 @@ func NewLogger(opts ...Option) logger.Logger {
log.SetLevel(logrus.InfoLevel)
}
return &logrusLogger{
l := &logrusLogger{
logger: logrus.NewEntry(log),
}
if options.Name != "" {
l.logger = l.logger.WithField("logger", options.Name)
}
return l
}
// WithFields adds new fields to log.
+2 -2
View File
@@ -3,7 +3,7 @@ package recorder
import (
"bytes"
"context"
"fmt"
"errors"
"net/http"
"strings"
"time"
@@ -80,7 +80,7 @@ func (r *httpRecorder) Record(ctx context.Context, b []byte, opts ...recorder.Re
defer resp.Body.Close()
if resp.StatusCode >= http.StatusBadRequest {
return fmt.Errorf(resp.Status)
return errors.New(resp.Status)
}
return nil
+12
View File
@@ -2,11 +2,13 @@ package service
import (
"context"
"errors"
"fmt"
"io"
"net"
"os/exec"
"strings"
"sync"
"time"
"github.com/go-gost/core/admission"
@@ -157,6 +159,9 @@ func (s *defaultService) Serve() error {
defer v.Dec()
}
var wg sync.WaitGroup
defer wg.Wait()
var tempDelay time.Duration
for {
conn, e := s.listener.Accept()
@@ -179,7 +184,10 @@ func (s *defaultService) Serve() error {
continue
}
s.setState(StateClosed)
if !errors.Is(e, net.ErrClosed) {
s.options.logger.Errorf("accept: %v", e)
}
return e
}
@@ -224,7 +232,11 @@ func (s *defaultService) Serve() error {
continue
}
wg.Add(1)
go func() {
defer wg.Done()
if v := xmetrics.GetCounter(xmetrics.MetricServiceRequestsCounter,
metrics.Labels{"service": s.name, "client": clientIP}); v != nil {
v.Inc()