diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-02-18 12:45:46 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-02-18 12:45:46 +0300 |
commit | a7b3560714b4d9cc4ab32dffcd1f74a284b93580 (patch) | |
tree | 7452bd5c3545c2fa67a28aa013835fb4fa071baf /app/services/concerns | |
parent | ee9173579ae56a3dbfe5afe9f9410c65bb327ca7 (diff) |
Add latest changes from gitlab-org/gitlab@14-8-stable-eev14.8.0-rc42
Diffstat (limited to 'app/services/concerns')
-rw-r--r-- | app/services/concerns/members/bulk_create_users.rb | 1 | ||||
-rw-r--r-- | app/services/concerns/rate_limited_service.rb | 19 |
2 files changed, 8 insertions, 12 deletions
diff --git a/app/services/concerns/members/bulk_create_users.rb b/app/services/concerns/members/bulk_create_users.rb index b98917f1396..9cfef96311e 100644 --- a/app/services/concerns/members/bulk_create_users.rb +++ b/app/services/concerns/members/bulk_create_users.rb @@ -48,6 +48,7 @@ module Members end if user_ids.present? + # we should handle the idea of existing members where users are passed as users - https://gitlab.com/gitlab-org/gitlab/-/issues/352617 # the below will automatically discard invalid user_ids users.concat(User.id_in(user_ids)) # helps not have to perform another query per user id to see if the member exists later on when fetching diff --git a/app/services/concerns/rate_limited_service.rb b/app/services/concerns/rate_limited_service.rb index 87cba7814fe..c8dc60355cf 100644 --- a/app/services/concerns/rate_limited_service.rb +++ b/app/services/concerns/rate_limited_service.rb @@ -17,7 +17,7 @@ module RateLimitedService end def log_request(request, current_user) - rate_limiter.class.log_request(request, "#{key}_request_limit".to_sym, current_user) + rate_limiter.log_request(request, "#{key}_request_limit".to_sym, current_user) end private @@ -26,20 +26,19 @@ module RateLimitedService end class RateLimiterScopedAndKeyed - attr_reader :key, :opts, :rate_limiter_klass + attr_reader :key, :opts, :rate_limiter - def initialize(key:, opts:, rate_limiter_klass:) + def initialize(key:, opts:, rate_limiter:) @key = key @opts = opts - @rate_limiter_klass = rate_limiter_klass + @rate_limiter = rate_limiter end def rate_limit!(service) evaluated_scope = evaluated_scope_for(service) return if feature_flag_disabled?(evaluated_scope[:project]) - rate_limiter = new_rate_limiter(evaluated_scope) - if rate_limiter.throttled? + if rate_limiter.throttled?(key, **opts.merge(scope: evaluated_scope.values, users_allowlist: users_allowlist)) raise RateLimitedError.new(key: key, rate_limiter: rate_limiter), _('This endpoint has been requested too many times. Try again later.') end end @@ -59,20 +58,16 @@ module RateLimitedService def feature_flag_disabled?(project) Feature.disabled?("rate_limited_service_#{key}", project, default_enabled: :yaml) end - - def new_rate_limiter(evaluated_scope) - rate_limiter_klass.new(key, **opts.merge(scope: evaluated_scope.values, users_allowlist: users_allowlist)) - end end prepended do attr_accessor :rate_limiter_bypassed cattr_accessor :rate_limiter_scoped_and_keyed - def self.rate_limit(key:, opts:, rate_limiter_klass: ::Gitlab::ApplicationRateLimiter) + def self.rate_limit(key:, opts:, rate_limiter: ::Gitlab::ApplicationRateLimiter) self.rate_limiter_scoped_and_keyed = RateLimiterScopedAndKeyed.new(key: key, opts: opts, - rate_limiter_klass: rate_limiter_klass) + rate_limiter: rate_limiter) end end |