flyrain commented on code in PR #278:
URL: https://github.com/apache/polaris/pull/278#discussion_r1772087257


##########
polaris-service/src/main/java/org/apache/polaris/service/ratelimiter/RateLimiterKey.java:
##########
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.polaris.service.ratelimiter;
+
+/**
+ * Context about the type of entity that will be rate limited.
+ *
+ * <p>Note that this holds the realmIdentifier directly rather than the 
RealmContext because
+ * RealmContexts don't necessarily have to follow the guarantees of being a 
Map Key: hashCode,
+ * equals, immutability.
+ */
+public record RateLimiterKey(String realmIdentifier) {}

Review Comment:
   I love the idea to introduce this class, which decouples the rate limiter 
from realm or realm context. It's the right thing to do. With that in mind, we 
can clean it up and make it more generic by doing followings
   1. Avoid any name related to realm, for example, we can rename from 
`realmIdentifier` to `key`
   2. Make the `RateLimiterKey` more extensible
       - Rename it to something like `RateLimiterContext`
       - Introduce an interface `RateLimiterContext`, and make this record 
class inherit from it.
   
   Potential use cases:
   1. A user don't want to use realm as the key, he/she can switch to others 
like principal or Ip address
   2. A user need more information than a key string in the 
`RateLimiterContext`, he/she can extend the class to support pass it to Rate 
Limiter constructor.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to