Skip to content

Testing: "class loader confusion 1" (regression 3.25.0->3.25.1 + 3.25.2) #49462

@snazy

Description

@snazy

Describe the bug

We have this version-bump PR apache/polaris#2279 which logs a lot of new test failures for the bump of Quarkus from 3.25.0 to 3.25.2.

The test class org.apache.polaris.service.task.BatchFileCleanupTaskHandlerTest yields exceptions like the following for 3.25.1 and 3.25.2:


org/apache/polaris/service/catalog/io/FileIOFactory
java.lang.NoClassDefFoundError: org/apache/polaris/service/catalog/io/FileIOFactory
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:566)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:577)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	at org.apache.polaris.service.task.BatchFileCleanupTaskHandlerTest.buildTaskFileIOSupplier(BatchFileCleanupTaskHandlerTest.java:62)
	at org.apache.polaris.service.task.BatchFileCleanupTaskHandlerTest.testCleanupWithRetries(BatchFileCleanupTaskHandlerTest.java:244)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:1000)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:848)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.ClassNotFoundException: org.apache.polaris.service.catalog.io.FileIOFactory
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:550)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	... 13 more


org.apache.polaris.service.catalog.io.FileIOFactory
java.lang.ClassNotFoundException: org.apache.polaris.service.catalog.io.FileIOFactory
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:550)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:566)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:577)
	at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:524)
	at org.apache.polaris.service.task.BatchFileCleanupTaskHandlerTest.buildTaskFileIOSupplier(BatchFileCleanupTaskHandlerTest.java:62)
	at org.apache.polaris.service.task.BatchFileCleanupTaskHandlerTest.testCleanupWithRetries(BatchFileCleanupTaskHandlerTest.java:244)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:1000)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:848)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

The 2nd exception happens due to the isBanned call yielding true in io.quarkus.bootstrap.classloading.QuarkusClassLoader

                if (classPathResourceIndex.isBanned(resourceName)) {
                    throw new ClassNotFoundException(name);
                }

Expected behavior

No response

Actual behavior

No response

How to Reproduce?

  1. Clone https://github.com/renovate-bot/apache-_-polaris/tree/renovate/quarkus-platform-and-group
  2. Run/debug BatchFileCleanupTaskHandlerTest from e.g. IntelliJ

Output of uname -a or ver

No response

Output of java -version

21.0.7

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions