From 04d4875393d82216a361c05b46a0069e13a99c6a Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Mon, 13 Jan 2025 22:36:01 +0100 Subject: [PATCH] Make tests work with Java 23 Example stack trace from Java 23: ``` getSubject is supported only if a security manager is allowed java.lang.UnsupportedOperationException: getSubject is supported only if a security manager is allowed at java.base/javax.security.auth.Subject.getSubject(Subject.java:347) at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:588) at org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:3888) at org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:3878) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3666) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:557) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:366) at org.apache.iceberg.hadoop.Util.getFs(Util.java:56) at org.apache.iceberg.hadoop.HadoopOutputFile.fromPath(HadoopOutputFile.java:53) at org.apache.iceberg.hadoop.HadoopFileIO.newOutputFile(HadoopFileIO.java:97) at org.apache.polaris.service.dropwizard.catalog.io.TestFileIO.newOutputFile(TestFileIO.java:114) at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadata(BaseMetastoreTableOperations.java:155) at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadataIfRequired(BaseMetastoreTableOperations.java:150) at org.apache.polaris.service.catalog.BasePolarisCatalog$BasePolarisTableOperations.doCommit(BasePolarisCatalog.java:1343) at org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:125) at org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.create(BaseMetastoreCatalog.java:201) at org.apache.iceberg.rest.CatalogHandlers.createTable(CatalogHandlers.java:274) at org.apache.polaris.service.catalog.PolarisCatalogHandlerWrapper.lambda$createTableDirect$13(PolarisCatalogHandlerWrapper.java:588) at org.apache.polaris.service.catalog.PolarisCatalogHandlerWrapper.doCatalogOperation(PolarisCatalogHandlerWrapper.java:517) at org.apache.polaris.service.catalog.PolarisCatalogHandlerWrapper.createTableDirect(PolarisCatalogHandlerWrapper.java:588) at org.apache.polaris.service.catalog.IcebergCatalogAdapter.createTable(IcebergCatalogAdapter.java:258) at org.apache.polaris.service.catalog.api.IcebergRestCatalogApi.createTable(IcebergRestCatalogApi.java:205) at org.apache.polaris.service.dropwizard.admin.PolarisOverlappingTableTest.createTable(PolarisOverlappingTableTest.java:61) at org.apache.polaris.service.dropwizard.admin.PolarisOverlappingTableTest.testTableLocationRestrictions(PolarisOverlappingTableTest.java:153) ``` Note that `javax.security.auth.Subject#getSubject` is deprecated for removal since Java 17. `java.lang.System#initPhase3` shows that setting `java.security.manager` to `allow` works around the UOE. --- quarkus/service/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/quarkus/service/build.gradle.kts b/quarkus/service/build.gradle.kts index 794f317cf..94ced9bf9 100644 --- a/quarkus/service/build.gradle.kts +++ b/quarkus/service/build.gradle.kts @@ -146,7 +146,9 @@ tasks.named("test").configure { // Note: the test secrets are referenced in DropwizardServerManager environment("POLARIS_BOOTSTRAP_CREDENTIALS", "POLARIS,root,test-admin,test-secret") jvmArgs("--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED") - useJUnitPlatform() + // Need to allow a java security manager after Java 21, for Subject.getSubject to work + // "getSubject is supported only if a security manager is allowed". + systemProperty("java.security.manager", "allow") maxParallelForks = 4 }