Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cli/gitaly/serve.go')
-rw-r--r--internal/cli/gitaly/serve.go68
1 files changed, 51 insertions, 17 deletions
diff --git a/internal/cli/gitaly/serve.go b/internal/cli/gitaly/serve.go
index aec987c81..9f0c96c92 100644
--- a/internal/cli/gitaly/serve.go
+++ b/internal/cli/gitaly/serve.go
@@ -3,6 +3,7 @@ package gitaly
import (
"context"
"fmt"
+ "net/http"
"os"
"runtime/debug"
"time"
@@ -307,6 +308,25 @@ func run(cfg config.Cfg) error {
concurrencyTracker := hook.NewConcurrencyTracker()
prometheus.MustRegister(concurrencyTracker)
+ createServiceDependencies := func() *service.Dependencies {
+ return &service.Dependencies{
+ Cfg: cfg,
+ GitalyHookManager: hookManager,
+ TransactionManager: transactionManager,
+ StorageLocator: locator,
+ ClientPool: conns,
+ GitCmdFactory: gitCmdFactory,
+ CatfileCache: catfileCache,
+ DiskCache: diskCache,
+ PackObjectsCache: streamCache,
+ PackObjectsConcurrencyTracker: concurrencyTracker,
+ PackObjectsLimiter: packObjectsLimiter,
+ Git2goExecutor: git2goExecutor,
+ UpdaterWithHooks: updaterWithHooks,
+ HousekeepingManager: housekeepingManager,
+ }
+ }
+
for _, c := range []starter.Config{
{Name: starter.Unix, Addr: cfg.SocketPath, HandoverOnUpgrade: true},
{Name: starter.Unix, Addr: cfg.InternalSocketPath(), HandoverOnUpgrade: false},
@@ -330,25 +350,39 @@ func run(cfg config.Cfg) error {
}
}
- setup.RegisterAll(srv, &service.Dependencies{
- Cfg: cfg,
- GitalyHookManager: hookManager,
- TransactionManager: transactionManager,
- StorageLocator: locator,
- ClientPool: conns,
- GitCmdFactory: gitCmdFactory,
- CatfileCache: catfileCache,
- DiskCache: diskCache,
- PackObjectsCache: streamCache,
- PackObjectsConcurrencyTracker: concurrencyTracker,
- PackObjectsLimiter: packObjectsLimiter,
- Git2goExecutor: git2goExecutor,
- UpdaterWithHooks: updaterWithHooks,
- HousekeepingManager: housekeepingManager,
- })
+ setup.RegisterAll(srv, createServiceDependencies())
b.RegisterStarter(starter.New(c, srv))
}
+ if addr := cfg.PackServerListenAddr; addr != "" {
+ for _, c := range []starter.Config{
+ // TODO: Handle TLS later
+ {Name: starter.TCP, Addr: cfg.PackServerListenAddr, HandoverOnUpgrade: true},
+ // TODO: Add internal socket here
+ } {
+ if c.Addr == "" {
+ continue
+ }
+
+ var srv *grpc.Server
+ var httpSrv *http.Server
+ if c.HandoverOnUpgrade {
+ srv, httpSrv, err = gitalyServerFactory.CreateHTTP2External(c.IsSecure())
+ if err != nil {
+ return fmt.Errorf("create external gRPC server: %w", err)
+ }
+ } else {
+ srv, httpSrv, err = gitalyServerFactory.CreateHTTP2Internal()
+ if err != nil {
+ return fmt.Errorf("create internal gRPC server: %w", err)
+ }
+ }
+
+ setup.RegisterPackDependencies(srv, createServiceDependencies())
+ b.RegisterStarter(starter.New(c, httpSrv))
+ }
+ }
+
if addr := cfg.PrometheusListenAddr; addr != "" {
b.RegisterStarter(func(listen bootstrap.ListenFunc, _ chan<- error, _ *prometheus.CounterVec) error {
l, err := listen("tcp", addr)
@@ -406,5 +440,5 @@ func run(cfg config.Cfg) error {
gracefulStopTicker := helper.NewTimerTicker(cfg.GracefulRestartTimeout.Duration())
defer gracefulStopTicker.Stop()
- return b.Wait(gracefulStopTicker, gitalyServerFactory.GracefulStop)
+ return b.Wait(gracefulStopTicker, func() { gitalyServerFactory.GracefulStop() })
}