MCPcopy Create free account
hub / github.com/ContentSquare/chproxy / checkTokenFreeRateLimiters

Method checkTokenFreeRateLimiters

scope.go:250–275  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

248}
249
250func (s *scope) checkTokenFreeRateLimiters() error {
251 var err error
252
253 uRPM := s.user.rateLimiter.inc()
254 cRPM := s.clusterUser.rateLimiter.inc()
255
256 // int32(xRPM) > 0 check is required to detect races when RPM
257 // is decremented on error below after per-minute zeroing
258 // in rateLimiter.run.
259 // These races become innocent with the given check.
260 if (s.user.reqPerMin > 0 && int32(uRPM) > 0 && uRPM > uint32(s.user.reqPerMin)) || s.user.reqPerMin < 0 {
261 err = fmt.Errorf("rate limit for user %q is exceeded: requests_per_minute limit: %d",
262 s.user.name, s.user.reqPerMin)
263 }
264 if (s.clusterUser.reqPerMin > 0 && int32(cRPM) > 0 && cRPM > uint32(s.clusterUser.reqPerMin)) || s.clusterUser.reqPerMin < 0 {
265 err = fmt.Errorf("rate limit for cluster user %q is exceeded: requests_per_minute limit: %d",
266 s.clusterUser.name, s.clusterUser.reqPerMin)
267 }
268
269 err2 := s.checkTokenFreePacketSizeRateLimiters()
270 if err2 != nil {
271 err = err2
272 }
273
274 return err
275}
276
277func (s *scope) checkTokenFreePacketSizeRateLimiters() error {
278 var err error

Callers 1

incMethod · 0.95

Calls 2

incMethod · 0.45

Tested by

no test coverage detected