diff --git a/distribution/server/pom.xml b/distribution/server/pom.xml
index adabddfa31da4..c42b0a137850c 100644
--- a/distribution/server/pom.xml
+++ b/distribution/server/pom.xml
@@ -39,6 +39,19 @@
${project.version}
+
+ ${project.groupId}
+ pulsar-metadata
+ ${project.version}
+
+
+
+ ${project.groupId}
+ jetcd-core-shaded
+ ${project.version}
+ shaded
+
+
${project.groupId}
pulsar-docs-tools
diff --git a/distribution/server/src/assemble/LICENSE.bin.txt b/distribution/server/src/assemble/LICENSE.bin.txt
index 6769df3903719..1a66ab6d70a2f 100644
--- a/distribution/server/src/assemble/LICENSE.bin.txt
+++ b/distribution/server/src/assemble/LICENSE.bin.txt
@@ -292,27 +292,27 @@ The Apache Software License, Version 2.0
- org.apache.commons-commons-lang3-3.11.jar
- org.apache.commons-commons-text-1.10.0.jar
* Netty
- - io.netty-netty-buffer-4.1.108.Final.jar
- - io.netty-netty-codec-4.1.108.Final.jar
- - io.netty-netty-codec-dns-4.1.108.Final.jar
- - io.netty-netty-codec-http-4.1.108.Final.jar
- - io.netty-netty-codec-http2-4.1.108.Final.jar
- - io.netty-netty-codec-socks-4.1.108.Final.jar
- - io.netty-netty-codec-haproxy-4.1.108.Final.jar
- - io.netty-netty-common-4.1.108.Final.jar
- - io.netty-netty-handler-4.1.108.Final.jar
- - io.netty-netty-handler-proxy-4.1.108.Final.jar
- - io.netty-netty-resolver-4.1.108.Final.jar
- - io.netty-netty-resolver-dns-4.1.108.Final.jar
- - io.netty-netty-resolver-dns-classes-macos-4.1.108.Final.jar
- - io.netty-netty-resolver-dns-native-macos-4.1.108.Final-osx-aarch_64.jar
- - io.netty-netty-resolver-dns-native-macos-4.1.108.Final-osx-x86_64.jar
- - io.netty-netty-transport-4.1.108.Final.jar
- - io.netty-netty-transport-classes-epoll-4.1.108.Final.jar
- - io.netty-netty-transport-native-epoll-4.1.108.Final-linux-aarch_64.jar
- - io.netty-netty-transport-native-epoll-4.1.108.Final-linux-x86_64.jar
- - io.netty-netty-transport-native-unix-common-4.1.108.Final.jar
- - io.netty-netty-transport-native-unix-common-4.1.108.Final-linux-x86_64.jar
+ - io.netty-netty-buffer-4.1.111.Final.jar
+ - io.netty-netty-codec-4.1.111.Final.jar
+ - io.netty-netty-codec-dns-4.1.111.Final.jar
+ - io.netty-netty-codec-http-4.1.111.Final.jar
+ - io.netty-netty-codec-http2-4.1.111.Final.jar
+ - io.netty-netty-codec-socks-4.1.111.Final.jar
+ - io.netty-netty-codec-haproxy-4.1.111.Final.jar
+ - io.netty-netty-common-4.1.111.Final.jar
+ - io.netty-netty-handler-4.1.111.Final.jar
+ - io.netty-netty-handler-proxy-4.1.111.Final.jar
+ - io.netty-netty-resolver-4.1.111.Final.jar
+ - io.netty-netty-resolver-dns-4.1.111.Final.jar
+ - io.netty-netty-resolver-dns-classes-macos-4.1.111.Final.jar
+ - io.netty-netty-resolver-dns-native-macos-4.1.111.Final-osx-aarch_64.jar
+ - io.netty-netty-resolver-dns-native-macos-4.1.111.Final-osx-x86_64.jar
+ - io.netty-netty-transport-4.1.111.Final.jar
+ - io.netty-netty-transport-classes-epoll-4.1.111.Final.jar
+ - io.netty-netty-transport-native-epoll-4.1.111.Final-linux-aarch_64.jar
+ - io.netty-netty-transport-native-epoll-4.1.111.Final-linux-x86_64.jar
+ - io.netty-netty-transport-native-unix-common-4.1.111.Final.jar
+ - io.netty-netty-transport-native-unix-common-4.1.111.Final-linux-x86_64.jar
- io.netty-netty-tcnative-boringssl-static-2.0.65.Final.jar
- io.netty-netty-tcnative-boringssl-static-2.0.65.Final-linux-aarch_64.jar
- io.netty-netty-tcnative-boringssl-static-2.0.65.Final-linux-x86_64.jar
@@ -434,7 +434,6 @@ The Apache Software License, Version 2.0
- io.grpc-grpc-auth-1.56.0.jar
- io.grpc-grpc-context-1.56.0.jar
- io.grpc-grpc-core-1.56.0.jar
- - io.grpc-grpc-netty-1.56.0.jar
- io.grpc-grpc-protobuf-1.56.0.jar
- io.grpc-grpc-protobuf-lite-1.56.0.jar
- io.grpc-grpc-stub-1.56.0.jar
@@ -498,7 +497,6 @@ The Apache Software License, Version 2.0
- io.vertx-vertx-core-4.5.8.jar
- io.vertx-vertx-web-4.5.8.jar
- io.vertx-vertx-web-common-4.5.8.jar
- - io.vertx-vertx-grpc-4.5.8.jar
* Apache ZooKeeper
- org.apache.zookeeper-zookeeper-3.9.2.jar
- org.apache.zookeeper-zookeeper-jute-3.9.2.jar
@@ -510,11 +508,7 @@ The Apache Software License, Version 2.0
- com.google.http-client-google-http-client-1.41.0.jar
- com.google.auto.value-auto-value-annotations-1.10.1.jar
- com.google.re2j-re2j-1.7.jar
- * Jetcd
- - io.etcd-jetcd-api-0.7.7.jar
- - io.etcd-jetcd-common-0.7.7.jar
- - io.etcd-jetcd-core-0.7.7.jar
- - io.etcd-jetcd-grpc-0.7.7.jar
+ * Jetcd - shaded
* IPAddress
- com.github.seancfoley-ipaddress-5.5.0.jar
* RxJava
diff --git a/distribution/shell/src/assemble/LICENSE.bin.txt b/distribution/shell/src/assemble/LICENSE.bin.txt
index 5c3b051cfdd70..ff590023ff3a5 100644
--- a/distribution/shell/src/assemble/LICENSE.bin.txt
+++ b/distribution/shell/src/assemble/LICENSE.bin.txt
@@ -347,23 +347,23 @@ The Apache Software License, Version 2.0
- commons-text-1.10.0.jar
- commons-compress-1.26.0.jar
* Netty
- - netty-buffer-4.1.108.Final.jar
- - netty-codec-4.1.108.Final.jar
- - netty-codec-dns-4.1.108.Final.jar
- - netty-codec-http-4.1.108.Final.jar
- - netty-codec-socks-4.1.108.Final.jar
- - netty-codec-haproxy-4.1.108.Final.jar
- - netty-common-4.1.108.Final.jar
- - netty-handler-4.1.108.Final.jar
- - netty-handler-proxy-4.1.108.Final.jar
- - netty-resolver-4.1.108.Final.jar
- - netty-resolver-dns-4.1.108.Final.jar
- - netty-transport-4.1.108.Final.jar
- - netty-transport-classes-epoll-4.1.108.Final.jar
- - netty-transport-native-epoll-4.1.108.Final-linux-aarch_64.jar
- - netty-transport-native-epoll-4.1.108.Final-linux-x86_64.jar
- - netty-transport-native-unix-common-4.1.108.Final.jar
- - netty-transport-native-unix-common-4.1.108.Final-linux-x86_64.jar
+ - netty-buffer-4.1.111.Final.jar
+ - netty-codec-4.1.111.Final.jar
+ - netty-codec-dns-4.1.111.Final.jar
+ - netty-codec-http-4.1.111.Final.jar
+ - netty-codec-socks-4.1.111.Final.jar
+ - netty-codec-haproxy-4.1.111.Final.jar
+ - netty-common-4.1.111.Final.jar
+ - netty-handler-4.1.111.Final.jar
+ - netty-handler-proxy-4.1.111.Final.jar
+ - netty-resolver-4.1.111.Final.jar
+ - netty-resolver-dns-4.1.111.Final.jar
+ - netty-transport-4.1.111.Final.jar
+ - netty-transport-classes-epoll-4.1.111.Final.jar
+ - netty-transport-native-epoll-4.1.111.Final-linux-aarch_64.jar
+ - netty-transport-native-epoll-4.1.111.Final-linux-x86_64.jar
+ - netty-transport-native-unix-common-4.1.111.Final.jar
+ - netty-transport-native-unix-common-4.1.111.Final-linux-x86_64.jar
- netty-tcnative-boringssl-static-2.0.65.Final.jar
- netty-tcnative-boringssl-static-2.0.65.Final-linux-aarch_64.jar
- netty-tcnative-boringssl-static-2.0.65.Final-linux-x86_64.jar
@@ -374,9 +374,9 @@ The Apache Software License, Version 2.0
- netty-incubator-transport-classes-io_uring-0.0.24.Final.jar
- netty-incubator-transport-native-io_uring-0.0.24.Final-linux-aarch_64.jar
- netty-incubator-transport-native-io_uring-0.0.24.Final-linux-x86_64.jar
- - netty-resolver-dns-classes-macos-4.1.108.Final.jar
- - netty-resolver-dns-native-macos-4.1.108.Final-osx-aarch_64.jar
- - netty-resolver-dns-native-macos-4.1.108.Final-osx-x86_64.jar
+ - netty-resolver-dns-classes-macos-4.1.111.Final.jar
+ - netty-resolver-dns-native-macos-4.1.111.Final-osx-aarch_64.jar
+ - netty-resolver-dns-native-macos-4.1.111.Final-osx-x86_64.jar
* Prometheus client
- simpleclient-0.16.0.jar
- simpleclient_log4j2-0.16.0.jar
diff --git a/jetcd-core-shaded/pom.xml b/jetcd-core-shaded/pom.xml
new file mode 100644
index 0000000000000..d8819a1148a21
--- /dev/null
+++ b/jetcd-core-shaded/pom.xml
@@ -0,0 +1,187 @@
+
+
+
+ 4.0.0
+
+ org.apache.pulsar
+ pulsar
+ 3.4.0-SNAPSHOT
+
+
+ jetcd-core-shaded
+ Apache Pulsar :: jetcd-core shaded
+
+
+
+ io.etcd
+ jetcd-core
+
+
+ io.grpc
+ grpc-netty
+
+
+ io.netty
+ *
+
+
+
+
+ io.grpc
+ grpc-netty-shaded
+
+
+
+ dev.failsafe
+ failsafe
+
+
+ io.grpc
+ grpc-protobuf
+
+
+ io.grpc
+ grpc-stub
+
+
+ io.grpc
+ grpc-grpclb
+
+
+ io.grpc
+ grpc-util
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ package
+
+ shade
+
+
+ true
+ true
+ false
+
+
+ io.etcd:*
+ io.vertx:*
+
+
+
+
+
+ io.vertx
+ org.apache.pulsar.jetcd.shaded.io.vertx
+
+
+
+ io.grpc.netty
+ io.grpc.netty.shaded.io.grpc.netty
+
+
+
+ io.netty
+ io.grpc.netty.shaded.io.netty
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+ META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml
+
+
+
+
+
+
+
+ META-INF/maven/${project.groupId}/${project.artifactId}/pom.xml
+ ${project.basedir}/dependency-reduced-pom.xml
+
+
+
+ true
+ shaded
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ attach-shaded-jar
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-shaded.jar
+ jar
+ shaded
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ ${maven-antrun-plugin.version}
+
+
+ unpack-shaded-jar
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 1514b7da13a17..71562619c18d5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,7 +148,7 @@ flexible messaging model and an intuitive client API.
1.1.10.5
4.1.12.1
5.1.0
- 4.1.108.Final
+ 4.1.111.Final
0.0.24.Final
9.4.54.v20240208
2.5.2
@@ -302,6 +302,7 @@ flexible messaging model and an intuitive client API.
2.3.0
3.4.1
3.1.0
+ 3.6.0
1.1.0
1.5.0
3.1.2
@@ -584,6 +585,10 @@ flexible messaging model and an intuitive client API.
jose4j
org.bitbucket.b_c
+
+ io.grpc
+ grpc-netty
+
@@ -1053,12 +1058,51 @@ flexible messaging model and an intuitive client API.
io.etcd
jetcd-core
${jetcd.version}
+
+
+ io.grpc
+ grpc-netty
+
+
-
io.etcd
jetcd-test
${jetcd.version}
+
+
+ io.grpc
+ grpc-netty
+
+
+ io.etcd
+ jetcd-core
+
+
+ io.etcd
+ jetcd-api
+
+
+ io.vertx
+ *
+
+
+
+
+ ${project.groupId}
+ jetcd-core-shaded
+ ${project.version}
+ shaded
+
+
+ io.etcd
+ *
+
+
+ io.vertx
+ *
+
+
@@ -1152,6 +1196,10 @@ flexible messaging model and an intuitive client API.
com.squareup.okio
okio
+
+ io.grpc
+ grpc-netty
+
@@ -2142,6 +2190,11 @@ flexible messaging model and an intuitive client API.
docker-maven-plugin
${docker-maven.version}
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ ${build-helper-maven-plugin.version}
+
@@ -2387,6 +2440,7 @@ flexible messaging model and an intuitive client API.
pulsar-client-messagecrypto-bc
pulsar-metadata
+ jetcd-core-shaded
jclouds-shaded
@@ -2452,7 +2506,7 @@ flexible messaging model and an intuitive client API.
distribution
pulsar-metadata
-
+ jetcd-core-shaded
pulsar-package-management
diff --git a/pulsar-broker/pom.xml b/pulsar-broker/pom.xml
index 73f55710c4f79..20117ed21db06 100644
--- a/pulsar-broker/pom.xml
+++ b/pulsar-broker/pom.xml
@@ -484,6 +484,18 @@
${project.version}
+
+ ${project.groupId}
+ jetcd-core-shaded
+ ${project.version}
+ shaded
+ test
+
+
+ io.grpc
+ grpc-netty-shaded
+ test
+
io.etcd
jetcd-test
diff --git a/pulsar-functions/instance/pom.xml b/pulsar-functions/instance/pom.xml
index 99a87963f477f..160885a8ea4d7 100644
--- a/pulsar-functions/instance/pom.xml
+++ b/pulsar-functions/instance/pom.xml
@@ -101,7 +101,7 @@
io.grpc
- grpc-all
+ *
com.google.protobuf
@@ -110,6 +110,11 @@
+
+ io.grpc
+ grpc-netty-shaded
+
+
io.grpc
grpc-stub
@@ -215,7 +220,7 @@
-
+
diff --git a/pulsar-metadata/pom.xml b/pulsar-metadata/pom.xml
index f2566fac653d7..e4a4dd5ec46ab 100644
--- a/pulsar-metadata/pom.xml
+++ b/pulsar-metadata/pom.xml
@@ -122,10 +122,15 @@
- io.etcd
- jetcd-core
+ ${project.groupId}
+ jetcd-core-shaded
+ ${project.version}
+ shaded
+
+
+ io.grpc
+ grpc-netty-shaded
-
io.etcd
diff --git a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/EtcdMetadataStore.java b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/EtcdMetadataStore.java
index 194b0d6a2f8a8..3937fd712dc9f 100644
--- a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/EtcdMetadataStore.java
+++ b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/impl/EtcdMetadataStore.java
@@ -43,10 +43,10 @@
import io.etcd.jetcd.watch.WatchResponse;
import io.grpc.Status;
import io.grpc.StatusRuntimeException;
-import io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts;
+import io.grpc.netty.shaded.io.netty.handler.ssl.SslContext;
+import io.grpc.netty.shaded.io.netty.handler.ssl.SslProvider;
import io.grpc.stub.StreamObserver;
-import io.netty.handler.ssl.SslContext;
-import io.netty.handler.ssl.SslProvider;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;