This is an automated email from the ASF dual-hosted git repository.

dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-classloaders.git


The following commit(s) were added to refs/heads/main by this push:
     new 2ddcea6  Updates for Accumulo 2.1.0 SLF4J2 and new MIME type (#12)
2ddcea6 is described below

commit 2ddcea646bd23c336b0648a819bfd4b745f7b410
Author: Dave Marion <dlmar...@apache.org>
AuthorDate: Wed Oct 5 14:01:36 2022 -0400

    Updates for Accumulo 2.1.0 SLF4J2 and new MIME type (#12)
    
    Accumulo 2.1.0 recently upgraded slf4j to slf4j2. I updated the poms
    to account for the new version and additional dependency. Two of the
    tests were also failing, which turned out to be caused by the backport
    of JDK-8273655. Adding a mime type mapping for application/java-archive
    resolved the issue. While debugging I restructured the VFSClassLoaderTest.
---
 modules/vfs-class-loader/pom.xml                   | 12 ++++
 .../accumulo/classloader/vfs/VFSManager.java       |  1 +
 .../accumulo/classloader/vfs/AccumuloDFSBase.java  |  9 ++-
 .../classloader/vfs/VfsClassLoaderTest.java        | 64 ++++++++++++++--------
 .../src/test/resources/log4j2-test.properties      |  5 +-
 pom.xml                                            | 11 +++-
 6 files changed, 71 insertions(+), 31 deletions(-)

diff --git a/modules/vfs-class-loader/pom.xml b/modules/vfs-class-loader/pom.xml
index ee98b9d..15865b8 100644
--- a/modules/vfs-class-loader/pom.xml
+++ b/modules/vfs-class-loader/pom.xml
@@ -98,6 +98,18 @@
       <artifactId>hadoop-client-minicluster</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <!-- needed because https://issues.apache.org/jira/browse/LOG4J2-3601 -->
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <version>2.19.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j2-impl</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <pluginManagement>
diff --git 
a/modules/vfs-class-loader/src/main/java/org/apache/accumulo/classloader/vfs/VFSManager.java
 
b/modules/vfs-class-loader/src/main/java/org/apache/accumulo/classloader/vfs/VFSManager.java
index 04de7f4..4c3988d 100644
--- 
a/modules/vfs-class-loader/src/main/java/org/apache/accumulo/classloader/vfs/VFSManager.java
+++ 
b/modules/vfs-class-loader/src/main/java/org/apache/accumulo/classloader/vfs/VFSManager.java
@@ -179,6 +179,7 @@ public class VFSManager {
       VFS.addMimeTypeMap("application/x-tar", "tar");
       VFS.addMimeTypeMap("application/x-gzip", "gz");
       VFS.addMimeTypeMap("application/zip", "zip");
+      VFS.addMimeTypeMap("application/java-archive", "jar");
       VFS.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
       VFS.setFilesCache(new SoftRefFilesCache());
       File cacheDir = computeTopCacheDir();
diff --git 
a/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/AccumuloDFSBase.java
 
b/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/AccumuloDFSBase.java
index d3a20f6..c8a63e8 100644
--- 
a/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/AccumuloDFSBase.java
+++ 
b/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/AccumuloDFSBase.java
@@ -27,7 +27,6 @@ import java.nio.charset.StandardCharsets;
 
 import org.apache.commons.vfs2.CacheStrategy;
 import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.cache.DefaultFilesCache;
 import org.apache.commons.vfs2.cache.SoftRefFilesCache;
 import org.apache.commons.vfs2.impl.DefaultFileReplicator;
 import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
@@ -108,7 +107,6 @@ public class AccumuloDFSBase {
     // Set up the VFS
     vfs = new DefaultFileSystemManager();
     try {
-      vfs.setFilesCache(new DefaultFilesCache());
       vfs.addProvider("res", new 
org.apache.commons.vfs2.provider.res.ResourceFileProvider());
       vfs.addProvider("zip", new 
org.apache.commons.vfs2.provider.zip.ZipFileProvider());
       vfs.addProvider("gz", new 
org.apache.commons.vfs2.provider.gzip.GzipFileProvider());
@@ -141,6 +139,7 @@ public class AccumuloDFSBase {
       vfs.addMimeTypeMap("application/x-tar", "tar");
       vfs.addMimeTypeMap("application/x-gzip", "gz");
       vfs.addMimeTypeMap("application/zip", "zip");
+      vfs.addMimeTypeMap("application/java-archive", "jar");
       vfs.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
       vfs.setFilesCache(new SoftRefFilesCache());
       vfs.setReplicator(new DefaultFileReplicator(new 
File(System.getProperty("java.io.tmpdir"),
@@ -153,15 +152,15 @@ public class AccumuloDFSBase {
 
   }
 
-  public Configuration getConfiguration() {
+  public static Configuration getConfiguration() {
     return conf;
   }
 
-  public MiniDFSCluster getCluster() {
+  public static MiniDFSCluster getCluster() {
     return cluster;
   }
 
-  public DefaultFileSystemManager getDefaultFileSystemManager() {
+  public static DefaultFileSystemManager getDefaultFileSystemManager() {
     return vfs;
   }
 
diff --git 
a/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/VfsClassLoaderTest.java
 
b/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/VfsClassLoaderTest.java
index 0d9a1e8..3ee15b6 100644
--- 
a/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/VfsClassLoaderTest.java
+++ 
b/modules/vfs-class-loader/src/test/java/org/apache/accumulo/classloader/vfs/VfsClassLoaderTest.java
@@ -19,11 +19,13 @@
 package org.apache.accumulo.classloader.vfs;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.util.Arrays;
 
 import org.apache.commons.vfs2.FileChangeEvent;
 import org.apache.commons.vfs2.FileListener;
@@ -34,35 +36,53 @@ import 
org.apache.commons.vfs2.impl.DefaultFileSystemManager;
 import org.apache.commons.vfs2.impl.VFSClassLoader;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class VfsClassLoaderTest extends AccumuloDFSBase {
 
+  private static final Logger LOG = 
LoggerFactory.getLogger(VfsClassLoaderTest.class);
   private static final Path TEST_DIR = new Path(getHdfsUri() + "/test-dir");
 
-  private FileSystem hdfs = null;
-  private VFSClassLoader cl = null;
-  private DefaultFileSystemManager vfs = null;
+  private static FileSystem hdfs = null;
+  private static DefaultFileSystemManager vfs = null;
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeClass
+  public static void setup() throws Exception {
+
+    // miniDfsClusterSetup();
 
-    this.hdfs = this.getCluster().getFileSystem();
-    this.hdfs.mkdirs(TEST_DIR);
+    hdfs = getCluster().getFileSystem();
+    assertTrue("Unable to create: " + TEST_DIR, hdfs.mkdirs(TEST_DIR));
 
+    vfs = getDefaultFileSystemManager();
+
+  }
+
+  @Before
+  public void before() throws Exception {
     // Copy jar file to TEST_DIR
-    URL jarPath = this.getClass().getResource("/HelloWorld.jar");
+    URL jarPath = VfsClassLoaderTest.class.getResource("/HelloWorld.jar");
+    assertNotNull("Unable to find HelloWorld.jar", jarPath);
     Path src = new Path(jarPath.toURI().toString());
     Path dst = new Path(TEST_DIR, src.getName());
-    this.hdfs.copyFromLocalFile(src, dst);
+    LOG.info("Copying {} to {}", src, dst);
+    hdfs.copyFromLocalFile(src, dst);
+  }
+
+  @Test
+  public void testGetClass() throws Exception {
 
-    vfs = this.getDefaultFileSystemManager();
     FileObject testDir = vfs.resolveFile(TEST_DIR.toUri().toString());
+    assertNotNull("Unable to resolve test dir via VFS", testDir);
     FileObject[] dirContents = testDir.getChildren();
+    LOG.info("Test directory contents according to VFS: {}", 
Arrays.toString(dirContents));
 
-    this.cl = AccessController.doPrivileged(new 
PrivilegedAction<VFSClassLoader>() {
+    VFSClassLoader cl = AccessController.doPrivileged(new 
PrivilegedAction<VFSClassLoader>() {
       @Override
       public VFSClassLoader run() {
         // Point the VFSClassLoader to all of the objects in TEST_DIR
@@ -73,11 +93,10 @@ public class VfsClassLoaderTest extends AccumuloDFSBase {
         }
       }
     });
-  }
 
-  @Test
-  public void testGetClass() throws Exception {
-    Class<?> helloWorldClass = this.cl.loadClass("test.HelloWorld");
+    LOG.info("VFSClassLoader has the following files: {}", 
Arrays.toString(cl.getFileObjects()));
+    LOG.info("Looking for HelloWorld.class");
+    Class<?> helloWorldClass = cl.loadClass("test.HelloWorld");
     Object o = helloWorldClass.getDeclaredConstructor().newInstance();
     assertEquals("Hello World!", o.toString());
   }
@@ -95,7 +114,7 @@ public class VfsClassLoaderTest extends AccumuloDFSBase {
     URL jarPath = this.getClass().getResource("/HelloWorld.jar");
     Path src = new Path(jarPath.toURI().toString());
     Path dst = new Path(TEST_DIR, "HelloWorld2.jar");
-    this.hdfs.copyFromLocalFile(src, dst);
+    hdfs.copyFromLocalFile(src, dst);
 
     // VFS-487 significantly wait to avoid failure
     Thread.sleep(7000);
@@ -105,13 +124,13 @@ public class VfsClassLoaderTest extends AccumuloDFSBase {
     jarPath = this.getClass().getResource("/HelloWorld.jar");
     src = new Path(jarPath.toURI().toString());
     dst = new Path(TEST_DIR, "HelloWorld2.jar");
-    this.hdfs.copyFromLocalFile(src, dst);
+    hdfs.copyFromLocalFile(src, dst);
 
     // VFS-487 significantly wait to avoid failure
     Thread.sleep(7000);
     assertTrue(listener.isFileChanged());
 
-    this.hdfs.delete(dst, false);
+    hdfs.delete(dst, false);
     // VFS-487 significantly wait to avoid failure
     Thread.sleep(7000);
     assertTrue(listener.isFileDeleted());
@@ -120,9 +139,10 @@ public class VfsClassLoaderTest extends AccumuloDFSBase {
 
   }
 
-  @After
-  public void tearDown() throws Exception {
-    this.hdfs.delete(TEST_DIR, true);
+  @AfterClass
+  public static void tearDown() throws Exception {
+    hdfs.delete(TEST_DIR, true);
+    tearDownMiniDfsCluster();
   }
 
   public static class MyFileMonitor implements FileListener {
diff --git a/modules/vfs-class-loader/src/test/resources/log4j2-test.properties 
b/modules/vfs-class-loader/src/test/resources/log4j2-test.properties
index efe0a38..0a8a767 100644
--- a/modules/vfs-class-loader/src/test/resources/log4j2-test.properties
+++ b/modules/vfs-class-loader/src/test/resources/log4j2-test.properties
@@ -27,6 +27,9 @@ appender.console.target = SYSTEM_OUT
 appender.console.layout.type = PatternLayout
 appender.console.layout.pattern = %d{ISO8601} [%-8c{2}] %-5p: %m%n
 
-rootLogger.level = info
+logger.01.name = org.apache.hadoop
+logger.01.level = warn
+
+rootLogger.level = debug
 rootLogger.appenderRef.console.ref = STDOUT
 
diff --git a/pom.xml b/pom.xml
index f127466..90cee52 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,7 +97,7 @@
     <maven.compiler.target>11</maven.compiler.target>
     <!-- timestamp for reproducible outputs, updated on release by the release 
plugin -->
     
<project.build.outputTimestamp>2020-08-27T15:56:15Z</project.build.outputTimestamp>
-    <slf4j.version>1.7.35</slf4j.version>
+    <slf4j.version>2.0.3</slf4j.version>
     
<sourceReleaseAssemblyDescriptor>source-release-tar</sourceReleaseAssemblyDescriptor>
   </properties>
   <dependencyManagement>
@@ -208,8 +208,8 @@
       </dependency>
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j-impl</artifactId>
-        <version>2.17.2</version>
+        <artifactId>log4j-slf4j2-impl</artifactId>
+        <version>2.19.0</version>
         <scope>test</scope>
       </dependency>
     </dependencies>
@@ -558,6 +558,11 @@
             </goals>
             <configuration>
               <failOnWarning>true</failOnWarning>
+              <ignoredUnusedDeclaredDependencies>
+                
<unused>org.apache.logging.log4j:log4j-slf4j2-impl:jar:*</unused>
+                <!-- needed because 
https://issues.apache.org/jira/browse/LOG4J2-3601 -->
+                <unused>org.apache.logging.log4j:log4j-core:jar:*</unused>
+              </ignoredUnusedDeclaredDependencies>
             </configuration>
           </execution>
         </executions>

Reply via email to