From 065347b08039b55c2e9d73bf555a869f09edebab Mon Sep 17 00:00:00 2001 From: Quang-Minh Nguyen Date: Thu, 13 Apr 2023 11:01:52 +0700 Subject: Remove limithandler.Limiter interface In the prior commit, limiterhandler.RateLimiter was removed. That limiter implements limiterhandler.Limiter interface. After the removeal, the interface, this interface is only implemented by the concurrency limiter. This commit removes this interface to simplify the abstraction of this module. --- internal/gitaly/service/dependencies.go | 4 ++-- internal/gitaly/service/hook/server.go | 4 ++-- internal/middleware/limithandler/concurrency_limiter.go | 2 +- internal/middleware/limithandler/middleware.go | 7 +------ internal/testhelper/testserver/gitaly.go | 2 +- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/internal/gitaly/service/dependencies.go b/internal/gitaly/service/dependencies.go index b2c31cab2..c08da3e83 100644 --- a/internal/gitaly/service/dependencies.go +++ b/internal/gitaly/service/dependencies.go @@ -32,7 +32,7 @@ type Dependencies struct { DiskCache cache.Cache PackObjectsCache streamcache.Cache PackObjectsConcurrencyTracker *gitalyhook.ConcurrencyTracker - PackObjectsLimiter limithandler.Limiter + PackObjectsLimiter *limithandler.ConcurrencyLimiter LimitHandler *limithandler.LimiterMiddleware Git2goExecutor *git2go.Executor UpdaterWithHooks *updateref.UpdaterWithHooks @@ -120,6 +120,6 @@ func (dc *Dependencies) GetHousekeepingManager() housekeeping.Manager { } // GetPackObjectsLimiter returns the pack-objects limiter. -func (dc *Dependencies) GetPackObjectsLimiter() limithandler.Limiter { +func (dc *Dependencies) GetPackObjectsLimiter() *limithandler.ConcurrencyLimiter { return dc.PackObjectsLimiter } diff --git a/internal/gitaly/service/hook/server.go b/internal/gitaly/service/hook/server.go index d25279721..5fc8249ae 100644 --- a/internal/gitaly/service/hook/server.go +++ b/internal/gitaly/service/hook/server.go @@ -17,7 +17,7 @@ type server struct { gitCmdFactory git.CommandFactory packObjectsCache streamcache.Cache concurrencyTracker *gitalyhook.ConcurrencyTracker - packObjectsLimiter limithandler.Limiter + packObjectsLimiter *limithandler.ConcurrencyLimiter runPackObjectsFn func( context.Context, git.CommandFactory, @@ -36,7 +36,7 @@ func NewServer( gitCmdFactory git.CommandFactory, packObjectsCache streamcache.Cache, concurrencyTracker *gitalyhook.ConcurrencyTracker, - packObjectsLimiter limithandler.Limiter, + packObjectsLimiter *limithandler.ConcurrencyLimiter, ) gitalypb.HookServiceServer { srv := &server{ manager: manager, diff --git a/internal/middleware/limithandler/concurrency_limiter.go b/internal/middleware/limithandler/concurrency_limiter.go index d200ac8ae..5a050592a 100644 --- a/internal/middleware/limithandler/concurrency_limiter.go +++ b/internal/middleware/limithandler/concurrency_limiter.go @@ -295,7 +295,7 @@ func WithConcurrencyLimiters(cfg config.Cfg, middleware *LimiterMiddleware) { queuedMetric.Collect(metrics) } - result := make(map[string]Limiter) + result := make(map[string]*ConcurrencyLimiter) for _, limit := range cfg.Concurrency { limit := limit diff --git a/internal/middleware/limithandler/middleware.go b/internal/middleware/limithandler/middleware.go index 81e91af9f..11dc51351 100644 --- a/internal/middleware/limithandler/middleware.go +++ b/internal/middleware/limithandler/middleware.go @@ -28,17 +28,12 @@ func LimitConcurrencyByRepo(ctx context.Context) string { return "" } -// Limiter limits incoming requests -type Limiter interface { - Limit(ctx context.Context, lockKey string, f LimitedFunc) (interface{}, error) -} - // LimitedFunc represents a function that will be limited type LimitedFunc func() (resp interface{}, err error) // LimiterMiddleware contains rate limiter state type LimiterMiddleware struct { - methodLimiters map[string]Limiter + methodLimiters map[string]*ConcurrencyLimiter getLockKey GetLockKey requestsDroppedMetric *prometheus.CounterVec collect func(metrics chan<- prometheus.Metric) diff --git a/internal/testhelper/testserver/gitaly.go b/internal/testhelper/testserver/gitaly.go index b74677572..64a59a090 100644 --- a/internal/testhelper/testserver/gitaly.go +++ b/internal/testhelper/testserver/gitaly.go @@ -262,7 +262,7 @@ type gitalyServerDeps struct { diskCache cache.Cache packObjectsCache streamcache.Cache packObjectsConcurrencyTracker *hook.ConcurrencyTracker - packObjectsLimiter limithandler.Limiter + packObjectsLimiter *limithandler.ConcurrencyLimiter limitHandler *limithandler.LimiterMiddleware git2goExecutor *git2go.Executor updaterWithHooks *updateref.UpdaterWithHooks -- cgit v1.2.3