From c116f597968d9a59903a26bc10b2147ec259e716 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Wed, 20 Jan 2021 23:04:00 +0200 Subject: [PATCH 1/7] Upgrade to GraalVM 20.3.1 --- bom/application/pom.xml | 2 +- build-parent/pom.xml | 4 ++-- independent-projects/bootstrap/pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bom/application/pom.xml b/bom/application/pom.xml index abb6a9fb0cdb2..75d95d5f81984 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -83,7 +83,7 @@ 3.6.0 2.1.0 - 20.3.0 + 20.3.1 1.0.6.Final 2.12.1 1.0.0.Final diff --git a/build-parent/pom.xml b/build-parent/pom.xml index 4e0cb77232e08..d29fc46ae773f 100644 --- a/build-parent/pom.xml +++ b/build-parent/pom.xml @@ -34,7 +34,7 @@ - 20.3.0 + 20.3.1 20.3 4.3.2 1.1.0 @@ -127,7 +127,7 @@ false - quay.io/quarkus/ubi-quarkus-native-image:20.3.0-java11 + quay.io/quarkus/ubi-quarkus-native-image:20.3.1-java11 sh ${maven.multiModuleProjectDirectory}/.github/docker-prune.${script.extension} diff --git a/independent-projects/bootstrap/pom.xml b/independent-projects/bootstrap/pom.xml index a7cde0e69ad52..e094fe25992ab 100644 --- a/independent-projects/bootstrap/pom.xml +++ b/independent-projects/bootstrap/pom.xml @@ -45,7 +45,7 @@ 1.0.5 1.1.0.Final 1.7.30 - 20.3.0 + 20.3.1 2.6.0 3.0.0-M5 1.5.0 From eddd274fc9f9142b76d244b31bab37f7e785f5b3 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 14 Jan 2021 16:22:24 +0200 Subject: [PATCH 2/7] Revert "Disable Image IO tests for now" This reverts commit 1fb47db670655e44ad174c907f5ee6cf53b7160c. --- .../java/io/quarkus/it/corestuff/ImageIOSupport.java | 9 +++++---- .../test/java/io/quarkus/it/main/ImageIOTestCase.java | 2 -- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/ImageIOSupport.java b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/ImageIOSupport.java index 188b8888fc77b..18358d57acb01 100644 --- a/integration-tests/main/src/main/java/io/quarkus/it/corestuff/ImageIOSupport.java +++ b/integration-tests/main/src/main/java/io/quarkus/it/corestuff/ImageIOSupport.java @@ -1,7 +1,9 @@ package io.quarkus.it.corestuff; +import java.awt.image.BufferedImage; import java.io.IOException; +import javax.imageio.ImageIO; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -12,10 +14,9 @@ public class ImageIOSupport extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - // Please uncomment this when we upgrade from GraalVM 20.3 to GraalVM 21 - // ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - // BufferedImage image = ImageIO.read(classLoader.getResource("META-INF/resources/1px.png")); - // resp.getWriter().write(image.getHeight() + "x" + image.getWidth()); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + BufferedImage image = ImageIO.read(classLoader.getResource("META-INF/resources/1px.png")); + resp.getWriter().write(image.getHeight() + "x" + image.getWidth()); } } diff --git a/integration-tests/main/src/test/java/io/quarkus/it/main/ImageIOTestCase.java b/integration-tests/main/src/test/java/io/quarkus/it/main/ImageIOTestCase.java index f368772940bba..66dbbc1eb55ee 100644 --- a/integration-tests/main/src/test/java/io/quarkus/it/main/ImageIOTestCase.java +++ b/integration-tests/main/src/test/java/io/quarkus/it/main/ImageIOTestCase.java @@ -3,7 +3,6 @@ import static io.restassured.RestAssured.when; import static org.hamcrest.Matchers.equalTo; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import io.quarkus.test.junit.QuarkusTest; @@ -12,7 +11,6 @@ public class ImageIOTestCase { @Test - @Disabled("Please bring this back when we upgrade from GraalVM 20.3 to GraalVM 21") public void testImageRead() { when().get("/core/imageio").then().body(equalTo("1x1")); } From 15c7d19c686f255ccf96d4be303131638895142e Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 14 Jan 2021 16:22:30 +0200 Subject: [PATCH 3/7] Revert "Move Tika substitutions to proper package" This reverts commit 462eff2daa3c09fa6cf5bd514b34a486fcf947fb. --- .../graal => graalvm}/CleanerNotSupportedSubstitution.java | 2 +- .../tika/{runtime/graal => graalvm}/PDFBoxSubstitutions.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) rename extensions/tika/runtime/src/main/java/io/quarkus/tika/{runtime/graal => graalvm}/CleanerNotSupportedSubstitution.java (95%) rename extensions/tika/runtime/src/main/java/io/quarkus/tika/{runtime/graal => graalvm}/PDFBoxSubstitutions.java (91%) diff --git a/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java b/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java similarity index 95% rename from extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java rename to extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java index 151359302285c..f882e8676806c 100644 --- a/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java +++ b/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java @@ -1,4 +1,4 @@ -package io.quarkus.tika.runtime.graal; +package io.quarkus.tika.graalvm; @com.oracle.svm.core.annotate.Substitute @com.oracle.svm.core.annotate.TargetClass(className = "org.apache.poi.poifs.nio.CleanerUtil") diff --git a/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/PDFBoxSubstitutions.java b/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java similarity index 91% rename from extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/PDFBoxSubstitutions.java rename to extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java index b8441b5d728eb..76ed8d0726111 100644 --- a/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/PDFBoxSubstitutions.java +++ b/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java @@ -1,4 +1,4 @@ -package io.quarkus.tika.runtime.graal; +package io.quarkus.tika.graalvm; import java.awt.color.ColorSpace; import java.awt.color.ICC_ColorSpace; @@ -31,7 +31,6 @@ final class Target_org_apache_pdfbox_pdmodel_graphics_color_PDICCBased { // Substitutions to prevent ICC_ColorSpace instances from appearing in the native image when using Apache Tika // See https://github.com/quarkusio/quarkus/pull/13644 -// These substitutions can be removed when moving from GraalVM 20.3 to GraalVM 21.0. class PDFBoxSubstitutions { } From 4b9541ef0503f447dad787b8aa5ebe51d42e859c Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 14 Jan 2021 16:22:32 +0200 Subject: [PATCH 4/7] Revert "Avoid ICC_ColorSpace instances in Apache Tika to support GraalVM 20.3" This reverts commit aa7b253b93857ef6887c6e0e5f2701cce0d6def9. --- .../tika/deployment/TikaProcessor.java | 16 +++------ .../tika/graalvm/PDFBoxSubstitutions.java | 36 ------------------- 2 files changed, 4 insertions(+), 48 deletions(-) delete mode 100644 extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java diff --git a/extensions/tika/deployment/src/main/java/io/quarkus/tika/deployment/TikaProcessor.java b/extensions/tika/deployment/src/main/java/io/quarkus/tika/deployment/TikaProcessor.java index b25b2cbb24e49..7ddfd2af4cbd9 100644 --- a/extensions/tika/deployment/src/main/java/io/quarkus/tika/deployment/TikaProcessor.java +++ b/extensions/tika/deployment/src/main/java/io/quarkus/tika/deployment/TikaProcessor.java @@ -31,7 +31,6 @@ import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceDirectoryBuildItem; import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem; -import io.quarkus.deployment.pkg.steps.NativeBuild; import io.quarkus.deployment.util.ServiceUtil; import io.quarkus.tika.TikaParseException; import io.quarkus.tika.runtime.TikaConfiguration; @@ -69,17 +68,10 @@ FeatureBuildItem feature() { return new FeatureBuildItem(Feature.TIKA); } - @BuildStep(onlyIf = NativeBuild.class) - List runtimeInitImageIOClasses() { - return Arrays.asList( - //org.apache.tika.parser.pdf.PDFParser (https://issues.apache.org/jira/browse/PDFBOX-4548) - new RuntimeInitializedClassBuildItem("org.apache.pdfbox.pdmodel.font.PDType1Font"), - // The following classes hold instances of java.awt.color.ICC_ColorSpace that are not allowed in the - // image heap as this class should be initialized at image runtime - // See https://github.com/quarkusio/quarkus/pull/13644 - new RuntimeInitializedClassBuildItem("org.apache.pdfbox.rendering.SoftMask"), - new RuntimeInitializedClassBuildItem( - "org.apache.pdfbox.pdmodel.graphics.color.PDCIEDictionaryBasedColorSpace")); + @BuildStep + public void registerRuntimeInitializedClasses(BuildProducer resource) { + //org.apache.tika.parser.pdf.PDFParser (https://issues.apache.org/jira/browse/PDFBOX-4548) + resource.produce(new RuntimeInitializedClassBuildItem("org.apache.pdfbox.pdmodel.font.PDType1Font")); } @BuildStep diff --git a/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java b/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java deleted file mode 100644 index 76ed8d0726111..0000000000000 --- a/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/PDFBoxSubstitutions.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.quarkus.tika.graalvm; - -import java.awt.color.ColorSpace; -import java.awt.color.ICC_ColorSpace; - -import com.oracle.svm.core.annotate.Alias; -import com.oracle.svm.core.annotate.RecomputeFieldValue; -import com.oracle.svm.core.annotate.Substitute; -import com.oracle.svm.core.annotate.TargetClass; - -@TargetClass(className = "org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB") -final class Target_org_apache_pdfbox_pdmodel_graphics_color_PDDeviceRGB { - @Substitute - private void init() { - // This method appears to be just a workaround for PDFBOX-2184 - } - - // awtColorSpace is not actually used in PDDeviceRGB - @Alias - @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) - private volatile ColorSpace awtColorSpace; -} - -@TargetClass(className = "org.apache.pdfbox.pdmodel.graphics.color.PDICCBased") -final class Target_org_apache_pdfbox_pdmodel_graphics_color_PDICCBased { - // This class provides alternative paths for when awtColorSpace is null, so it is safe to reset it - @Alias - @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset) - private volatile ICC_ColorSpace awtColorSpace; -} - -// Substitutions to prevent ICC_ColorSpace instances from appearing in the native image when using Apache Tika -// See https://github.com/quarkusio/quarkus/pull/13644 -class PDFBoxSubstitutions { - -} From faf2c860c7210ab989cf031bdd05d744bcc08c5a Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 14 Jan 2021 16:25:14 +0200 Subject: [PATCH 5/7] Revert "Add additional class to ImageIOProcessor" This reverts commit af31023b4a76ce6e5b14e3db97b6b679febf0ac8. --- .../src/main/java/io/quarkus/deployment/ImageIOProcessor.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java b/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java index 5cd6743caed4f..a29dc88920fc1 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java @@ -16,7 +16,6 @@ List runtimeInitImageIOClasses() { // (See https://github.com/quarkusio/quarkus/issues/12535) return Arrays.asList( new RuntimeInitializedClassBuildItem("javax.imageio.ImageTypeSpecifier"), - new RuntimeInitializedClassBuildItem("com.sun.imageio.plugins.jpeg.JPEG$JCS"), - new RuntimeInitializedClassBuildItem("java.awt.image.AreaAveragingScaleFilter")); + new RuntimeInitializedClassBuildItem("com.sun.imageio.plugins.jpeg.JPEG$JCS")); } } From c03605529dc54ead4665f6c85970417577336802 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Thu, 14 Jan 2021 16:25:15 +0200 Subject: [PATCH 6/7] Revert "Runtime initialization of some imageio related classes" This reverts commit 9e0a94ebf07021a1d95050a369c8af340d153dcf. --- .../quarkus/deployment/ImageIOProcessor.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java diff --git a/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java b/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java deleted file mode 100644 index a29dc88920fc1..0000000000000 --- a/core/deployment/src/main/java/io/quarkus/deployment/ImageIOProcessor.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.quarkus.deployment; - -import java.util.Arrays; -import java.util.List; - -import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; -import io.quarkus.deployment.pkg.steps.NativeBuild; - -public class ImageIOProcessor { - - @BuildStep(onlyIf = NativeBuild.class) - List runtimeInitImageIOClasses() { - // The following classes hold instances of java.awt.color.ICC_ColorSpace that are not allowed in the image - // heap as this class should be initialized at image runtime - // (See https://github.com/quarkusio/quarkus/issues/12535) - return Arrays.asList( - new RuntimeInitializedClassBuildItem("javax.imageio.ImageTypeSpecifier"), - new RuntimeInitializedClassBuildItem("com.sun.imageio.plugins.jpeg.JPEG$JCS")); - } -} From b09b7085a2622c3489b7b902f1dcd5805b5799e8 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Wed, 20 Jan 2021 23:34:25 +0200 Subject: [PATCH 7/7] Rename package io.quarkus.tika.graalvm to io.quarkus.tika.runtime.graal --- .../graal}/CleanerNotSupportedSubstitution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename extensions/tika/runtime/src/main/java/io/quarkus/tika/{graalvm => runtime/graal}/CleanerNotSupportedSubstitution.java (95%) diff --git a/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java b/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java similarity index 95% rename from extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java rename to extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java index f882e8676806c..151359302285c 100644 --- a/extensions/tika/runtime/src/main/java/io/quarkus/tika/graalvm/CleanerNotSupportedSubstitution.java +++ b/extensions/tika/runtime/src/main/java/io/quarkus/tika/runtime/graal/CleanerNotSupportedSubstitution.java @@ -1,4 +1,4 @@ -package io.quarkus.tika.graalvm; +package io.quarkus.tika.runtime.graal; @com.oracle.svm.core.annotate.Substitute @com.oracle.svm.core.annotate.TargetClass(className = "org.apache.poi.poifs.nio.CleanerUtil")