cshannon commented on code in PR #3136:
URL: https://github.com/apache/accumulo/pull/3136#discussion_r1089755795


##########
core/src/main/java/org/apache/accumulo/core/classloader/DefaultContextClassLoaderFactory.java:
##########
@@ -48,55 +46,49 @@ public class DefaultContextClassLoaderFactory implements 
ContextClassLoaderFacto
   private static final Logger LOG = 
LoggerFactory.getLogger(DefaultContextClassLoaderFactory.class);
   private static final String className = 
DefaultContextClassLoaderFactory.class.getName();
 
-  @SuppressWarnings("removal")
-  private static final Property VFS_CONTEXT_CLASSPATH_PROPERTY =
-      Property.VFS_CONTEXT_CLASSPATH_PROPERTY;
+  // Do we set a max size here and how long until we expire the classloader?
+  private final Cache<String,Context> contexts =
+      Caffeine.newBuilder().maximumSize(100).expireAfterAccess(1, 
TimeUnit.DAYS).build();
 
-  public DefaultContextClassLoaderFactory(final AccumuloConfiguration accConf) 
{
+  public DefaultContextClassLoaderFactory() {
     if (!isInstantiated.compareAndSet(false, true)) {
       throw new IllegalStateException("Can only instantiate " + className + " 
once");
     }
-    Supplier<Map<String,String>> contextConfigSupplier =
-        () -> 
accConf.getAllPropertiesWithPrefix(VFS_CONTEXT_CLASSPATH_PROPERTY);
-    setContextConfig(contextConfigSupplier);
-    LOG.debug("ContextManager configuration set");
-    startCleanupThread(accConf, contextConfigSupplier);
   }
 
-  @SuppressWarnings("deprecation")
-  private static void setContextConfig(Supplier<Map<String,String>> 
contextConfigSupplier) {
-    org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader
-        .setContextConfig(contextConfigSupplier);
-  }
+  @Override
+  public ClassLoader getClassLoader(String contextName) {

Review Comment:
   I agree, we should probably change the name to something else. The value can 
actually be anything you want. By default it would be a list of URIs because 
that's what the default factory would use to create a classloader but if a user 
plugs in their own class loader factory implementation then this value can be 
anything the user wants as long as their factory knows how to read it. So I 
think `contextValue` or something like that makes a lot more sense as 
`contextName` doesn't apply anymore.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to