You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2022/10/28 16:39:35 UTC

[kudu] branch master updated: [java] use own Netty version for kudu-subprocess

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

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new 2850588c4 [java] use own Netty version for kudu-subprocess
2850588c4 is described below

commit 2850588c43a2b8c7f03e15e3cd0f2a67142d0cbb
Author: Alexey Serbin <al...@apache.org>
AuthorDate: Thu Oct 27 18:02:25 2022 -0700

    [java] use own Netty version for kudu-subprocess
    
    It turned out that transitive dependencies of the kudu-subprocess
    package brought its own version of various io.netty modules into the
    package as a shaded dependency.  Particularly, the dependency chain was:
    
      org.apache.kudu:kudu-subprocess
        org.apache.ranger:ranger-plugins-common
          org.apache.ranger:ranger-plugins-audit
            org.apache.hadoop:hadoop-common
              org.apache.hadoop:hadoop-auth
                org.apache.zookeeper:zookeeper
                  io.netty:netty-handler
    
    This patch addresses the issue.
    
    Change-Id: If5d90feb3ba607f6cfb3ec15f0e3cc2c68eb435d
    Reviewed-on: http://gerrit.cloudera.org:8080/19173
    Reviewed-by: Attila Bukor <ab...@apache.org>
    Tested-by: Alexey Serbin <al...@apache.org>
---
 java/gradle/dependencies.gradle   |  6 ++++++
 java/kudu-subprocess/build.gradle | 15 +++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/java/gradle/dependencies.gradle b/java/gradle/dependencies.gradle
index 9485b636e..713dce82c 100755
--- a/java/gradle/dependencies.gradle
+++ b/java/gradle/dependencies.gradle
@@ -116,6 +116,12 @@ libs += [
     mockitoCore          : "org.mockito:mockito-core:$versions.mockito",
     murmur               : "com.sangupta:murmur:$versions.murmur",
     netty                : "io.netty:netty-all:$versions.netty",
+    nettyBuffer          : "io.netty:netty-buffer:$versions.netty",
+    nettyCommon          : "io.netty:netty-common:$versions.netty",
+    nettyHandler         : "io.netty:netty-handler:$versions.netty",
+    nettyTransport       : "io.netty:netty-transport:$versions.netty",
+    nettyTransportEpoll  : "io.netty:netty-transport-native-epoll:$versions.netty",
+    nettyTransportUnix   : "io.netty:netty-transport-native-unix-common:$versions.netty",
     osdetector           : "com.google.gradle:osdetector-gradle-plugin:$versions.osdetector",
     protobufJava         : "com.google.protobuf:protobuf-java:$versions.protobuf",
     protobufJavaUtil     : "com.google.protobuf:protobuf-java-util:$versions.protobuf",
diff --git a/java/kudu-subprocess/build.gradle b/java/kudu-subprocess/build.gradle
index bef4ead84..1f8745ab4 100644
--- a/java/kudu-subprocess/build.gradle
+++ b/java/kudu-subprocess/build.gradle
@@ -23,6 +23,10 @@ shadowIncludeSlf4j = true
 dependencies {
   compile project(path: ":kudu-proto")
   compile(libs.hadoopCommon) {
+    // Exclude io.netty to ensure we use our own versions.
+    // The dependency on io.netty is a transitive one through the chain
+    // hadoop-common --> hadoop-auth --> zookeeper --> io.netty.netty-xxx
+    exclude group: "io.netty"
     // hadoopCommon and rangerPlugin use different versions of jersey.
     exclude group: "com.sun.jersey"
     // Exclude log4j and slf4j to ensure we use our own versions.
@@ -45,6 +49,17 @@ dependencies {
   compile libs.log4jCompat
   compile libs.log4jSlf4jImpl
 
+  // Compiling exact modules from the io.netty group for hadoop-common:
+  // for some reason, if compiling just the libs.netty umbrella package
+  // (i.e. io.netty:netty-all), hadoop-common still depends on its own
+  // version of io.netty:netty-transport-native-epoll.
+  compile libs.nettyBuffer
+  compile libs.nettyCommon
+  compile libs.nettyHandler
+  compile libs.nettyTransport
+  compile libs.nettyTransportEpoll
+  compile libs.nettyTransportUnix
+
   optional libs.jsr305
   optional libs.yetusAnnotations