From 2074487317cf185422a691f589aced2b6eb8c452 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Thu, 29 Jan 2026 17:59:45 +0000 Subject: [PATCH] only initializes vfs when deprecated prop is set When the property `general.vfs.classpaths` was not set VFS was still unnecessarily initialized. Modified to only initialized VFS when the property is actually set. Tested locally by setting `general.vfs.classpaths=`, `general.dynamic.classpaths=`, `general.context.class.loader.factory=TestCL`. Where TestCL is a classloader that does nothing. When all of these are set did not see VFS create anything in local filesystem. Had to set some props to empty string because mini accumulo would set them otherwise. Also added some debug logging if VFS was initialized and did not see that. Removed that logging from these changes. --- .../vfs/AccumuloVFSClassLoader.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java index 8ad8e9b8ad6..942fffcb2c2 100644 --- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java +++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java @@ -186,10 +186,13 @@ private static ReloadingClassLoader createDynamicClassloader(final ClassLoader p ReloadingClassLoader wrapper = () -> parent; - if (dynamicCPath == null || dynamicCPath.equals("")) { + if (dynamicCPath == null || dynamicCPath.isBlank()) { return wrapper; } + log.warn("'{}' is deprecated but was set to '{}' ", DYNAMIC_CLASSPATH_PROPERTY_NAME, + dynamicCPath); + // TODO monitor time for lib/ext was 1 sec... should this be configurable? - ACCUMULO-1301 return new AccumuloReloadingVFSClassLoader(dynamicCPath, generateVfs(), wrapper, 1000, true); } @@ -204,15 +207,25 @@ private static ClassLoader getClassLoader_Internal() throws IOException { synchronized (lock) { if (loader == null) { - FileSystemManager vfs = generateVfs(); - // Set up the 2nd tier class loader if (parent == null) { parent = AccumuloClassLoader.getClassLoader(); } - FileObject[] vfsCP = resolve(vfs, AccumuloClassLoader - .getAccumuloProperty(VFS_CLASSLOADER_SYSTEM_CLASSPATH_PROPERTY, "")); + var sysClasspath = AccumuloClassLoader + .getAccumuloProperty(VFS_CLASSLOADER_SYSTEM_CLASSPATH_PROPERTY, ""); + + if (sysClasspath.isBlank()) { + localLoader = createDynamicClassloader(parent); + loader = localLoader; + return localLoader.getClassLoader(); + } + + log.warn("'{}' is deprecated but was set to '{}' ", + VFS_CLASSLOADER_SYSTEM_CLASSPATH_PROPERTY, sysClasspath); + + FileSystemManager vfs = generateVfs(); + FileObject[] vfsCP = resolve(vfs, sysClasspath); if (vfsCP.length == 0) { localLoader = createDynamicClassloader(parent);