adutra commented on code in PR #12562:
URL: https://github.com/apache/iceberg/pull/12562#discussion_r2182330966


##########
core/src/main/java/org/apache/iceberg/rest/auth/OAuth2Manager.java:
##########
@@ -156,19 +156,28 @@ public OAuth2Util.AuthSession tableSession(
 
   @Override
   public void close() {
-    try {
+    AuthManagerSessionCache<String, OAuth2Util.AuthSession> cache = 
sessionCache;
+    this.sessionCache = null;
+    try (cache) {
       super.close();
-    } finally {
-      AuthSessionCache cache = sessionCache;
-      this.sessionCache = null;
-      if (cache != null) {
-        cache.close();
-      }
     }
   }
 
+  /**
+   * @deprecated since 1.10.0, will be removed in 1.11.0; use {@link 
#newAuthSessionCache(String,
+   *     Map)}
+   */
+  @Deprecated
   protected AuthSessionCache newSessionCache(String managerName, Map<String, 
String> properties) {
-    return new AuthSessionCache(managerName, sessionTimeout(properties));

Review Comment:
   I'm not sure I agree. The point here is: what to do if someone extended this 
class and overrode the `newSessionCache` method? 
   
   If they did that, it's because they have a custom cache, and we need to 
honor their intent and thus use the custom cache + adapter. 
   
   However, if the method is not overridden, then they were using the default 
cache, and in this case we want to use the new, generic cache instead. 
   
   Returning `null` here allows to distinguish both situations. It's thus not a 
behavioral change.



##########
core/src/main/java/org/apache/iceberg/rest/auth/AuthManagerSessionCache.java:
##########
@@ -0,0 +1,38 @@
+/*
+ * 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.iceberg.rest.auth;
+
+import java.util.function.Function;
+
+/** A cache for {@link AuthSession} instances. */
+public interface AuthManagerSessionCache<K, V extends AuthSession> extends 
AutoCloseable {

Review Comment:
   Yes, because I need to wrap the old deprecated `AuthSessionCache` in an 
adapter that bridges the old class to the new interface.



-- 
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: issues-unsubscr...@iceberg.apache.org

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


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

Reply via email to