You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2024/02/09 09:24:32 UTC
(camel-quarkus) branch main updated (9afee8e4f3 -> 84ddf86908)
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
from 9afee8e4f3 Bump quarkiverse-groovy.version from 3.6.4 to 3.7.0
new 1c43db4a1b Fix GraalVM compiler warnings for failed field recomputaton related to Protobuf UnsafeUtil sun.misc.Unsafe access
new 84ddf86908 Unshade Google and Micrometer related packages from kudu-client
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
extensions/kudu/client/pom.xml | 44 +++++++++++++++++++++-
extensions/kudu/deployment/pom.xml | 4 ++
.../component/kudu/deployment/KuduProcessor.java | 16 ++++++++
extensions/kudu/runtime/pom.xml | 25 +++++++++++-
.../kudu/graal/UnsafeUtilSubstitutions.java | 22 ++++++-----
pom.xml | 1 +
poms/bom/pom.xml | 9 +++++
poms/bom/src/main/generated/flattened-full-pom.xml | 9 +++++
.../src/main/generated/flattened-reduced-pom.xml | 9 +++++
.../generated/flattened-reduced-verbose-pom.xml | 9 +++++
10 files changed, 136 insertions(+), 12 deletions(-)
copy extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/graal/SubstituteHostUtils.java => extensions/kudu/runtime/src/main/java/org/apache/camel/component/kudu/graal/UnsafeUtilSubstitutions.java (64%)
(camel-quarkus) 01/02: Fix GraalVM compiler warnings for failed field recomputaton related to Protobuf UnsafeUtil sun.misc.Unsafe access
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 1c43db4a1bba2e22f389df552d86cec674bc2271
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Feb 7 07:47:48 2024 +0000
Fix GraalVM compiler warnings for failed field recomputaton related to Protobuf UnsafeUtil sun.misc.Unsafe access
---
.../component/kudu/deployment/KuduProcessor.java | 16 ++++++++++
.../kudu/graal/UnsafeUtilSubstitutions.java | 37 ++++++++++++++++++++++
2 files changed, 53 insertions(+)
diff --git a/extensions/kudu/deployment/src/main/java/org/apache/camel/quarkus/component/kudu/deployment/KuduProcessor.java b/extensions/kudu/deployment/src/main/java/org/apache/camel/quarkus/component/kudu/deployment/KuduProcessor.java
index 7e99333cac..53a37a54b9 100644
--- a/extensions/kudu/deployment/src/main/java/org/apache/camel/quarkus/component/kudu/deployment/KuduProcessor.java
+++ b/extensions/kudu/deployment/src/main/java/org/apache/camel/quarkus/component/kudu/deployment/KuduProcessor.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.quarkus.component.kudu.deployment;
+import java.util.stream.Stream;
+
import com.sun.security.auth.module.JndiLoginModule;
import com.sun.security.auth.module.KeyStoreLoginModule;
import com.sun.security.auth.module.Krb5LoginModule;
@@ -28,6 +30,7 @@ import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageSecurityProviderBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem;
class KuduProcessor {
private static final String[] JDK_LOGIN_MODULE_CLASSES = {
@@ -66,4 +69,17 @@ class KuduProcessor {
reflectiveClass.produce(ReflectiveClassBuildItem.builder(JDK_LOGIN_MODULE_CLASSES).build());
}
+
+ @BuildStep
+ void runtimeReinitializedClasses(BuildProducer<RuntimeReinitializedClassBuildItem> runtimeReinitializedClass) {
+ // Required due to Protobuf / Kudu usage of sun.misc.Unsafe to compute static field values
+ Stream.of("com.google.protobuf.UnsafeUtil",
+ "com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder",
+ "com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator",
+ "org.apache.kudu.client.TableLocationsCache",
+ "org.apache.kudu.client.PartitionSchema",
+ "org.apache.kudu.client.PartitionSchema$BoundsComparator")
+ .map(RuntimeReinitializedClassBuildItem::new)
+ .forEach(runtimeReinitializedClass::produce);
+ }
}
diff --git a/extensions/kudu/runtime/src/main/java/org/apache/camel/component/kudu/graal/UnsafeUtilSubstitutions.java b/extensions/kudu/runtime/src/main/java/org/apache/camel/component/kudu/graal/UnsafeUtilSubstitutions.java
new file mode 100644
index 0000000000..6fa39980e1
--- /dev/null
+++ b/extensions/kudu/runtime/src/main/java/org/apache/camel/component/kudu/graal/UnsafeUtilSubstitutions.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.kudu.graal;
+
+import java.lang.reflect.Field;
+
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+import sun.misc.Unsafe;
+
+@TargetClass(className = "com.google.protobuf.UnsafeUtil")
+final class UnsafeUtilSubstitutions {
+ @Substitute
+ static sun.misc.Unsafe getUnsafe() {
+ try {
+ Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
+ theUnsafe.setAccessible(true);
+ return (Unsafe) theUnsafe.get(null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
(camel-quarkus) 02/02: Unshade Google and Micrometer related packages from kudu-client
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 84ddf86908b4908dacc7eab6a682bfb5196f994f
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Feb 6 10:57:54 2024 +0000
Unshade Google and Micrometer related packages from kudu-client
Fixes #5701
---
extensions/kudu/client/pom.xml | 44 +++++++++++++++++++++-
extensions/kudu/deployment/pom.xml | 4 ++
extensions/kudu/runtime/pom.xml | 25 +++++++++++-
pom.xml | 1 +
poms/bom/pom.xml | 9 +++++
poms/bom/src/main/generated/flattened-full-pom.xml | 9 +++++
.../src/main/generated/flattened-reduced-pom.xml | 9 +++++
.../generated/flattened-reduced-verbose-pom.xml | 9 +++++
8 files changed, 107 insertions(+), 3 deletions(-)
diff --git a/extensions/kudu/client/pom.xml b/extensions/kudu/client/pom.xml
index 4c3901fa8f..4e53013917 100644
--- a/extensions/kudu/client/pom.xml
+++ b/extensions/kudu/client/pom.xml
@@ -29,8 +29,8 @@
<artifactId>camel-quarkus-kudu-client</artifactId>
<name>Camel Quarkus :: Kudu :: Client</name>
- <description>org.apache.kudu:kudu-client with netty package relocations reverted and netty classes stripped away
- so that camel-quarkus-kudu can use quarkus-netty as a replacement</description>
+ <description>org.apache.kudu:kudu-client with guava, micrometer, murmur, netty & protobuf package relocations reverted and associated classes stripped away
+ so that camel-quarkus-kudu can use the equivalent quarkus extensions as a replacement</description>
<dependencies>
<dependency>
@@ -59,17 +59,57 @@
</excludes>
</artifactSet>
<relocations>
+ <relocation>
+ <pattern>org.apache.kudu.shaded.com.google</pattern>
+ <shadedPattern>com.google</shadedPattern>
+ </relocation>
+ <relocation>
+ <pattern>org.apache.kudu.shaded.com.sangupta</pattern>
+ <shadedPattern>com.sangupta</shadedPattern>
+ </relocation>
<relocation>
<pattern>org.apache.kudu.shaded.io.netty</pattern>
<shadedPattern>io.netty</shadedPattern>
</relocation>
+ <relocation>
+ <pattern>org.apache.kudu.shaded.io.micrometer</pattern>
+ <shadedPattern>io.micrometer</shadedPattern>
+ </relocation>
</relocations>
<filters>
<filter>
<artifact>org.apache.kudu:kudu-client</artifact>
<excludes>
+ <!--
+ Remove shaded packages from guava, murmur, protobuf-java & redundant checkerframework.
+ Replaced by dependencies on guava, mumur and protobuf-java.
+ -->
+ <exclude>META-INF/proguard/**</exclude>
+ <exclude>META-INF/maven/com.google.*/**</exclude>
+ <exclude>org/apache/kudu/shaded/com/google/**</exclude>
+ <exclude>org/apache/kudu/shaded/com/sangupta/**</exclude>
+ <exclude>org/apache/kudu/shaded/org/checkerframework/**</exclude>
+ <!--
+ Remove shaded netty packages. Replaced by quarkus-netty.
+ -->
+ <exclude>META-INF/io.netty.versions.properties</exclude>
+ <exclude>META-INF/maven/io.netty/**</exclude>
+ <exclude>META-INF/native/**</exclude>
<exclude>META-INF/native-image/**</exclude>
<exclude>org/apache/kudu/shaded/io/netty/**</exclude>
+ <!--
+ Remove shaded packages from micrometer, HdrHistogram & LatencyUtils.
+ Replaced by quarkus-micrometer.
+ -->
+ <exclude>META-INF/micrometer-core.properties</exclude>
+ <exclude>META-INF/NOTICE</exclude>
+ <exclude>META-INF/maven/org.hdrhistogram/**</exclude>
+ <exclude>META-INF/maven/org.latencyutils/**</exclude>
+ <exclude>META-INF/maven/org.jctools/**</exclude>
+ <exclude>META-INF/services/reactor.blockhound.integration.BlockHoundIntegration</exclude>
+ <exclude>org/apache/kudu/shaded/io/micrometer/**</exclude>
+ <exclude>org/apache/kudu/shaded/org/HdrHistogram/**</exclude>
+ <exclude>org/apache/kudu/shaded/org/LatencyUtils/**</exclude>
</excludes>
</filter>
</filters>
diff --git a/extensions/kudu/deployment/pom.xml b/extensions/kudu/deployment/pom.xml
index 477fc3a55f..7e40299b31 100644
--- a/extensions/kudu/deployment/pom.xml
+++ b/extensions/kudu/deployment/pom.xml
@@ -34,6 +34,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core-deployment</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-micrometer-deployment</artifactId>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-netty-deployment</artifactId>
diff --git a/extensions/kudu/runtime/pom.xml b/extensions/kudu/runtime/pom.xml
index 6f50a59939..6df37aad12 100644
--- a/extensions/kudu/runtime/pom.xml
+++ b/extensions/kudu/runtime/pom.xml
@@ -43,17 +43,40 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-micrometer</artifactId>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-netty</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.google.protobuf</groupId>
+ <artifactId>protobuf-java</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.checkerframework</groupId>
+ <artifactId>checker-qual</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.sangupta</groupId>
+ <artifactId>murmur</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-kudu</artifactId>
<exclusions>
+ <!-- replaced by camel-quarkus-kudu-client -->
<exclusion>
<groupId>org.apache.kudu</groupId>
- <artifactId>kudu-client</artifactId><!-- replaced by camel-quarkus-kudu-client -->
+ <artifactId>kudu-client</artifactId>
</exclusion>
</exclusions>
</dependency>
diff --git a/pom.xml b/pom.xml
index 3d564417ac..de2b61e4d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,6 +137,7 @@
<mapstruct.version>${mapstruct-version}</mapstruct.version>
<minio.version>8.2.2</minio.version><!-- @sync io.quarkiverse.minio:quarkus-minio-parent:${quarkiverse-minio.version} prop:minio.version -->
<msal4j.version>1.14.0</msal4j.version><!-- @sync com.azure:azure-identity:${azure-identity.version} dep:com.microsoft.azure:msal4j -->
+ <murmur.version>1.0.0</murmur.version>
<mvel2.version>2.5.1.Final</mvel2.version><!-- @sync org.apache.camel:camel-dependencies:${camel.version} prop:mvel-version -->
<mybatis.version>3.5.15</mybatis.version><!-- @sync io.quarkiverse.mybatis:quarkus-parent:${quarkiverse-mybatis.version} prop:mybatis.version -->
<oak-jackrabbit-api.version>1.48.0</oak-jackrabbit-api.version><!-- @sync org.apache.jackrabbit:jackrabbit-parent:${jackrabbit-version} prop:oak-jackrabbit-api.version.implemented -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index a3cd81ed31..9a48f71a6c 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -6226,6 +6226,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.sangupta</groupId>
+ <artifactId>murmur</artifactId>
+ <version>${murmur.version}</version>
+ </dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
@@ -6571,6 +6576,10 @@
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.apache.yetus</groupId>
+ <artifactId>audience-annotations</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index 877fe35999..9cd9af92e3 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -6149,6 +6149,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.sangupta</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>murmur</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.0.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>com.squareup.okio</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>okio</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -6494,6 +6499,10 @@
<groupId>com.google.code.findbugs</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>jsr305</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</exclusion>
+ <exclusion>
+ <groupId>org.apache.yetus</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>audience-annotations</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 75b73ce676..a7f8286853 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -6149,6 +6149,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.sangupta</groupId>
+ <artifactId>murmur</artifactId>
+ <version>1.0.0</version>
+ </dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
@@ -6434,6 +6439,10 @@
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.apache.yetus</groupId>
+ <artifactId>audience-annotations</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index cd6a195c57..e95fa13f11 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -6149,6 +6149,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.sangupta</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>murmur</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>1.0.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </dependency>
<dependency>
<groupId>com.squareup.okio</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>okio</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -6434,6 +6439,10 @@
<groupId>com.google.code.findbugs</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>jsr305</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</exclusion>
+ <exclusion>
+ <groupId>org.apache.yetus</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>audience-annotations</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
</exclusions>
</dependency>
<dependency>