eaugene commented on code in PR #13195:
URL: https://github.com/apache/pinot/pull/13195#discussion_r1612966022


##########
pinot-broker/src/main/java/org/apache/pinot/broker/api/AccessControl.java:
##########
@@ -42,21 +46,58 @@ default boolean hasAccess(RequesterIdentity 
requesterIdentity) {
 
   /**
    * Fine-grained access control on parsed broker request. May check table, 
column, permissions, etc.
-   *
+   * The default implementation is kept to have backward compatibility with 
the existing implementations
    * @param requesterIdentity requester identity
    * @param brokerRequest broker request (incl query)
    *
    * @return {@code true} if authorized, {@code false} otherwise
    */
-  boolean hasAccess(RequesterIdentity requesterIdentity, BrokerRequest 
brokerRequest);
+
+  default boolean hasAccess(RequesterIdentity requesterIdentity, BrokerRequest 
brokerRequest) {
+    return true;

Review Comment:
   > but my concern is that if there are client code (outside of Pinot repo) 
still calling `hasAccess()`, that one will break because all the existing 
implementation will return `true`
   
   I don't think this would happen .
   
   **Reason :** 
   We are making both implementations of hasAccess() default only with this 
change . So by that all existing implementations would already have 
`hasAccess()` overridden . 
   Only chance of getting `true` is any new implementation of `AccessControl` 
missing to override both `hasAccess()` and `authorize()` ( previously 
`verifyAccess()` ) . This chance of miss is again only going to in the 
transition phase till we get `hasAccess()` removed and make `authorize()` 
non-default hopefully in upcoming major pinot version future releases.
   
   Please correct me if I misunderstood the scenario you are trying to say 
   
   **Further thoughts :**
   My concern with making them call each other is ,  any new implementation of 
`AccessControl` ( outside of pinot repo & by mistake not having `hasAccess()` 
or `authorize()` implemented ) and client calling either of `hasAccess()` or 
`authorize()` of that undesirable implementation will cause 
`StackOverflowError` .
   
   As its currently marked as `@Deprecated` , the compiler would throw warning 
. 
   Further more if any clients calling implementations of `hasAccess()` would 
work normally . 
   
   To make it more rigid , instead of returning `true` from `hasAccess()` 
default implementation , we can probably throw an `DeprecationException()` / 
`NotImplementedException()` [ I prefer the former exception ]  .  LMK if this 
would work @Jackie-Jiang  ? 



-- 
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...@pinot.apache.org

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


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

Reply via email to