On 06/10/2024 06:54, isa...@apache.org wrote:
This is an automated email from the ASF dual-hosted git repository.

isapir pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
      new 9cc44dcca2 Allow different implementations for RateLimitFilter
9cc44dcca2 is described below

commit 9cc44dcca224ebc5fc4f8c835e3c64f42ab04fc1
Author: Igal Sapir <isa...@apache.org>
AuthorDate: Sat Oct 5 22:54:21 2024 -0700

     Allow different implementations for RateLimitFilter

Overall, big +1 to this sort of extensibility.

+    /**
+     * init-param to set a class name that implements RateLimiter
+     */
+    public static final String PARAM_CLASS_NAME = "className";

I think this needs to be renamed for consistency. Generally, we use className to define the implementing class of the component being defined. For sub-components, we use something like rateLimiterClassName. For an example, have a look at the Manager class where we have className and secureRandomClass.


+        try {
+            rateLimiter = 
(RateLimiter)Class.forName(rateLimitClassName).getConstructor().newInstance();
+        } catch (InstantiationException | IllegalAccessException | 
InvocationTargetException |
+                 NoSuchMethodException | ClassNotFoundException e) {

You can catch ReflectiveOperationException here and simplify the above.

diff --git a/test/org/apache/catalina/filters/TestRateLimitFilter.java 
b/test/org/apache/catalina/filters/TestRateLimitFilter.java
index 0d918285c7..ff9bdbf351 100644
--- a/test/org/apache/catalina/filters/TestRateLimitFilter.java
+++ b/test/org/apache/catalina/filters/TestRateLimitFilter.java
@@ -24,6 +24,7 @@ import jakarta.servlet.FilterChain;
  import jakarta.servlet.FilterConfig;
  import jakarta.servlet.ServletException;
+import org.apache.catalina.util.FastRateLimiter;
  import org.junit.Assert;
  import org.junit.Test;
@@ -55,9 +56,11 @@ public class TestRateLimitFilter extends TomcatBaseTest {
          MockFilterChain filterChain = new MockFilterChain();
          RateLimitFilter rateLimitFilter = testRateLimitFilter(filterDef, 
root);
- int allowedRequests = (int) Math.round(rateLimitFilter.bucketCounter.getRatio() * bucketRequests);
+        FastRateLimiter tbc = (FastRateLimiter) rateLimitFilter.rateLimiter;

tbc? Looks like "To Be Confirmed". Maybe expand this name.

It is great you were able to address this so promptly.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to