You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement request-rate-limiting for WebDAV and Frontend
Added request-rate-limiting mechanism for WebDAV and Frontend doors to enhance resilience against abusive clients. Introduced configuration properties for managing request rates, error thresholds, and blocked clients.
A request-rate-limiting mechanism has been introduced for the Jetty-based WebDAV and Frontend doors to improve resilience against misbehaving or abusive clients. Previously, the system assumed well-behaved clients, which could allow even a single client to overwhelm the service. The new implementation adds a Jetty handler layer that tracks request outcomes and enforces both global and per-client rate limits using configurable thresholds backed by in-memory caches and rate limiting controls. Clients exceeding these limits receive HTTP 429 responses and may be temporarily blocked. Administrators can reset blocked clients via new admin commands. Several configuration properties have been added to control request rates, error thresholds, blocking windows, and limits on blocked clients, providing flexible protection against denial-of-service scenarios.
296
+
297
+
The request rate limiter is controlled through a set of configuration properties that define how aggressively clients are throttled or blocked, both globally and individually:
298
+
299
+
**webdav.limits.max-blocked-clients**
300
+
Sets the maximum number of clients that can be tracked as blocked at any given time. This prevents unbounded memory usage if many clients are misbehaving simultaneously.
301
+
302
+
#### Global rate limiting
303
+
304
+
**webdav.limits.rate.overall**
305
+
306
+
Defines the total request rate allowed across all clients combined. This acts as a system-wide throttle to protect the service under heavy load.
307
+
308
+
#### Per-client rate limiting
309
+
310
+
**webdav.limits.rate.per-client.fractions**
311
+
312
+
Specifies how much of the global rate each individual client is allowed to consume (typically as a fraction of the overall rate).
0 commit comments