You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by ni...@apache.org on 2022/09/19 10:00:11 UTC

[bookkeeper] branch ds-4.14 created (now 99563890aa)

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

nicoloboschi pushed a change to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


      at 99563890aa Check if channel closed before processing read request (#3486)

This branch includes the following new commits:

     new abc82398fe Publish snapshots to DataStax repo
     new eddfc6c100 Refer to DataStax BookKeeper repository
     new 8c0b960bfe Use 'com.datastax.oss' as groupId
     new 9f7f973020 Autorecovery to rereplicate empty ledgers
     new 55c627bce2 minimized version of PR 3149 for BookieAutoRecoveryTest.testEmptyLedgerLosesQuorumEventually
     new 820d3f0049 [maven-release-plugin] prepare release ds-4.14.5.1.0.0
     new 69ee2bfa5f [maven-release-plugin] prepare for next development iteration
     new 11bb11c9a5 [Client] Switch to rely on Netty for Hostname Verification (#3310)
     new eedc321b84 Close journal channel in testJunkEndedJournal (#3307)
     new 06426054ae [maven-release-plugin] prepare release ds-4.14.5.1.0.1
     new 2671264e47 [maven-release-plugin] prepare for next development iteration
     new 4f9d5d9003 Fix the PendingAddOp is not recycled when LedgerHandler closed (#3321)
     new 177067907e  Fix the V2 AddRequest object leak issue (#3323)
     new f260ff4876 Reorder the sequence of the bookkeeper server shutdown (#2888)
     new 49e9247c7b Apply the backpressure changes on the V2 requests (#3324)
     new 5f7ad52f45 Backport BookieBackpressureForV2Test to branch-4.14
     new e12bfc1ed2 [maven-release-plugin] prepare release ds-4.14.5.1.0.2
     new dc4094e0a8 [maven-release-plugin] prepare for next development iteration
     new 1fed2de643 WriteLacResponse should be processed in the same thread as other requ… (#3452)
     new 3ee8d2357c AutoRecovery - Do not call shutdown() on the main ZookKeeper client thread (#3487)
     new 1cb10ce578 Add missed call to onReadRequestFinish() when read request rejected (#3482)
     new 99563890aa Check if channel closed before processing read request (#3486)

The 22 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.



[bookkeeper] 11/22: [maven-release-plugin] prepare for next development iteration

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 2671264e470bea219ecaa15db49df5a6cd8cd185
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Mon Jun 6 10:28:08 2022 +0200

    [maven-release-plugin] prepare for next development iteration
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 4 ++--
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 8845e0227a..06e1245a16 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 85e0e49f8d..b39167128d 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index 842bc6bd8f..ab86b2bbd3 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index b80f92acf4..bb237576dd 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index cc7775d6a6..52bcfb3476 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 620de60b81..07e966fac6 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 9cb7e7a0af..4d28387b75 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index ad13584b88..c530ff107f 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index 75aa881642..3fbf5db7f4 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 48a6e50a09..19d534790a 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.1</version>
+        <version>4.14.5.1.0.2-SNAPSHOT</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index 4946298a2f..f1d0198289 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 88a2ac63a4..2b97433075 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 3c3dea6186..4434caf905 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index 67ddd73e30..f35bcdc0fc 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index 89943d0448..5f6ad7240b 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index 8f50f22857..95a3b7d0e2 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index 679b184c55..3aec155119 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index ffd1b81e7c..7b0ab4b489 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.5.1.0.1</version>
+  <version>4.14.5.1.0.2-SNAPSHOT</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index d5f54afab8..eb97024989 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index 53d0696ec0..e61f84a068 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index a5e687e763..7ec668c1c7 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index 0583cd08a6..59bc459541 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.1</version>
+        <version>4.14.5.1.0.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index 2f3de44c87..db40d8c321 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index d926c2a653..d95d8fa786 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.5.1.0.1</version>
+  <version>4.14.5.1.0.2-SNAPSHOT</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,7 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
-    <tag>ds-4.14.5.1.0.1</tag>
+    <tag>HEAD</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index 6fcf41d619..2379b9b1a0 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index 0b16416198..27b7238a85 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index 523e829f16..1e52f17fcb 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index 2fb3822652..f81f06c2ba 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index 64f3a4cd90..da8ea0d665 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index 500a70e3da..3f5a63041c 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index 3e50071aff..1e2e5e6915 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index d6b54e6aca..67e3233f6e 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index d66ebba700..cd1ea21555 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index 2b5b654a2e..4354875ed0 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index 4392508ece..cb6e6e78cd 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 9c491f2c30..3a343e1c1d 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index e5df07a45e..d906176035 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index 897089977c..3fa45dbc8a 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index 30663d12f8..f14a9c86e0 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index d7cbca5515..8edc56d82c 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index 17246e5fbd..66d80c3173 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index bcc278eda4..0aa3cb6451 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index 00e40425d4..3afac90ad1 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index 55bd5f41a6..c759ccca7c 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index 6d33f4aca2..058a3ef89c 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index 2198a7130f..1f3224f2db 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index ddf83eedee..33b95f9afa 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index 2993316aaa..571e4c2c07 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index ab3a0ffc72..b140e0142b 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index 52208d80a2..59470c9e0b 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index c509ced076..8229d89d00 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index 124117a2c9..9e5fb2aebb 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index 622d664e2c..aca6e287b6 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index d62c2d4b1d..0c251ec810 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index baa84793c4..c83990cf4a 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index 51ac904e04..537219c045 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index ad34677e6f..d857e1d06c 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index 84e2ecdd37..f9ea4c5ad7 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index 21371afe22..0bd36c90ab 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index e9c5744c39..51de72c185 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index 46e268f231..5c58fae27d 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index 6d2d938d7c..27f7f80b11 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index b41335daf4..dc9b21e708 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index 684cf940ab..d6a4c0b688 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index 9cc5bb27b5..fd55e10b81 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index 17677e5897..6dafe86eeb 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index a3efed67bd..8e8673538c 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index b99aab8d21..f2d9eca67b 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index a6bad2dafc..82802e95ae 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index 50b66bc56e..80fb2a92a6 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index d6cd55b9c5..4dfc522c36 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index 03ececc1fa..d014d54211 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index e77d629a18..b6b0d14597 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 80bd8411c5..4cd3b8ad93 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index b79dee25b5..81056dc5a4 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index 44be122cc9..dceba2b791 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index 5ef75601b9..b7ead7fcc8 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index 0be2b3df7b..0e59f04fa0 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index 3885522d43..c71cb769fc 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index 7148898b4e..14abeabf1b 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index 748d7377c6..1293b3381d 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index 0d330c4e39..3f8a605db8 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index 98a759bf26..e6d2db065a 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index bcda3159b4..7a78c7c2d9 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index 5eb97c6770..3c4d63d54a 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index bdf8fb6072..39a98856c9 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.1</version>
+    <version>4.14.5.1.0.2-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 02/22: Refer to DataStax BookKeeper repository

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit eddfc6c1001e634455d48158796fef87f710dc91
Author: Enrico Olivelli <eo...@apache.org>
AuthorDate: Wed Jun 30 07:38:36 2021 +0200

    Refer to DataStax BookKeeper repository
    
    (cherry picked from commit 43697733486a5df7b75e63a9e47dbb77476d2395)
    (cherry picked from commit 8974552ecc5a62b0b17aaba5ad7059483044ac92)
---
 pom.xml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 45ba08654b..bfa8160088 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,10 +37,9 @@
     </license>
   </licenses>
   <scm>
-    <connection>scm:git:https://github.com/apache/bookkeeper.git</connection>
-    <developerConnection>scm:git:https://github.com/apache/bookkeeper.git</developerConnection>
-    <url>https://github.com/apache/bookkeeper</url>
-    <tag>branch-4.14</tag>
+    <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
+    <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
+    <url>https://github.com/datastax/bookkeeper</url>
   </scm>
   <issueManagement>
     <system>JIRA</system>


[bookkeeper] 17/22: [maven-release-plugin] prepare release ds-4.14.5.1.0.2

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit e12bfc1ed2e82e4505ea7db43ad2437c9999aa06
Author: Lari Hotari <lh...@apache.org>
AuthorDate: Tue Aug 9 21:02:07 2022 +0300

    [maven-release-plugin] prepare release ds-4.14.5.1.0.2
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 4 ++--
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 06e1245a16..7dbf330e8e 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index b39167128d..0b2bdb3680 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index ab86b2bbd3..455d1c19dc 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index bb237576dd..82f1f4893c 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index 52bcfb3476..c35b402c75 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 07e966fac6..27a8e4176a 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 4d28387b75..81106437c7 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index c530ff107f..14c6637310 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index 3fbf5db7f4..7dfa56b902 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 19d534790a..1c1d8897af 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.2-SNAPSHOT</version>
+        <version>4.14.5.1.0.2</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index f1d0198289..8453e862d0 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 2b97433075..c8e480652d 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 4434caf905..d1d9e86408 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index f35bcdc0fc..5cd121fa23 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index 5f6ad7240b..faee360047 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index 95a3b7d0e2..87c4b41507 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index 3aec155119..a8b72a632b 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index 7b0ab4b489..65780c5ab6 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.5.1.0.2-SNAPSHOT</version>
+  <version>4.14.5.1.0.2</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index eb97024989..3dec318ae6 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index e61f84a068..e132bc6d33 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index 7ec668c1c7..f95625ab39 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index 59bc459541..139a46b8ac 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.2-SNAPSHOT</version>
+        <version>4.14.5.1.0.2</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index db40d8c321..80af0a5122 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index d95d8fa786..b748033179 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.5.1.0.2-SNAPSHOT</version>
+  <version>4.14.5.1.0.2</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,7 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
-    <tag>HEAD</tag>
+    <tag>ds-4.14.5.1.0.2</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index 2379b9b1a0..1a61d2d0b2 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index 27b7238a85..0cc4d57d39 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index 1e52f17fcb..b0327cb938 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index f81f06c2ba..83ac075da3 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index da8ea0d665..a4e6d4bdd0 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index 3f5a63041c..02d4f60338 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index 1e2e5e6915..7c1e29e88b 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index 67e3233f6e..fbbfe8e7f2 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index cd1ea21555..8a2b322b09 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index 4354875ed0..16494c8968 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index cb6e6e78cd..90db02775e 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 3a343e1c1d..0ab84de6f5 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index d906176035..3bb4e86728 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index 3fa45dbc8a..3a21c7dd6b 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index f14a9c86e0..b7ff610b1d 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index 8edc56d82c..19bf59ed49 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index 66d80c3173..70408aba94 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index 0aa3cb6451..da47636b9b 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index 3afac90ad1..d534f985fd 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index c759ccca7c..d3608975e4 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index 058a3ef89c..f277182a80 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index 1f3224f2db..851ca75aa1 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index 33b95f9afa..16579f7c31 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index 571e4c2c07..abb61312c5 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index b140e0142b..084a8e811a 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index 59470c9e0b..7a38b48ea9 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index 8229d89d00..0af5dc3207 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index 9e5fb2aebb..16ed510718 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index aca6e287b6..8632764a4d 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index 0c251ec810..16e4be2628 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index c83990cf4a..273a843f99 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index 537219c045..e376453bff 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index d857e1d06c..7ed2caf131 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index f9ea4c5ad7..ff9960adaa 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index 0bd36c90ab..4056666a13 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index 51de72c185..cfeba28150 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index 5c58fae27d..83d0fc713a 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index 27f7f80b11..b913b1573f 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index dc9b21e708..26c651d5d5 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index d6a4c0b688..b6b23b260b 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index fd55e10b81..8c47d2fc82 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index 6dafe86eeb..7cc0f10adf 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index 8e8673538c..d8858b27a6 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index f2d9eca67b..11bbbfbb19 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index 82802e95ae..083ce244de 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index 80fb2a92a6..04c1da426a 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index 4dfc522c36..af3090bc95 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index d014d54211..5e76818aaa 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index b6b0d14597..a46399628c 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 4cd3b8ad93..8a3664f083 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index 81056dc5a4..f1f39a2343 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index dceba2b791..633b2dafc1 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index b7ead7fcc8..9644af9581 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index 0e59f04fa0..3b5bf172aa 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index c71cb769fc..28c3058c9a 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index 14abeabf1b..3d0aeaf9f6 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index 1293b3381d..cbe5259ba5 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index 3f8a605db8..18841192e6 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index e6d2db065a..99c3625522 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index 7a78c7c2d9..aed4632b24 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index 3c4d63d54a..3e334b7ac9 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index 39a98856c9..5efea24ed5 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.2-SNAPSHOT</version>
+    <version>4.14.5.1.0.2</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 15/22: Apply the backpressure changes on the V2 requests (#3324)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 49e9247c7b2e26f6df3d7f78d4fb26c2556bdd63
Author: Yong Zhang <zh...@gmail.com>
AuthorDate: Thu Jun 16 08:17:19 2022 +0800

    Apply the backpressure changes on the V2 requests (#3324)
    
    ---
    
    *Motivation*
    
    If one bookie is slow (not down, just slow), the BK client
    will the acks to the user that the entries are written after
    the first 2 acks. In the meantime, it will keep waiting for
    the 3rd bookie to respond. If the bookie responds within the
    timeout, the entries can now be dropped from memory, otherwise
    the write will timeout internally and it will get replayed
    to a new bookie.
    
    In the V3 request, we have [server-side backpressure](https://github.com/apache/bookkeeper/pull/1410)
    to impact the client-side behaviors. We should apply the same
    changes to the V2 request. That would help this [issue](https://github.com/apache/pulsar/issues/14861)
    to be resolved.
    
    *Modification*
    
    - Apply the change https://github.com/apache/bookkeeper/pull/1410 to V2 protocol
    
    Descriptions of the changes in this PR:
    
    (cherry picked from commit 62400bd959b781fafa9471915c0cc7133a89dee7)
    (cherry picked from commit b025f7b7a34dbf9ec450007d0acfbc7d6d9793c8)
---
 .../bookkeeper/proto/BookieRequestProcessor.java   |  2 +-
 .../bookkeeper/proto/PacketProcessorBase.java      | 56 ++++++++++++++++++++++
 .../bookkeeper/proto/ReadEntryProcessor.java       |  7 +--
 .../bookkeeper/proto/WriteEntryProcessor.java      |  7 +--
 .../proto/BookieBackpressureForV2Test.java         | 36 ++++++++++++++
 .../bookkeeper/proto/WriteEntryProcessorTest.java  |  1 +
 6 files changed, 100 insertions(+), 9 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
index 902e2c1b41..2223274882 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
@@ -638,7 +638,7 @@ public class BookieRequestProcessor implements RequestProcessor {
                             r.entryId);
                 }
 
-                write.sendResponse(
+                write.sendWriteReqResponse(
                     BookieProtocol.ETOOMANYREQUESTS,
                     ResponseBuilder.buildErrorResponse(BookieProtocol.ETOOMANYREQUESTS, r),
                     requestStats.getAddRequestStats());
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
index d416b9f141..91f054c005 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
@@ -25,6 +25,7 @@ import org.apache.bookkeeper.proto.BookieProtocol.Request;
 import org.apache.bookkeeper.stats.OpStatsLogger;
 import org.apache.bookkeeper.util.MathUtils;
 import org.apache.bookkeeper.util.SafeRunnable;
+import org.apache.bookkeeper.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -65,7 +66,56 @@ abstract class PacketProcessorBase<T extends Request> extends SafeRunnable {
         return true;
     }
 
+    protected void sendWriteReqResponse(int rc, Object response, OpStatsLogger statsLogger) {
+        sendResponse(rc, response, statsLogger);
+        requestProcessor.onAddRequestFinish();
+    }
+
+    protected void sendReadReqResponse(int rc, Object response, OpStatsLogger statsLogger, boolean throttle) {
+        if (throttle) {
+            sendResponseAndWait(rc, response, statsLogger);
+        } else {
+            sendResponse(rc, response, statsLogger);
+        }
+        requestProcessor.onReadRequestFinish();
+    }
+
     protected void sendResponse(int rc, Object response, OpStatsLogger statsLogger) {
+        final long writeNanos = MathUtils.nowInNano();
+
+        final long timeOut = requestProcessor.getWaitTimeoutOnBackpressureMillis();
+        if (timeOut >= 0 && !channel.isWritable()) {
+            if (!requestProcessor.isBlacklisted(channel)) {
+                synchronized (channel) {
+                    if (!channel.isWritable() && !requestProcessor.isBlacklisted(channel)) {
+                        final long waitUntilNanos = writeNanos + TimeUnit.MILLISECONDS.toNanos(timeOut);
+                        while (!channel.isWritable() && MathUtils.nowInNano() < waitUntilNanos) {
+                            try {
+                                TimeUnit.MILLISECONDS.sleep(1);
+                            } catch (InterruptedException e) {
+                                break;
+                            }
+                        }
+                        if (!channel.isWritable()) {
+                            requestProcessor.blacklistChannel(channel);
+                            requestProcessor.handleNonWritableChannel(channel);
+                        }
+                    }
+                }
+            }
+
+            if (!channel.isWritable()) {
+                LOGGER.warn("cannot write response to non-writable channel {} for request {}", channel,
+                    StringUtils.requestToString(request));
+                requestProcessor.getRequestStats().getChannelWriteStats()
+                    .registerFailedEvent(MathUtils.elapsedNanos(writeNanos), TimeUnit.NANOSECONDS);
+                statsLogger.registerFailedEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
+                return;
+            } else {
+                requestProcessor.invalidateBlacklist(channel);
+            }
+        }
+
         if (channel.isActive()) {
             channel.writeAndFlush(response, channel.voidPromise());
         } else {
@@ -106,6 +156,12 @@ abstract class PacketProcessorBase<T extends Request> extends SafeRunnable {
             sendResponse(BookieProtocol.EBADVERSION,
                          ResponseBuilder.buildErrorResponse(BookieProtocol.EBADVERSION, request),
                          requestProcessor.getRequestStats().getReadRequestStats());
+            if (request instanceof BookieProtocol.ReadRequest) {
+                requestProcessor.onReadRequestFinish();
+            }
+            if (request instanceof BookieProtocol.AddRequest) {
+                requestProcessor.onAddRequestFinish();
+            }
             return;
         }
         processPacket();
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
index a760383b8d..60de0440c1 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
@@ -56,6 +56,7 @@ class ReadEntryProcessor extends PacketProcessorBase<ReadRequest> {
         rep.init(request, channel, requestProcessor);
         rep.fenceThreadPool = fenceThreadPool;
         rep.throttleReadResponses = throttleReadResponses;
+        requestProcessor.onReadRequestStart(channel);
         return rep;
     }
 
@@ -133,11 +134,7 @@ class ReadEntryProcessor extends PacketProcessorBase<ReadRequest> {
             response = ResponseBuilder.buildErrorResponse(errorCode, request);
         }
 
-        if (throttleReadResponses) {
-            sendResponseAndWait(errorCode, response, stats.getReadRequestStats());
-        } else {
-            sendResponse(errorCode, response, stats.getReadRequestStats());
-        }
+        sendReadReqResponse(errorCode, response, stats.getReadRequestStats(), throttleReadResponses);
         recycle();
     }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
index a61e0d5024..a4340bc998 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/WriteEntryProcessor.java
@@ -53,6 +53,7 @@ class WriteEntryProcessor extends PacketProcessorBase<ParsedAddRequest> implemen
                                              BookieRequestProcessor requestProcessor) {
         WriteEntryProcessor wep = RECYCLER.get();
         wep.init(request, channel, requestProcessor);
+        requestProcessor.onAddRequestStart(channel);
         return wep;
     }
 
@@ -62,7 +63,7 @@ class WriteEntryProcessor extends PacketProcessorBase<ParsedAddRequest> implemen
             && !(request.isHighPriority() && requestProcessor.getBookie().isAvailableForHighPriorityWrites())) {
             LOG.warn("BookieServer is running in readonly mode,"
                     + " so rejecting the request from the client!");
-            sendResponse(BookieProtocol.EREADONLY,
+            sendWriteReqResponse(BookieProtocol.EREADONLY,
                          ResponseBuilder.buildErrorResponse(BookieProtocol.EREADONLY, request),
                          requestProcessor.getRequestStats().getAddRequestStats());
             request.release();
@@ -107,7 +108,7 @@ class WriteEntryProcessor extends PacketProcessorBase<ParsedAddRequest> implemen
         if (rc != BookieProtocol.EOK) {
             requestProcessor.getRequestStats().getAddEntryStats()
                 .registerFailedEvent(MathUtils.elapsedNanos(startTimeNanos), TimeUnit.NANOSECONDS);
-            sendResponse(rc,
+            sendWriteReqResponse(rc,
                          ResponseBuilder.buildErrorResponse(rc, request),
                          requestProcessor.getRequestStats().getAddRequestStats());
             request.recycle();
@@ -124,7 +125,7 @@ class WriteEntryProcessor extends PacketProcessorBase<ParsedAddRequest> implemen
             requestProcessor.getRequestStats().getAddEntryStats()
                 .registerFailedEvent(MathUtils.elapsedNanos(startTimeNanos), TimeUnit.NANOSECONDS);
         }
-        sendResponse(rc,
+        sendWriteReqResponse(rc,
                      ResponseBuilder.buildAddResponse(request),
                      requestProcessor.getRequestStats().getAddRequestStats());
         request.recycle();
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java
new file mode 100644
index 0000000000..775844d05e
--- /dev/null
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java
@@ -0,0 +1,36 @@
+/**
+ * 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.bookkeeper.proto;
+
+import org.junit.Before;
+
+/**
+ * Tests for bckpressure handling on the server side with V2 protocol.
+ */
+public class BookieBackpressureForV2Test extends BookieBackpressureTest {
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        baseClientConf.setUseV2WireProtocol(true);
+        // the backpressure will bloc the read response, disable it to let it use backpressure mechanism
+        confByIndex(0).setReadWorkerThreadsThrottlingEnabled(false);
+    }
+}
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
index 27a4306a6e..a69245d4a9 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
@@ -69,6 +69,7 @@ public class WriteEntryProcessorTest {
         when(requestProcessor.getBookie()).thenReturn(bookie);
         when(requestProcessor.getRequestStats()).thenReturn(new RequestStats(NullStatsLogger.INSTANCE));
         when(channel.isActive()).thenReturn(true);
+        when(channel.isWritable()).thenReturn(true);
         processor = WriteEntryProcessor.create(
             request,
             channel,


[bookkeeper] 04/22: Autorecovery to rereplicate empty ledgers

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 9f7f97302021f14bae2abde8e8198b4e95740325
Author: Andrey Yegorov <an...@datastax.com>
AuthorDate: Thu Apr 21 21:01:14 2022 -0700

    Autorecovery to rereplicate empty ledgers
    
    (cherry picked from commit 58f20e6d05028b52c7d6350e3113004f6f78cca2)
---
 .../apache/bookkeeper/client/BookKeeperAdmin.java  |   2 +-
 .../apache/bookkeeper/client/LedgerChecker.java    |   9 +-
 .../bookkeeper/client/BookieDecommissionTest.java  | 105 +++++++++++++++++++--
 .../bookkeeper/client/TestLedgerChecker.java       |  24 ++---
 .../replication/BookieAutoRecoveryTest.java        |   1 +
 5 files changed, 116 insertions(+), 25 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
index efa5ad834a..e2d59e6d2b 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/BookKeeperAdmin.java
@@ -1635,7 +1635,7 @@ public class BookKeeperAdmin implements AutoCloseable {
                 LOG.debug("Ledger: {} has been deleted", ledgerId);
                 return false;
             } else {
-                LOG.error("Got exception while trying to read LedgerMeatadata of " + ledgerId, e);
+                LOG.error("Got exception while trying to read LedgerMetadata of " + ledgerId, e);
                 throw new RuntimeException(e);
             }
         }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerChecker.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerChecker.java
index f04ce245cb..68cd1065a6 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerChecker.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerChecker.java
@@ -39,7 +39,6 @@ import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 /**
  * A utility class to check the complete ledger and finds the UnderReplicated fragments if any.
  *
@@ -202,7 +201,13 @@ public class LedgerChecker {
             if (lastStored != LedgerHandle.INVALID_ENTRY_ID) {
                 throw new InvalidFragmentException();
             }
-            cb.operationComplete(BKException.Code.OK, fragment);
+
+            if (bookieWatcher.isBookieUnavailable(fragment.getAddress(bookieIndex))) {
+                // fragment is on this bookie, but already know it's unavailable, so skip the call
+                cb.operationComplete(BKException.Code.BookieHandleNotAvailableException, fragment);
+            } else {
+                cb.operationComplete(BKException.Code.OK, fragment);
+            }
         } else if (bookieWatcher.isBookieUnavailable(fragment.getAddress(bookieIndex))) {
             // fragment is on this bookie, but already know it's unavailable, so skip the call
             cb.operationComplete(BKException.Code.BookieHandleNotAvailableException, fragment);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieDecommissionTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieDecommissionTest.java
index 1fddabbb89..a66755c4c1 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieDecommissionTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieDecommissionTest.java
@@ -19,10 +19,11 @@
 package org.apache.bookkeeper.client;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.fail;
-
 import java.util.Iterator;
-
+import java.util.LinkedList;
+import java.util.List;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.bookkeeper.bookie.Bookie;
 import org.apache.bookkeeper.client.BKException.BKIllegalOpException;
@@ -31,6 +32,8 @@ import org.apache.bookkeeper.common.testing.annotations.FlakyTest;
 import org.apache.bookkeeper.conf.ServerConfiguration;
 import org.apache.bookkeeper.meta.UnderreplicatedLedger;
 import org.apache.bookkeeper.meta.ZkLedgerUnderreplicationManager;
+import org.apache.bookkeeper.net.BookieId;
+import org.apache.bookkeeper.proto.BookieServer;
 import org.apache.bookkeeper.test.BookKeeperClusterTestCase;
 import org.junit.Test;
 
@@ -46,19 +49,23 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
 
     public BookieDecommissionTest() {
         super(NUM_OF_BOOKIES, 480);
-        baseConf.setOpenLedgerRereplicationGracePeriod(String.valueOf(30000));
+        baseConf.setOpenLedgerRereplicationGracePeriod(String.valueOf(1000));
         setAutoRecoveryEnabled(true);
     }
 
     @FlakyTest("https://github.com/apache/bookkeeper/issues/502")
+    @Test
     public void testDecommissionBookie() throws Exception {
         ZkLedgerUnderreplicationManager urLedgerMgr = new ZkLedgerUnderreplicationManager(baseClientConf, zkc);
         BookKeeperAdmin bkAdmin = new BookKeeperAdmin(zkUtil.getZooKeeperConnectString());
 
+        List<Long> ledgerIds = new LinkedList<>();
+
         int numOfLedgers = 2 * NUM_OF_BOOKIES;
         int numOfEntries = 2 * NUM_OF_BOOKIES;
         for (int i = 0; i < numOfLedgers; i++) {
             LedgerHandle lh = bkc.createLedger(3, 2, digestType, PASSWORD.getBytes());
+            ledgerIds.add(lh.getId());
             for (int j = 0; j < numOfEntries; j++) {
                 lh.addEntry("entry".getBytes());
             }
@@ -69,6 +76,7 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
          */
         for (int i = 0; i < numOfLedgers; i++) {
             LedgerHandle emptylh = bkc.createLedger(3, 2, digestType, PASSWORD.getBytes());
+            ledgerIds.add(emptylh.getId());
             emptylh.close();
         }
 
@@ -77,7 +85,7 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
              * if we try to call decommissionBookie for a bookie which is not
              * shutdown, then it should throw BKIllegalOpException
              */
-            bkAdmin.decommissionBookie(bs.get(0).getBookieId());
+            bkAdmin.decommissionBookie(getBookie(0));
             fail("Expected BKIllegalOpException because that bookie is not shutdown yet");
         } catch (BKIllegalOpException bkioexc) {
             // expected IllegalException
@@ -90,7 +98,7 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
          */
         bkAdmin.decommissionBookie(Bookie.getBookieId(killedBookieConf));
         bkAdmin.triggerAudit();
-        Thread.sleep(500);
+        Thread.sleep(5000);
         Iterator<UnderreplicatedLedger> ledgersToRereplicate = urLedgerMgr.listLedgersToRereplicate(null);
         if (ledgersToRereplicate.hasNext()) {
             while (ledgersToRereplicate.hasNext()) {
@@ -103,7 +111,7 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
         killedBookieConf = killBookie(0);
         bkAdmin.decommissionBookie(Bookie.getBookieId(killedBookieConf));
         bkAdmin.triggerAudit();
-        Thread.sleep(500);
+        Thread.sleep(5000);
         ledgersToRereplicate = urLedgerMgr.listLedgersToRereplicate(null);
         if (ledgersToRereplicate.hasNext()) {
             while (ledgersToRereplicate.hasNext()) {
@@ -113,6 +121,10 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
             fail("There are not supposed to be any underreplicatedledgers");
         }
         bkAdmin.close();
+
+        for (Long id: ledgerIds) {
+            verifyNoFragmentsOnBookie(id, Bookie.getBookieId(killedBookieConf));
+        }
     }
 
     @Test
@@ -132,11 +144,16 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
             lh4.addEntry(j, "data".getBytes());
         }
 
+        // avoiding autorecovery fencing the ledger
+        stopReplicationService();
+
         startNewBookie();
 
         assertEquals("Number of Available Bookies", NUM_OF_BOOKIES + 1, bkAdmin.getAvailableBookies().size());
 
-        ServerConfiguration killedBookieConf = killBookie(0);
+        BookieId killedBookieId = getBookie(0);
+        log.warn("Killing bookie {}", killedBookieId);
+        killBookie(0);
 
         /*
          * since one of the bookie is killed, ensemble change happens when next
@@ -153,17 +170,18 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
          */
         lh1.close();
         lh2.close();
+        startReplicationService();
 
         /*
          * If the last fragment of the ledger is underreplicated and if the
          * ledger is not closed then it will remain underreplicated for
-         * openLedgerRereplicationGracePeriod (by default 30 secs). For more
+         * openLedgerRereplicationGracePeriod (by default 30 secs, 1 in the test). For more
          * info. Check BOOKKEEPER-237 and BOOKKEEPER-325. But later
          * ReplicationWorker will fence the ledger.
          */
-        bkAdmin.decommissionBookie(Bookie.getBookieId(killedBookieConf));
+        bkAdmin.decommissionBookie(killedBookieId);
         bkAdmin.triggerAudit();
-        Thread.sleep(500);
+        Thread.sleep(5000);
         Iterator<UnderreplicatedLedger> ledgersToRereplicate = urLedgerMgr.listLedgersToRereplicate(null);
         if (ledgersToRereplicate.hasNext()) {
             while (ledgersToRereplicate.hasNext()) {
@@ -173,6 +191,73 @@ public class BookieDecommissionTest extends BookKeeperClusterTestCase {
             fail("There are not supposed to be any underreplicatedledgers");
         }
         bkAdmin.close();
+
+        verifyNoFragmentsOnBookie(1L, killedBookieId);
+        verifyNoFragmentsOnBookie(2L, killedBookieId);
+        verifyNoFragmentsOnBookie(3L, killedBookieId);
+        verifyNoFragmentsOnBookie(4L, killedBookieId);
+    }
+
+    @Test
+    public void testDecommissionForEmptyLedgers() throws Exception {
+        ZkLedgerUnderreplicationManager urLedgerMgr = new ZkLedgerUnderreplicationManager(baseClientConf, zkc);
+        BookKeeperAdmin bkAdmin = new BookKeeperAdmin(zkUtil.getZooKeeperConnectString());
+
+        LedgerHandle lh1 = bkc.createLedgerAdv(1L, numBookies, numBookies - 1, numBookies - 1,
+                digestType, PASSWORD.getBytes(), null);
+        LedgerHandle lh2 = bkc.createLedgerAdv(2L, numBookies, numBookies - 1, numBookies - 1,
+                digestType, PASSWORD.getBytes(), null);
+        LedgerHandle lh3 = bkc.createLedgerAdv(3L, numBookies, numBookies - 1, numBookies - 1,
+                digestType, PASSWORD.getBytes(), null);
+        LedgerHandle lh4 = bkc.createLedgerAdv(4L, numBookies, numBookies - 1, numBookies - 1,
+                digestType, PASSWORD.getBytes(), null);
+
+        lh1.close();
+        lh2.close();
+
+        startNewBookie();
+
+        assertEquals("Number of Available Bookies", NUM_OF_BOOKIES + 1, bkAdmin.getAvailableBookies().size());
+
+        BookieId killedBookieId = getBookie(0);
+        log.warn("Killing bookie {}", killedBookieId);
+        killBookie(0);
+        assertEquals("Number of Available Bookies", NUM_OF_BOOKIES, bkAdmin.getAvailableBookies().size());
+
+        bkAdmin.decommissionBookie(killedBookieId);
+        bkAdmin.triggerAudit();
+        Thread.sleep(5000);
+        Iterator<UnderreplicatedLedger> ledgersToRereplicate = urLedgerMgr.listLedgersToRereplicate(null);
+        if (ledgersToRereplicate.hasNext()) {
+            while (ledgersToRereplicate.hasNext()) {
+                long ledgerId = ledgersToRereplicate.next().getLedgerId();
+                log.error("Ledger: {} is underreplicated which is not expected. {}",
+                        ledgerId, ledgersToRereplicate.next().getReplicaList());
+            }
+            fail("There are not supposed to be any underreplicatedledgers");
+        }
+        bkAdmin.close();
+
+        verifyNoFragmentsOnBookie(1L, killedBookieId);
+        verifyNoFragmentsOnBookie(2L, killedBookieId);
+        verifyNoFragmentsOnBookie(3L, killedBookieId);
+        verifyNoFragmentsOnBookie(4L, killedBookieId);
+
+        lh3.close();
+        lh4.close();
+    }
+
+    private void verifyNoFragmentsOnBookie(long ledgerId, BookieId bookieId) throws BKException, InterruptedException {
+        LedgerHandle lh = bkc.openLedgerNoRecovery(ledgerId, digestType, PASSWORD.getBytes());
+        log.error("Ledger {} metadata: {}", ledgerId, lh.getLedgerMetadata());
+
+        lh.getLedgerMetadata().getAllEnsembles().forEach((num, bookies) -> {
+            bookies.forEach(id -> {
+                assertNotEquals(bookieId, id);
+            });
+        });
+
+        lh.close();
     }
 
 }
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerChecker.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerChecker.java
index 9da4cb3fd7..d78d1599f9 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerChecker.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestLedgerChecker.java
@@ -169,7 +169,7 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
             LOG.info("unreplicated fragment: {}", r);
         }
 
-        assertEquals("Should not have any missing fragment", 0, result.size());
+        assertEquals("Empty fragment should be considered missing", 1, result.size());
     }
 
     /**
@@ -203,7 +203,7 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
             LOG.info("unreplicated fragment: {}", r);
         }
 
-        assertEquals("There should be 1 fragments", 1, result.size());
+        assertEquals("Empty fragment should be considered missing", 2, result.size());
         assertEquals("There should be 2 failed bookies in the fragment",
                 2, result.iterator().next().getBookiesIndexes().size());
     }
@@ -314,8 +314,8 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
         Set<LedgerFragment> result = getUnderReplicatedFragments(lh);
         assertNotNull("Result shouldn't be null", result);
         assertEquals("There should be 1 fragments.", 1, result.size());
-        assertEquals("There should be 2 failed bookies in the fragment",
-                2, result.iterator().next().getBookiesIndexes().size());
+        assertEquals("There should be 3 failed bookies in the fragment",
+                3, result.iterator().next().getBookiesIndexes().size());
     }
 
     /**
@@ -421,8 +421,8 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
 
         Set<LedgerFragment> result = getUnderReplicatedFragments(lh1);
         assertNotNull("Result shouldn't be null", result);
-        assertEquals("There should be 0 fragment. But returned fragments are "
-                + result, 0, result.size());
+        assertEquals("Empty fragment should be considered missing"
+                + result, 1, result.size());
     }
 
     /**
@@ -450,8 +450,8 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
 
         Set<LedgerFragment> result = getUnderReplicatedFragments(lh1);
         assertNotNull("Result shouldn't be null", result);
-        assertEquals("There should be 0 fragment. But returned fragments are "
-                + result, 0, result.size());
+        assertEquals("Empty fragment should be considered missing"
+                + result, 1, result.size());
         lh1.close();
 
         // kill bookie 1
@@ -469,8 +469,8 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
         assertNotNull("Result shouldn't be null", result);
         assertEquals("There should be 1 fragment. But returned fragments are "
                 + result, 1, result.size());
-        assertEquals("There should be 1 failed bookies in the fragment",
-                1, result.iterator().next().getBookiesIndexes().size());
+        assertEquals("There should be 2 failed bookies in the fragment",
+                2, result.iterator().next().getBookiesIndexes().size());
         lh1.close();
 
         // kill bookie 0
@@ -488,8 +488,8 @@ public class TestLedgerChecker extends BookKeeperClusterTestCase {
         assertNotNull("Result shouldn't be null", result);
         assertEquals("There should be 1 fragment. But returned fragments are "
                 + result, 1, result.size());
-        assertEquals("There should be 2 failed bookies in the fragment",
-                2, result.iterator().next().getBookiesIndexes().size());
+        assertEquals("There should be 3 failed bookies in the fragment",
+                3, result.iterator().next().getBookiesIndexes().size());
         lh1.close();
     }
 
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
index eb00dc14c2..2ae129bec3 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
@@ -383,6 +383,7 @@ public class BookieAutoRecoveryTest extends BookKeeperClusterTestCase {
         LOG.info("Killing last bookie, {}, in ensemble {}", replicaToKill,
                  lh.getLedgerMetadata().getAllEnsembles().get(0L));
         killBookie(replicaToKill);
+        startNewBookie();
 
         getAuditor(10, TimeUnit.SECONDS).submitAuditTask().get(); // ensure auditor runs
 


[bookkeeper] 09/22: Close journal channel in testJunkEndedJournal (#3307)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit eedc321b8426e592809c6869a023da6c3ff10a5e
Author: ZhangJian He <sh...@gmail.com>
AuthorDate: Mon Jun 6 13:41:47 2022 +0800

    Close journal channel in testJunkEndedJournal (#3307)
    
    (cherry picked from commit d3229c5cdb73c53de86d6e4b5a44a9eea9a5852d)
    (cherry picked from commit 7e4f1eeaa7909e47e7a2c5cc1fc7bfad87cf3b29)
---
 .../src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java    | 1 +
 1 file changed, 1 insertion(+)

diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
index 88f2db73b8..04b2138031 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
@@ -537,6 +537,7 @@ public class BookieJournalTest {
         JournalChannel jc = writeV2Journal(Bookie.getCurrentDirectory(journalDir), 0);
         jc.getBufferedChannel().write(Unpooled.wrappedBuffer("JunkJunkJunk".getBytes()));
         jc.getBufferedChannel().flushAndForceWrite(false);
+        jc.close();
 
         writeIndexFileForLedger(ledgerDir, 1, "testPasswd".getBytes());
 


[bookkeeper] 07/22: [maven-release-plugin] prepare for next development iteration

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 69ee2bfa5f01303d7c08bdd1b9b145e5b435dec0
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Thu Apr 28 15:21:29 2022 +0200

    [maven-release-plugin] prepare for next development iteration
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 4 ++--
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 93b480e51e..d778f4e1ff 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 5d5d15046f..58fd0d0645 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index e3e2992deb..1396cd7d3d 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index 6e0cc42077..2f08f94d37 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index a72b17c8d6..354b8817fd 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 50fa444c49..2c7b377159 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 339908a2d9..3b11a078f0 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index 370e8c5cab..ab5cf5d4f7 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index eb3bf81a27..e3be3fad85 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 88d32738b8..3bac1c9803 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.0</version>
+        <version>4.14.5.1.0.1-SNAPSHOT</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index cbb4f642fb..6d62d652a7 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 773292c81d..956f75f441 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 675fc01fc1..0956ae0ace 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index c0ea39f1ff..fbe795c396 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index 61f0f1484c..58f6ba9cb5 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index 038ef2453f..b27a660d78 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index d5301aa713..907f93c1df 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index 6b7c9c626b..48d40ad16b 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.5.1.0.0</version>
+  <version>4.14.5.1.0.1-SNAPSHOT</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index 138b2228b4..61f8cbf1a8 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index 999c1efcfb..0b79f1fcf6 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index 8d8fd063bf..37bd88d69c 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index 2d38b07b18..bb799b01a3 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.0</version>
+        <version>4.14.5.1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index 3dca680248..052c594c4c 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index 3809181252..5caab47eba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.5.1.0.0</version>
+  <version>4.14.5.1.0.1-SNAPSHOT</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,7 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
-    <tag>ds-4.14.5.1.0.0</tag>
+    <tag>HEAD</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index 2049fd27ee..9ce702e547 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index d767d3618d..109dc97ada 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index 1fb115ec65..bccde751f7 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index 49dc2e8307..99d6f69133 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index 3814a201d8..053a6dd600 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index f8db45f0bb..6d22235696 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index 1a7ecf2099..eda46895e8 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index 24ba1cefd9..f7e892a2ea 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index 0033034494..67ef84c401 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index ced183107f..0dc894aa18 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index a9c77a1f41..825372e688 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 3d8b935d24..3f291fca57 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index b03c43959a..3c1945bd89 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index 05e40848ea..94273f45e5 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index 5fa7cc1ad8..787695a42a 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index a6f2588e77..ae8ee0b851 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index 20df9ee7d5..bf465e94a9 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index 0392faf2a2..00c9286498 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index b8e1246856..46b05b056d 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index 4d2c8d82db..6954c64985 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index e23a24b1be..ab95a0ed3f 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index 289cd2e80a..04e501882c 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index 8b6e12b003..e6e5acffde 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index 41b77e9403..107646147a 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index 0bed5849ba..260fc65a1c 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index 501768a68f..a4b2c2fd60 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index 181887a95f..60af30a51b 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index fc33489873..ae296d7575 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index 0ed73016f0..242e37feda 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index 0959b4c55a..f3e6d5ffaa 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index 268944ca65..a02a1627ea 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index cf6063213a..b8b09b905e 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index e880694dae..f11871c131 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index fd334e9863..ac2f7c9c1c 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index ecd27924a0..34445a0c8a 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index d6dbed6b00..c082e555ff 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index 7e616499a9..f26e83fbad 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index 3c87fe3875..9f8147525d 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index 604746d58e..8926591f19 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index c970638970..eae155c547 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index 862deecb03..d5daa1e669 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index a0bcf383c3..2527e357dc 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index 10dd6de4f6..8412de2d1f 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index 56c749b043..45954a0812 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index 172063e305..a09c02a395 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index 6b2a1fc5dc..d3ae29e1b7 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index da0231fa48..626093cab8 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index c8607ee7b8..4374e0d551 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index 05657e11f5..b7c2972ec5 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 2f4aeb9105..31dc372384 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index 2deed7c86a..a8ca227810 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index 65339d7a26..12711153b2 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index 9aace89dbb..ab486e4f7c 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index f92cdfa2ae..07ca8a2af3 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index a40497a3e3..fdc6ec5451 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index 32a42df662..a0533a410c 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index 2dc69ee1f1..1020016599 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index a24d4d76d3..187ce0fc1f 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index 0e1c244f3e..7713bcf9f0 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index c1822a0e9f..f52cdb0c1b 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index 1553971e34..f3f75ff5a4 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index a62ecf1175..05db93482c 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.0</version>
+    <version>4.14.5.1.0.1-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 06/22: [maven-release-plugin] prepare release ds-4.14.5.1.0.0

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 820d3f00494dba7754415427cba9935d043a3f58
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Thu Apr 28 15:15:05 2022 +0200

    [maven-release-plugin] prepare release ds-4.14.5.1.0.0
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 3 ++-
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 87 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 8e3e1ce218..93b480e51e 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 618ab27f57..5d5d15046f 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index 1af464b0ac..e3e2992deb 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index d4790c4cd2..6e0cc42077 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index 4717a2a0a4..a72b17c8d6 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 4be1811715..50fa444c49 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 682cb4682b..339908a2d9 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index d4390fed3a..370e8c5cab 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index 534aa5e2a2..eb3bf81a27 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 754c094a20..88d32738b8 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.0-SNAPSHOT</version>
+        <version>4.14.5.1.0.0</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index 4f57d9fca7..cbb4f642fb 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 26769331cd..773292c81d 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 39195f3aba..675fc01fc1 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index 0567d05ffc..c0ea39f1ff 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index b21125be0a..61f0f1484c 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index cb7ba862eb..038ef2453f 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index 7e87e8c388..d5301aa713 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index cf4632f906..6b7c9c626b 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.0-SNAPSHOT</version>
+  <version>4.14.5.1.0.0</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index c1ace727d2..138b2228b4 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index a1488666e1..999c1efcfb 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index 47f9cfa851..8d8fd063bf 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index 9b0062fdd4..2d38b07b18 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.0-SNAPSHOT</version>
+        <version>4.14.5.1.0.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index bdb67c6130..3dca680248 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index 0cb5f080d5..3809181252 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.0-SNAPSHOT</version>
+  <version>4.14.5.1.0.0</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,6 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
+    <tag>ds-4.14.5.1.0.0</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index f95e55b614..2049fd27ee 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index b69ebe1722..d767d3618d 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index b3a2b557fa..1fb115ec65 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index 89e1a2329f..49dc2e8307 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index e76a1ea2a5..3814a201d8 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index 09da9c4e89..f8db45f0bb 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index 2a7a4e9866..1a7ecf2099 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index 4d5f135b5f..24ba1cefd9 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index d3c6e82cd8..0033034494 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index 535b1b0b1c..ced183107f 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index 49a7004a93..a9c77a1f41 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 70cb2ef983..3d8b935d24 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index cf0bd9df94..b03c43959a 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index cfde9f2c8b..05e40848ea 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index 5f4beac928..5fa7cc1ad8 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index e51d698ffa..a6f2588e77 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index 5d4917c141..20df9ee7d5 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index aa61ff473d..0392faf2a2 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index 3a698a35ff..b8e1246856 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index b0f7650c8c..4d2c8d82db 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index 28cca5cd76..e23a24b1be 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index baf03467f8..289cd2e80a 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index 7cf411b101..8b6e12b003 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index a0a27dc36c..41b77e9403 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index 0933062224..0bed5849ba 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index 68ea597b67..501768a68f 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index 7889506930..181887a95f 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index fa66c9fa5e..fc33489873 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index c5844eca82..0ed73016f0 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index 7650a4819b..0959b4c55a 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index 88d5223cfe..268944ca65 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index f9dc0a2886..cf6063213a 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index fe622ab28a..e880694dae 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index e42eb2b983..fd334e9863 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index 3d177b9494..ecd27924a0 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index d69153fe22..d6dbed6b00 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index d55587edfb..7e616499a9 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index e815c505d0..3c87fe3875 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index b503e30643..604746d58e 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index df07844776..c970638970 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index f36a0642de..862deecb03 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index b9f2b7137f..a0bcf383c3 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index c8aa31fe19..10dd6de4f6 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index fc0ba5beae..56c749b043 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index 8d3f783cc8..172063e305 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index 5aeea88adb..6b2a1fc5dc 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index 26b583c45c..da0231fa48 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index a578e49e65..c8607ee7b8 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index 784a227c77..05657e11f5 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 574b9adec2..2f4aeb9105 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index a8b307956f..2deed7c86a 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index aab8bbe6e2..65339d7a26 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index d6e8a26d06..9aace89dbb 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index 195d742bda..f92cdfa2ae 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index 026ca9b2de..a40497a3e3 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index c849ea9270..32a42df662 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index d316b7020d..2dc69ee1f1 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index ad4950a2bc..a24d4d76d3 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index 5690b63440..0e1c244f3e 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index 60b1fc33e6..c1822a0e9f 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index 6984a8d05b..1553971e34 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index b393af33db..a62ecf1175 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.0-SNAPSHOT</version>
+    <version>4.14.5.1.0.0</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 10/22: [maven-release-plugin] prepare release ds-4.14.5.1.0.1

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 06426054ae2fef2baa4916df6c4217514d60b310
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Mon Jun 6 10:27:46 2022 +0200

    [maven-release-plugin] prepare release ds-4.14.5.1.0.1
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 4 ++--
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index d778f4e1ff..8845e0227a 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 58fd0d0645..85e0e49f8d 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index 1396cd7d3d..842bc6bd8f 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index 2f08f94d37..b80f92acf4 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index 354b8817fd..cc7775d6a6 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 2c7b377159..620de60b81 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 3b11a078f0..9cb7e7a0af 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index ab5cf5d4f7..ad13584b88 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index e3be3fad85..75aa881642 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 3bac1c9803..48a6e50a09 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.1-SNAPSHOT</version>
+        <version>4.14.5.1.0.1</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index 6d62d652a7..4946298a2f 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 956f75f441..88a2ac63a4 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 0956ae0ace..3c3dea6186 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index fbe795c396..67ddd73e30 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index 58f6ba9cb5..89943d0448 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index b27a660d78..8f50f22857 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index 907f93c1df..679b184c55 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index 48d40ad16b..ffd1b81e7c 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.5.1.0.1-SNAPSHOT</version>
+  <version>4.14.5.1.0.1</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index 61f8cbf1a8..d5f54afab8 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index 0b79f1fcf6..53d0696ec0 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index 37bd88d69c..a5e687e763 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index bb799b01a3..0583cd08a6 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.1-SNAPSHOT</version>
+        <version>4.14.5.1.0.1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index 052c594c4c..2f3de44c87 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index 5caab47eba..d926c2a653 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.5.1.0.1-SNAPSHOT</version>
+  <version>4.14.5.1.0.1</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,7 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
-    <tag>HEAD</tag>
+    <tag>ds-4.14.5.1.0.1</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index 9ce702e547..6fcf41d619 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index 109dc97ada..0b16416198 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index bccde751f7..523e829f16 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index 99d6f69133..2fb3822652 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index 053a6dd600..64f3a4cd90 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index 6d22235696..500a70e3da 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index eda46895e8..3e50071aff 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index f7e892a2ea..d6b54e6aca 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index 67ef84c401..d66ebba700 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index 0dc894aa18..2b5b654a2e 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index 825372e688..4392508ece 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 3f291fca57..9c491f2c30 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index 3c1945bd89..e5df07a45e 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index 94273f45e5..897089977c 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index 787695a42a..30663d12f8 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index ae8ee0b851..d7cbca5515 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index bf465e94a9..17246e5fbd 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index 00c9286498..bcc278eda4 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index 46b05b056d..00e40425d4 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index 6954c64985..55bd5f41a6 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index ab95a0ed3f..6d33f4aca2 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index 04e501882c..2198a7130f 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index e6e5acffde..ddf83eedee 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index 107646147a..2993316aaa 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index 260fc65a1c..ab3a0ffc72 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index a4b2c2fd60..52208d80a2 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index 60af30a51b..c509ced076 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index ae296d7575..124117a2c9 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index 242e37feda..622d664e2c 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index f3e6d5ffaa..d62c2d4b1d 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index a02a1627ea..baa84793c4 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index b8b09b905e..51ac904e04 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index f11871c131..ad34677e6f 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index ac2f7c9c1c..84e2ecdd37 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index 34445a0c8a..21371afe22 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index c082e555ff..e9c5744c39 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index f26e83fbad..46e268f231 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index 9f8147525d..6d2d938d7c 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index 8926591f19..b41335daf4 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index eae155c547..684cf940ab 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index d5daa1e669..9cc5bb27b5 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index 2527e357dc..17677e5897 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index 8412de2d1f..a3efed67bd 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index 45954a0812..b99aab8d21 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index a09c02a395..a6bad2dafc 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index d3ae29e1b7..50b66bc56e 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index 626093cab8..d6cd55b9c5 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index 4374e0d551..03ececc1fa 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index b7c2972ec5..e77d629a18 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 31dc372384..80bd8411c5 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index a8ca227810..b79dee25b5 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index 12711153b2..44be122cc9 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index ab486e4f7c..5ef75601b9 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index 07ca8a2af3..0be2b3df7b 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index fdc6ec5451..3885522d43 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index a0533a410c..7148898b4e 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index 1020016599..748d7377c6 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index 187ce0fc1f..0d330c4e39 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index 7713bcf9f0..98a759bf26 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index f52cdb0c1b..bcda3159b4 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index f3f75ff5a4..5eb97c6770 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index 05db93482c..bdf8fb6072 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.1-SNAPSHOT</version>
+    <version>4.14.5.1.0.1</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 22/22: Check if channel closed before processing read request (#3486)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 99563890aa26851828be8e84b8ef09a86572d6e0
Author: Michael Marshall <mm...@apache.org>
AuthorDate: Mon Sep 19 02:57:51 2022 -0700

    Check if channel closed before processing read request (#3486)
    
    * Check if channel closed before processing read request
    
    * Add missed call to onReadRequestFinish()
    
    * Fix test
    
    * Mock more tests
    
    Co-authored-by: Nicolò Boschi <bo...@gmail.com>
    (cherry picked from commit 1313b8e2e7964a0bbf2e221f49fe30a1fd812d31)
---
 .../main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java  | 7 +++++++
 .../java/org/apache/bookkeeper/proto/ReadEntryProcessorV3.java     | 7 +++++++
 .../org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java    | 1 +
 .../apache/bookkeeper/proto/LongPollReadEntryProcessorV3Test.java  | 1 +
 .../java/org/apache/bookkeeper/proto/ReadEntryProcessorTest.java   | 1 +
 .../java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java  | 1 +
 .../org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java     | 1 +
 7 files changed, 19 insertions(+)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
index 60de0440c1..7647e4afef 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessor.java
@@ -65,6 +65,13 @@ class ReadEntryProcessor extends PacketProcessorBase<ReadRequest> {
         if (LOG.isDebugEnabled()) {
             LOG.debug("Received new read request: {}", request);
         }
+        if (!channel.isOpen()) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Dropping read request for closed channel: {}", channel);
+            }
+            requestProcessor.onReadRequestFinish();
+            return;
+        }
         int errorCode = BookieProtocol.EOK;
         long startTimeNanos = MathUtils.nowInNano();
         ByteBuf data = null;
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessorV3.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessorV3.java
index a8ecc11d7e..6b3b624141 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessorV3.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/ReadEntryProcessorV3.java
@@ -248,6 +248,13 @@ class ReadEntryProcessorV3 extends PacketProcessorBaseV3 {
     public void safeRun() {
         requestProcessor.getRequestStats().getReadEntrySchedulingDelayStats().registerSuccessfulEvent(
             MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
+        if (!channel.isOpen()) {
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Dropping read request for closed channel: {}", channel);
+            }
+            requestProcessor.onReadRequestFinish();
+            return;
+        }
 
         if (!isVersionCompatible()) {
             ReadResponse readResponse = ReadResponse.newBuilder()
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
index 1b07fbb4d1..ecb2676bc8 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
@@ -71,6 +71,7 @@ public class ForceLedgerProcessorV3Test {
                 .build())
             .build();
         channel = mock(Channel.class);
+        when(channel.isOpen()).thenReturn(true);
         bookie = mock(Bookie.class);
         requestProcessor = mock(BookieRequestProcessor.class);
         when(requestProcessor.getBookie()).thenReturn(bookie);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/LongPollReadEntryProcessorV3Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/LongPollReadEntryProcessorV3Test.java
index 393d5ddf33..9eae1b9c0d 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/LongPollReadEntryProcessorV3Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/LongPollReadEntryProcessorV3Test.java
@@ -83,6 +83,7 @@ public class LongPollReadEntryProcessorV3Test {
             .build();
 
         Channel channel = mock(Channel.class);
+        when(channel.isOpen()).thenReturn(true);
         Bookie bookie = mock(Bookie.class);
 
         BookieRequestProcessor requestProcessor = mock(BookieRequestProcessor.class);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ReadEntryProcessorTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ReadEntryProcessorTest.java
index fcd74b1705..1fd42fd16f 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ReadEntryProcessorTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ReadEntryProcessorTest.java
@@ -60,6 +60,7 @@ public class ReadEntryProcessorTest {
     @Before
     public void setup() throws IOException, BookieException {
         channel = mock(Channel.class);
+        when(channel.isOpen()).thenReturn(true);
         bookie = mock(Bookie.class);
         requestProcessor = mock(BookieRequestProcessor.class);
         when(requestProcessor.getBookie()).thenReturn(bookie);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
index a69245d4a9..0752c05c32 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
@@ -64,6 +64,7 @@ public class WriteEntryProcessorTest {
             new byte[0],
             Unpooled.wrappedBuffer("test-entry-data".getBytes(UTF_8)));
         channel = mock(Channel.class);
+        when(channel.isOpen()).thenReturn(true);
         bookie = mock(Bookie.class);
         requestProcessor = mock(BookieRequestProcessor.class);
         when(requestProcessor.getBookie()).thenReturn(bookie);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
index 7abaa100c8..477d83bb2a 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
@@ -76,6 +76,7 @@ public class WriteEntryProcessorV3Test {
                 .build())
             .build();
         channel = mock(Channel.class);
+        when(channel.isOpen()).thenReturn(true);
         bookie = mock(Bookie.class);
         requestProcessor = mock(BookieRequestProcessor.class);
         when(requestProcessor.getBookie()).thenReturn(bookie);


[bookkeeper] 08/22: [Client] Switch to rely on Netty for Hostname Verification (#3310)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 11bb11c9a52e97563fcba46434846c5fe6d4d97c
Author: Michael Marshall <mm...@apache.org>
AuthorDate: Sun Jun 5 01:39:35 2022 -0500

    [Client] Switch to rely on Netty for Hostname Verification (#3310)
    
    ### Motivation
    
    Currently, we initiate hostname verification for the Bookkeeper Client in the `PerChannelBookieClient` class. In order to simplify the code, I propose that we refactor the client so it relies on Netty, its SslHandler/SslEngine, and the JVM, to perform the hostname verification.
    
    When HTTPS is configured as the endpoint verification algorithm, it uses [RFC 2818](https://datatracker.ietf.org/doc/html/rfc2818) to perform hostname verification. This is defined by the Java Security Standard Algorithm Names documentation for JDK versions 8, 11, and 17. Here are the official docs:
    
    * https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html
    * https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html
    * https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html
    
    ### Changes
    
    * Rely on Netty and the SslEngine to perform hostname verification. With this change, CN matching is now deprecated, which brings the bookkeeper client in alignment with RFC 2818.
    * Add new method to the `SecurityHandlerFactory` interface. It is named `newTLSHandler` and takes the `host` and `port` of the remote peer when creating a new SslEngine. To ensure backwards compatibility, the default implementation will call the original method. Note that the remote host and port are only needed when a client is using them for hostname verification.
    
    (cherry picked from commit 6b22f852d31c6e325e0ac5019a34c36acc271ed3)
    (cherry picked from commit 315195e7c468f82f7802d05c38ac7a961a90d446)
---
 .../org/apache/bookkeeper/proto/AuthHandler.java   | 35 ----------------------
 .../bookkeeper/proto/PerChannelBookieClient.java   | 22 +++++---------
 .../bookkeeper/tls/SecurityHandlerFactory.java     |  4 +++
 .../apache/bookkeeper/tls/TLSContextFactory.java   | 19 +++++++++++-
 .../java/org/apache/bookkeeper/tls/TestTLS.java    |  3 +-
 5 files changed, 30 insertions(+), 53 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/AuthHandler.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/AuthHandler.java
index e05846e061..f13d3a4c49 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/AuthHandler.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/AuthHandler.java
@@ -29,30 +29,24 @@ import io.netty.channel.ChannelDuplexHandler;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import io.netty.channel.ChannelPromise;
-import io.netty.handler.ssl.SslHandler;
 
 import java.io.IOException;
-import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.net.ssl.SSLSession;
-
 import org.apache.bookkeeper.auth.AuthCallbacks;
 import org.apache.bookkeeper.auth.AuthToken;
 import org.apache.bookkeeper.auth.BookieAuthProvider;
 import org.apache.bookkeeper.auth.ClientAuthProvider;
 import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage;
-import org.apache.http.conn.ssl.DefaultHostnameVerifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 class AuthHandler {
     static final Logger LOG = LoggerFactory.getLogger(AuthHandler.class);
-    private static final DefaultHostnameVerifier HOSTNAME_VERIFIER = new DefaultHostnameVerifier();
 
     static class ServerSideHandler extends ChannelInboundHandlerAdapter {
         volatile boolean authenticated = false;
@@ -444,35 +438,6 @@ class AuthHandler {
                 }
             }
         }
-
-        public boolean verifyTlsHostName(Channel channel) {
-            SslHandler sslHandler = channel.pipeline().get(SslHandler.class);
-            if (sslHandler == null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("can't perform hostname-verification on non-ssl channel {}", channel);
-                }
-                return true;
-            }
-            SSLSession sslSession = sslHandler.engine().getSession();
-            String hostname = null;
-            if (channel.remoteAddress() instanceof InetSocketAddress) {
-                hostname = ((InetSocketAddress) channel.remoteAddress()).getHostName();
-            } else {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("can't get remote hostName on ssl session {}", channel);
-                }
-                return true;
-            }
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Verifying HostName for {}, Cipher {}, Protocols {}, on {}", hostname,
-                        sslSession.getCipherSuite(), sslSession.getProtocol(), channel);
-            }
-            boolean verification = HOSTNAME_VERIFIER.verify(hostname, sslSession);
-            if (!verification) {
-                LOG.warn("Failed to validate hostname verification {} on {}", hostname, channel);
-            }
-            return verification;
-        }
     }
 
     @SuppressWarnings("serial")
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index f248a40607..12209a636d 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -59,6 +59,7 @@ import io.netty.util.Recycler.Handle;
 import io.netty.util.concurrent.Future;
 import io.netty.util.concurrent.GenericFutureListener;
 import java.io.IOException;
+import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.UnknownHostException;
 import java.security.cert.Certificate;
@@ -1480,7 +1481,8 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
     void initTLSHandshake() {
         // create TLS handler
         PerChannelBookieClient parentObj = PerChannelBookieClient.this;
-        SslHandler handler = parentObj.shFactory.newTLSHandler();
+        InetSocketAddress address = (InetSocketAddress) channel.remoteAddress();
+        SslHandler handler = parentObj.shFactory.newTLSHandler(address.getHostName(), address.getPort());
         channel.pipeline().addFirst(parentObj.shFactory.getHandlerName(), handler);
         handler.handshakeFuture().addListener(new GenericFutureListener<Future<Channel>>() {
                 @Override
@@ -1504,14 +1506,8 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
                             state = ConnectionState.CONNECTED;
                             AuthHandler.ClientSideHandler authHandler = future.get().pipeline()
                                     .get(AuthHandler.ClientSideHandler.class);
-                        if (conf.getHostnameVerificationEnabled() && !authHandler.verifyTlsHostName(channel)) {
-                            // add HostnameVerification or private classes not
-                            // for validation
-                            rc = BKException.Code.UnauthorizedAccessException;
-                        } else {
-                                authHandler.authProvider.onProtocolUpgrade();
-                                activeTlsChannelCounter.inc();
-                            }
+                            authHandler.authProvider.onProtocolUpgrade();
+                            activeTlsChannelCounter.inc();
                         } else if (future.isSuccess()
                                 && (state == ConnectionState.CLOSED || state == ConnectionState.DISCONNECTED)) {
                             LOG.warn("Closed before TLS handshake completed, clean up: {}, current state {}",
@@ -2462,12 +2458,8 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
                     state = ConnectionState.CONNECTED;
                     AuthHandler.ClientSideHandler authHandler = future.channel().pipeline()
                             .get(AuthHandler.ClientSideHandler.class);
-                    if (conf.getHostnameVerificationEnabled() && !authHandler.verifyTlsHostName(channel)) {
-                        rc = BKException.Code.UnauthorizedAccessException;
-                    } else {
-                        authHandler.authProvider.onProtocolUpgrade();
-                        activeTlsChannelCounter.inc();
-                    }
+                    authHandler.authProvider.onProtocolUpgrade();
+                    activeTlsChannelCounter.inc();
                 } else if (future.isSuccess() && (state == ConnectionState.CLOSED
                     || state == ConnectionState.DISCONNECTED)) {
                     LOG.warn("Closed before connection completed, clean up: {}, current state {}",
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/SecurityHandlerFactory.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/SecurityHandlerFactory.java
index 5b43744fd1..5d4bc3b088 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/SecurityHandlerFactory.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/SecurityHandlerFactory.java
@@ -41,4 +41,8 @@ public interface SecurityHandlerFactory {
     void init(NodeType type, AbstractConfiguration conf, ByteBufAllocator allocator) throws SecurityException;
 
     SslHandler newTLSHandler();
+
+    default SslHandler newTLSHandler(String host, int port) {
+        return this.newTLSHandler();
+    }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/TLSContextFactory.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/TLSContextFactory.java
index fdb2d019c3..280c4dccf1 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/TLSContextFactory.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/tls/TLSContextFactory.java
@@ -46,6 +46,7 @@ import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLParameters;
 import javax.net.ssl.TrustManagerFactory;
 
 import lombok.extern.slf4j.Slf4j;
@@ -143,6 +144,7 @@ public class TLSContextFactory implements SecurityHandlerFactory {
     }
 
     private static final String TLSCONTEXT_HANDLER_NAME = "tls";
+    private NodeType type;
     private String[] protocols;
     private String[] ciphers;
     private volatile SslContext sslContext;
@@ -475,6 +477,7 @@ public class TLSContextFactory implements SecurityHandlerFactory {
             throws SecurityException {
         this.allocator = allocator;
         this.config = conf;
+        this.type = type;
         final String enabledProtocols;
         final String enabledCiphers;
         certRefreshTime = TimeUnit.SECONDS.toMillis(conf.getTLSCertFilesRefreshDurationSeconds());
@@ -522,7 +525,12 @@ public class TLSContextFactory implements SecurityHandlerFactory {
 
     @Override
     public SslHandler newTLSHandler() {
-        SslHandler sslHandler = getSSLContext().newHandler(allocator);
+        return this.newTLSHandler(null, -1);
+    }
+
+    @Override
+    public SslHandler newTLSHandler(String peer, int port) {
+        SslHandler sslHandler = getSSLContext().newHandler(allocator, peer, port);
 
         if (protocols != null && protocols.length != 0) {
             sslHandler.engine().setEnabledProtocols(protocols);
@@ -538,6 +546,15 @@ public class TLSContextFactory implements SecurityHandlerFactory {
             log.debug("Enabled cipher suites: {} ", Arrays.toString(sslHandler.engine().getEnabledCipherSuites()));
         }
 
+        if (type == NodeType.Client && ((ClientConfiguration) config).getHostnameVerificationEnabled()) {
+            SSLParameters sslParameters = sslHandler.engine().getSSLParameters();
+            sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
+            sslHandler.engine().setSSLParameters(sslParameters);
+            if (log.isDebugEnabled()) {
+                log.debug("Enabled endpointIdentificationAlgorithm: HTTPS");
+            }
+        }
+
         return sslHandler;
     }
 
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/tls/TestTLS.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/tls/TestTLS.java
index bc3fbcc3ba..2f398b0044 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/tls/TestTLS.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/tls/TestTLS.java
@@ -44,7 +44,6 @@ import org.apache.bookkeeper.auth.AuthToken;
 import org.apache.bookkeeper.auth.BookieAuthProvider;
 import org.apache.bookkeeper.auth.ClientAuthProvider;
 import org.apache.bookkeeper.client.BKException;
-import org.apache.bookkeeper.client.BKException.BKUnauthorizedAccessException;
 import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.BookKeeper.DigestType;
 import org.apache.bookkeeper.client.BookKeeperAdmin;
@@ -1020,7 +1019,7 @@ public class TestTLS extends BookKeeperClusterTestCase {
         try {
             testClient(clientConf, numBookies);
             fail("should have failed with unauthorized exception");
-        } catch (BKUnauthorizedAccessException e) {
+        } catch (BKException.BKNotEnoughBookiesException e) {
             // Ok.
         }
     }


[bookkeeper] 14/22: Reorder the sequence of the bookkeeper server shutdown (#2888)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit f260ff4876ba27ca088d2624942b56cf5c32a575
Author: pradeepbn <pr...@gmail.com>
AuthorDate: Wed Dec 1 09:37:28 2021 -0800

    Reorder the sequence of the bookkeeper server shutdown (#2888)
    
    Reorders the sequence of the bookkeeper server shutdown
    so that any in-progress reads or writes don't hit ledger
    storage after it has been shutdown. Now the request processor
    is shutdown before the bookie.
    
    An additional check if the channel is active is performed in
    the packet processor callbacks before sending response
    to avoid RejectedExecutionException messages within
    Netty from polluting the log.
    
    (cherry picked from commit 7395bb48e2ff41fac93a84ff8bfa9097bd0af8fe)
    (cherry picked from commit f8eb20db466ac434a7402539d0e3d4c362e57e0f)
---
 .../bookkeeper/proto/BookieRequestProcessor.java   |  3 ++
 .../org/apache/bookkeeper/proto/BookieServer.java  |  2 +-
 .../bookkeeper/proto/PacketProcessorBase.java      |  7 +++-
 .../bookkeeper/proto/PacketProcessorBaseV3.java    | 40 ++++++++++++----------
 .../proto/ForceLedgerProcessorV3Test.java          |  1 +
 .../bookkeeper/proto/WriteEntryProcessorTest.java  |  1 +
 .../proto/WriteEntryProcessorV3Test.java           |  1 +
 7 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
index 67f83e9ce5..902e2c1b41 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
@@ -264,6 +264,7 @@ public class BookieRequestProcessor implements RequestProcessor {
 
     @Override
     public void close() {
+        LOG.info("Closing RequestProcessor");
         shutdownExecutor(writeThreadPool);
         shutdownExecutor(readThreadPool);
         if (serverCfg.getNumLongPollWorkerThreads() > 0 || readThreadPool == null) {
@@ -271,6 +272,7 @@ public class BookieRequestProcessor implements RequestProcessor {
         }
         shutdownExecutor(highPriorityThreadPool);
         requestTimer.stop();
+        LOG.info("Closed RequestProcessor");
     }
 
     private OrderedExecutor createExecutor(
@@ -295,6 +297,7 @@ public class BookieRequestProcessor implements RequestProcessor {
     private void shutdownExecutor(OrderedExecutor service) {
         if (null != service) {
             service.shutdown();
+            service.forceShutdown(10, TimeUnit.SECONDS);
         }
     }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
index ee83327b2f..69aece207c 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java
@@ -222,8 +222,8 @@ public class BookieServer {
         if (!running) {
             return;
         }
-        exitCode = bookie.shutdown();
         this.requestProcessor.close();
+        exitCode = bookie.shutdown();
         running = false;
     }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
index 4cc7176ede..d416b9f141 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBase.java
@@ -66,7 +66,12 @@ abstract class PacketProcessorBase<T extends Request> extends SafeRunnable {
     }
 
     protected void sendResponse(int rc, Object response, OpStatsLogger statsLogger) {
-        channel.writeAndFlush(response, channel.voidPromise());
+        if (channel.isActive()) {
+            channel.writeAndFlush(response, channel.voidPromise());
+        } else {
+            LOGGER.debug("Netty channel {} is inactive, "
+                    + "hence bypassing netty channel writeAndFlush during sendResponse", channel);
+        }
         if (BookieProtocol.EOK == rc) {
             statsLogger.registerSuccessfulEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
         } else {
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBaseV3.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBaseV3.java
index 15765a252b..d4ad65ba43 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBaseV3.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PacketProcessorBaseV3.java
@@ -87,25 +87,29 @@ public abstract class PacketProcessorBaseV3 extends SafeRunnable {
                 requestProcessor.invalidateBlacklist(channel);
             }
         }
-
-        channel.writeAndFlush(response).addListener(new ChannelFutureListener() {
-            @Override
-            public void operationComplete(ChannelFuture future) throws Exception {
-                long writeElapsedNanos = MathUtils.elapsedNanos(writeNanos);
-                if (!future.isSuccess()) {
-                    requestProcessor.getRequestStats().getChannelWriteStats()
-                        .registerFailedEvent(writeElapsedNanos, TimeUnit.NANOSECONDS);
-                } else {
-                    requestProcessor.getRequestStats().getChannelWriteStats()
-                        .registerSuccessfulEvent(writeElapsedNanos, TimeUnit.NANOSECONDS);
-                }
-                if (StatusCode.EOK == code) {
-                    statsLogger.registerSuccessfulEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
-                } else {
-                    statsLogger.registerFailedEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
+        if (channel.isActive()) {
+            channel.writeAndFlush(response).addListener(new ChannelFutureListener() {
+                @Override
+                public void operationComplete(ChannelFuture future) throws Exception {
+                    long writeElapsedNanos = MathUtils.elapsedNanos(writeNanos);
+                    if (!future.isSuccess()) {
+                        requestProcessor.getRequestStats().getChannelWriteStats()
+                                .registerFailedEvent(writeElapsedNanos, TimeUnit.NANOSECONDS);
+                    } else {
+                        requestProcessor.getRequestStats().getChannelWriteStats()
+                                .registerSuccessfulEvent(writeElapsedNanos, TimeUnit.NANOSECONDS);
+                    }
+                    if (StatusCode.EOK == code) {
+                        statsLogger.registerSuccessfulEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
+                    } else {
+                        statsLogger.registerFailedEvent(MathUtils.elapsedNanos(enqueueNanos), TimeUnit.NANOSECONDS);
+                    }
                 }
-            }
-        });
+            });
+        } else {
+            LOGGER.debug("Netty channel {} is inactive, "
+                    + "hence bypassing netty channel writeAndFlush during sendResponse", channel);
+        }
     }
 
     protected boolean isVersionCompatible() {
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
index bab83fb326..1b07fbb4d1 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/ForceLedgerProcessorV3Test.java
@@ -76,6 +76,7 @@ public class ForceLedgerProcessorV3Test {
         when(requestProcessor.getBookie()).thenReturn(bookie);
         when(requestProcessor.getWaitTimeoutOnBackpressureMillis()).thenReturn(-1L);
         when(requestProcessor.getRequestStats()).thenReturn(new RequestStats(NullStatsLogger.INSTANCE));
+        when(channel.isActive()).thenReturn(true);
         processor = new ForceLedgerProcessorV3(
             request,
             channel,
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
index bbcffea08c..27a4306a6e 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorTest.java
@@ -68,6 +68,7 @@ public class WriteEntryProcessorTest {
         requestProcessor = mock(BookieRequestProcessor.class);
         when(requestProcessor.getBookie()).thenReturn(bookie);
         when(requestProcessor.getRequestStats()).thenReturn(new RequestStats(NullStatsLogger.INSTANCE));
+        when(channel.isActive()).thenReturn(true);
         processor = WriteEntryProcessor.create(
             request,
             channel,
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
index 292dc519ca..7abaa100c8 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/WriteEntryProcessorV3Test.java
@@ -81,6 +81,7 @@ public class WriteEntryProcessorV3Test {
         when(requestProcessor.getBookie()).thenReturn(bookie);
         when(requestProcessor.getWaitTimeoutOnBackpressureMillis()).thenReturn(-1L);
         when(requestProcessor.getRequestStats()).thenReturn(new RequestStats(NullStatsLogger.INSTANCE));
+        when(channel.isActive()).thenReturn(true);
         processor = new WriteEntryProcessorV3(
             request,
             channel,


[bookkeeper] 05/22: minimized version of PR 3149 for BookieAutoRecoveryTest.testEmptyLedgerLosesQuorumEventually

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 55c627bce251b03604906c9c041d3e3a446006f1
Author: Andrey Yegorov <an...@datastax.com>
AuthorDate: Wed Apr 27 15:59:49 2022 -0700

    minimized version of PR 3149 for BookieAutoRecoveryTest.testEmptyLedgerLosesQuorumEventually
---
 .../org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
index 2ae129bec3..4aafbe77ca 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/BookieAutoRecoveryTest.java
@@ -402,10 +402,14 @@ public class BookieAutoRecoveryTest extends BookKeeperClusterTestCase {
         getAuditor(10, TimeUnit.SECONDS).submitAuditTask().get(); // ensure auditor runs
 
         assertTrue("Should be marked as underreplicated", latch.await(5, TimeUnit.SECONDS));
+
+        startNewBookie();
+        getAuditor(10, TimeUnit.SECONDS).submitAuditTask().get(); // ensure auditor runs
+
         latch = new CountDownLatch(1);
         s = watchUrLedgerNode(urZNode, latch); // should be marked as replicated
         if (s != null) {
-            assertTrue("Should be marked as replicated", latch.await(5, TimeUnit.SECONDS));
+            assertTrue("Should be marked as replicated", latch.await(20, TimeUnit.SECONDS));
         }
 
         // should be able to open ledger without issue


[bookkeeper] 20/22: AutoRecovery - Do not call shutdown() on the main ZookKeeper client thread (#3487)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 3ee8d2357c708715871f417035b8db55132b8e71
Author: Enrico Olivelli <eo...@apache.org>
AuthorDate: Wed Sep 14 22:09:57 2022 +0200

    AutoRecovery - Do not call shutdown() on the main ZookKeeper client thread (#3487)
    
    (cherry picked from commit 6fc2e08d534159fc078022a6781e94933b7268d1)
---
 .../java/org/apache/bookkeeper/replication/AutoRecoveryMain.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
index 1ccb322826..4fea7e809b 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/AutoRecoveryMain.java
@@ -29,6 +29,7 @@ import java.io.File;
 import java.io.IOException;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.net.MalformedURLException;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 
 import org.apache.bookkeeper.bookie.Bookie;
@@ -96,7 +97,11 @@ public class AutoRecoveryMain {
         MetadataClientDriver metadataClientDriver = bkc.getMetadataClientDriver();
         metadataClientDriver.setSessionStateListener(() -> {
             LOG.error("Client connection to the Metadata server has expired, so shutting down AutoRecoveryMain!");
-            shutdown(ExitCode.ZK_EXPIRED);
+            // do not run "shutdown" in the main ZooKeeper client thread
+            // as it performs some blocking operations
+            CompletableFuture.runAsync(() -> {
+                shutdown(ExitCode.ZK_EXPIRED);
+            });
         });
 
         auditorElector = new AuditorElector(


[bookkeeper] 16/22: Backport BookieBackpressureForV2Test to branch-4.14

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 5f7ad52f454d2cf3887da5b654b10085d948dbfe
Author: Lari Hotari <lh...@apache.org>
AuthorDate: Tue Aug 9 20:20:05 2022 +0300

    Backport BookieBackpressureForV2Test to branch-4.14
    
    - cherry-picking #3324 requires this backport
---
 .../java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java
index 775844d05e..5dfd7d6052 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/BookieBackpressureForV2Test.java
@@ -31,6 +31,6 @@ public class BookieBackpressureForV2Test extends BookieBackpressureTest {
         super.setUp();
         baseClientConf.setUseV2WireProtocol(true);
         // the backpressure will bloc the read response, disable it to let it use backpressure mechanism
-        confByIndex(0).setReadWorkerThreadsThrottlingEnabled(false);
+        bsConfs.get(0).setReadWorkerThreadsThrottlingEnabled(false);
     }
 }


[bookkeeper] 13/22: Fix the V2 AddRequest object leak issue (#3323)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 177067907e58e678926aec56d94b94b6c9272d37
Author: Yong Zhang <zh...@gmail.com>
AuthorDate: Mon Jun 13 15:27:51 2022 +0800

     Fix the V2 AddRequest object leak issue (#3323)
    
    ---
    
    **Motivation**
    
    If the request is a V2 add request, we retained the data's
    reference when creating the AddRequest object. To avoid the
    object leak, we need to release the reference if we met
    any errors before sending it.
    
    (cherry picked from commit f887f8d7a507800b71b4143a40b0e45902f5f170)
    (cherry picked from commit 5370d63391e5683d27ac9c4f4166281eaf026a10)
---
 .../java/org/apache/bookkeeper/proto/PerChannelBookieClient.java  | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index 12209a636d..aeef8f8e19 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -1127,6 +1127,14 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
                     StringUtils.requestToString(request));
 
             errorOut(key, BKException.Code.TooManyRequestsException);
+
+            // If the request is a V2 add request, we retained the data's reference when creating the AddRequest
+            // object. To avoid the object leak, we need to release the reference if we met any errors
+            // before sending it.
+            if (request instanceof BookieProtocol.AddRequest) {
+                BookieProtocol.AddRequest ar = (BookieProtocol.AddRequest) request;
+                ar.recycle();
+            }
             return;
         }
 


[bookkeeper] 18/22: [maven-release-plugin] prepare for next development iteration

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit dc4094e0a8d7b0ba5317de5420e3aed37a4f8c22
Author: Lari Hotari <lh...@apache.org>
AuthorDate: Tue Aug 9 21:02:20 2022 +0300

    [maven-release-plugin] prepare for next development iteration
---
 bookkeeper-benchmark/pom.xml                                   | 2 +-
 bookkeeper-common-allocator/pom.xml                            | 2 +-
 bookkeeper-common/pom.xml                                      | 2 +-
 bookkeeper-dist/all/pom.xml                                    | 2 +-
 bookkeeper-dist/bkctl/pom.xml                                  | 2 +-
 bookkeeper-dist/pom.xml                                        | 2 +-
 bookkeeper-dist/server/pom.xml                                 | 2 +-
 bookkeeper-http/http-server/pom.xml                            | 2 +-
 bookkeeper-http/pom.xml                                        | 2 +-
 bookkeeper-http/servlet-http-server/pom.xml                    | 2 +-
 bookkeeper-http/vertx-http-server/pom.xml                      | 2 +-
 bookkeeper-proto/pom.xml                                       | 2 +-
 bookkeeper-server/pom.xml                                      | 2 +-
 bookkeeper-stats-providers/codahale-metrics-provider/pom.xml   | 2 +-
 bookkeeper-stats-providers/pom.xml                             | 2 +-
 bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml | 2 +-
 bookkeeper-stats/pom.xml                                       | 2 +-
 buildtools/pom.xml                                             | 4 ++--
 circe-checksum/pom.xml                                         | 2 +-
 cpu-affinity/pom.xml                                           | 2 +-
 metadata-drivers/etcd/pom.xml                                  | 2 +-
 metadata-drivers/pom.xml                                       | 2 +-
 microbenchmarks/pom.xml                                        | 2 +-
 pom.xml                                                        | 4 ++--
 shaded/bookkeeper-server-shaded/pom.xml                        | 2 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml                  | 2 +-
 shaded/distributedlog-core-shaded/pom.xml                      | 2 +-
 shaded/pom.xml                                                 | 2 +-
 stats/pom.xml                                                  | 2 +-
 stats/utils/pom.xml                                            | 2 +-
 stream/api/pom.xml                                             | 2 +-
 stream/bk-grpc-name-resolver/pom.xml                           | 2 +-
 stream/clients/java/all/pom.xml                                | 2 +-
 stream/clients/java/base/pom.xml                               | 2 +-
 stream/clients/java/kv/pom.xml                                 | 2 +-
 stream/clients/java/pom.xml                                    | 2 +-
 stream/clients/pom.xml                                         | 2 +-
 stream/common/pom.xml                                          | 2 +-
 stream/distributedlog/common/pom.xml                           | 2 +-
 stream/distributedlog/core/pom.xml                             | 2 +-
 stream/distributedlog/io/dlfs/pom.xml                          | 2 +-
 stream/distributedlog/io/pom.xml                               | 2 +-
 stream/distributedlog/pom.xml                                  | 2 +-
 stream/distributedlog/protocol/pom.xml                         | 2 +-
 stream/pom.xml                                                 | 2 +-
 stream/proto/pom.xml                                           | 2 +-
 stream/server/pom.xml                                          | 2 +-
 stream/statelib/pom.xml                                        | 2 +-
 stream/storage/api/pom.xml                                     | 2 +-
 stream/storage/impl/pom.xml                                    | 2 +-
 stream/storage/pom.xml                                         | 2 +-
 stream/tests-common/pom.xml                                    | 2 +-
 tests/backward-compat/bc-non-fips/pom.xml                      | 2 +-
 tests/backward-compat/current-server-old-clients/pom.xml       | 2 +-
 tests/backward-compat/hierarchical-ledger-manager/pom.xml      | 2 +-
 tests/backward-compat/hostname-bookieid/pom.xml                | 2 +-
 tests/backward-compat/old-cookie-new-cluster/pom.xml           | 2 +-
 tests/backward-compat/pom.xml                                  | 2 +-
 tests/backward-compat/recovery-no-password/pom.xml             | 2 +-
 tests/backward-compat/upgrade-direct/pom.xml                   | 2 +-
 tests/backward-compat/upgrade/pom.xml                          | 2 +-
 tests/backward-compat/yahoo-custom-version/pom.xml             | 2 +-
 tests/docker-images/all-released-versions-image/pom.xml        | 2 +-
 tests/docker-images/all-versions-image/pom.xml                 | 2 +-
 tests/docker-images/current-version-image/pom.xml              | 2 +-
 tests/docker-images/pom.xml                                    | 2 +-
 tests/integration-tests-base-groovy/pom.xml                    | 2 +-
 tests/integration-tests-base/pom.xml                           | 2 +-
 tests/integration-tests-topologies/pom.xml                     | 2 +-
 tests/integration-tests-utils/pom.xml                          | 2 +-
 tests/integration/cluster/pom.xml                              | 2 +-
 tests/integration/pom.xml                                      | 2 +-
 tests/integration/smoke/pom.xml                                | 2 +-
 tests/integration/standalone/pom.xml                           | 2 +-
 tests/pom.xml                                                  | 2 +-
 tests/scripts/pom.xml                                          | 2 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml             | 2 +-
 tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml       | 2 +-
 tests/shaded/distributedlog-core-shaded-test/pom.xml           | 2 +-
 tests/shaded/pom.xml                                           | 2 +-
 tools/all/pom.xml                                              | 2 +-
 tools/framework/pom.xml                                        | 2 +-
 tools/ledger/pom.xml                                           | 2 +-
 tools/perf/pom.xml                                             | 2 +-
 tools/pom.xml                                                  | 2 +-
 tools/stream/pom.xml                                           | 2 +-
 86 files changed, 88 insertions(+), 88 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 7dbf330e8e..1fceab0236 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 0b2bdb3680..469037ad50 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index 455d1c19dc..f1274527c4 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index 82f1f4893c..7b05998868 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index c35b402c75..5f37e746d0 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 27a8e4176a..391ad43ae3 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 81106437c7..de66d3f313 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index 14c6637310..e98df4a1ee 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index 7dfa56b902..2477cddf9e 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index 1c1d8897af..aa1f12968f 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.2</version>
+        <version>4.14.5.1.0.3-SNAPSHOT</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index 8453e862d0..dc685c99dc 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index c8e480652d..f7f81b68a1 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index d1d9e86408..e56f9ad487 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-server</artifactId>
   <name>Apache BookKeeper :: Server</name>
diff --git a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
index 5cd121fa23..d5db7c4b54 100644
--- a/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/codahale-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats-providers/pom.xml b/bookkeeper-stats-providers/pom.xml
index faee360047..7af8b03add 100644
--- a/bookkeeper-stats-providers/pom.xml
+++ b/bookkeeper-stats-providers/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-stats-providers</artifactId>
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
index 87c4b41507..3916452d73 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/bookkeeper-stats/pom.xml b/bookkeeper-stats/pom.xml
index a8b72a632b..8ec447aa2e 100644
--- a/bookkeeper-stats/pom.xml
+++ b/bookkeeper-stats/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-stats-api</artifactId>
diff --git a/buildtools/pom.xml b/buildtools/pom.xml
index 65780c5ab6..bef5dfee1a 100644
--- a/buildtools/pom.xml
+++ b/buildtools/pom.xml
@@ -20,9 +20,9 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>buildtools</artifactId>
   <name>Apache BookKeeper :: Build Tools</name>
-  <version>4.14.5.1.0.2</version>
+  <version>4.14.5.1.0.3-SNAPSHOT</version>
 </project>
diff --git a/circe-checksum/pom.xml b/circe-checksum/pom.xml
index 3dec318ae6..8275e048d7 100644
--- a/circe-checksum/pom.xml
+++ b/circe-checksum/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/cpu-affinity/pom.xml b/cpu-affinity/pom.xml
index e132bc6d33..9d90c3b3eb 100644
--- a/cpu-affinity/pom.xml
+++ b/cpu-affinity/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/metadata-drivers/etcd/pom.xml b/metadata-drivers/etcd/pom.xml
index f95625ab39..2175086528 100644
--- a/metadata-drivers/etcd/pom.xml
+++ b/metadata-drivers/etcd/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
     <artifactId>metadata-drivers-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
diff --git a/metadata-drivers/pom.xml b/metadata-drivers/pom.xml
index 139a46b8ac..e111287754 100644
--- a/metadata-drivers/pom.xml
+++ b/metadata-drivers/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <artifactId>bookkeeper</artifactId>
         <groupId>com.datastax.oss</groupId>
-        <version>4.14.5.1.0.2</version>
+        <version>4.14.5.1.0.3-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.datastax.oss.metadata.drivers</groupId>
diff --git a/microbenchmarks/pom.xml b/microbenchmarks/pom.xml
index 80af0a5122..a24268e2fb 100644
--- a/microbenchmarks/pom.xml
+++ b/microbenchmarks/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>microbenchmarks</artifactId>
   <name>Apache BookKeeper :: microbenchmarks</name>
diff --git a/pom.xml b/pom.xml
index b748033179..2b97259308 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss</groupId>
-  <version>4.14.5.1.0.2</version>
+  <version>4.14.5.1.0.3-SNAPSHOT</version>
   <artifactId>bookkeeper</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Parent</name>
@@ -40,7 +40,7 @@
     <connection>scm:git:https://github.com/datastax/bookkeeper.git</connection>
     <developerConnection>scm:git:https://github.com/datastax/bookkeeper.git</developerConnection>
     <url>https://github.com/datastax/bookkeeper</url>
-    <tag>ds-4.14.5.1.0.2</tag>
+    <tag>HEAD</tag>
   </scm>
   <issueManagement>
     <system>JIRA</system>
diff --git a/shaded/bookkeeper-server-shaded/pom.xml b/shaded/bookkeeper-server-shaded/pom.xml
index 1a61d2d0b2..d99649ce96 100644
--- a/shaded/bookkeeper-server-shaded/pom.xml
+++ b/shaded/bookkeeper-server-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded</artifactId>
diff --git a/shaded/bookkeeper-server-tests-shaded/pom.xml b/shaded/bookkeeper-server-tests-shaded/pom.xml
index 0cc4d57d39..a6e9426209 100644
--- a/shaded/bookkeeper-server-tests-shaded/pom.xml
+++ b/shaded/bookkeeper-server-tests-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded</artifactId>
diff --git a/shaded/distributedlog-core-shaded/pom.xml b/shaded/distributedlog-core-shaded/pom.xml
index b0327cb938..975d911e95 100644
--- a/shaded/distributedlog-core-shaded/pom.xml
+++ b/shaded/distributedlog-core-shaded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>shaded-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/shaded/pom.xml b/shaded/pom.xml
index 83ac075da3..154454806b 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss</groupId>
   <artifactId>shaded-parent</artifactId>
diff --git a/stats/pom.xml b/stats/pom.xml
index a4e6d4bdd0..3e78b00bd1 100644
--- a/stats/pom.xml
+++ b/stats/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stats/utils/pom.xml b/stats/utils/pom.xml
index 02d4f60338..93b9487e69 100644
--- a/stats/utils/pom.xml
+++ b/stats/utils/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-stats-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/api/pom.xml b/stream/api/pom.xml
index 7c1e29e88b..a925fc3cc4 100644
--- a/stream/api/pom.xml
+++ b/stream/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/bk-grpc-name-resolver/pom.xml b/stream/bk-grpc-name-resolver/pom.xml
index fbbfe8e7f2..daaea6a722 100644
--- a/stream/bk-grpc-name-resolver/pom.xml
+++ b/stream/bk-grpc-name-resolver/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/clients/java/all/pom.xml b/stream/clients/java/all/pom.xml
index 8a2b322b09..997079b4ce 100644
--- a/stream/clients/java/all/pom.xml
+++ b/stream/clients/java/all/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client </name>
diff --git a/stream/clients/java/base/pom.xml b/stream/clients/java/base/pom.xml
index 16494c8968..593555232e 100644
--- a/stream/clients/java/base/pom.xml
+++ b/stream/clients/java/base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-client-base</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: Base</name>
diff --git a/stream/clients/java/kv/pom.xml b/stream/clients/java/kv/pom.xml
index 90db02775e..442a53b901 100644
--- a/stream/clients/java/kv/pom.xml
+++ b/stream/clients/java/kv/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-java-client-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-java-kv-client</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Clients :: Java Client :: KV</name>
diff --git a/stream/clients/java/pom.xml b/stream/clients/java/pom.xml
index 0ab84de6f5..e1560d6fdf 100644
--- a/stream/clients/java/pom.xml
+++ b/stream/clients/java/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-clients-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-java-client-parent</artifactId>
diff --git a/stream/clients/pom.xml b/stream/clients/pom.xml
index 3bb4e86728..306c9a2b64 100644
--- a/stream/clients/pom.xml
+++ b/stream/clients/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-clients-parent</artifactId>
diff --git a/stream/common/pom.xml b/stream/common/pom.xml
index 3a21c7dd6b..442ae5bf5d 100644
--- a/stream/common/pom.xml
+++ b/stream/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/common/pom.xml b/stream/distributedlog/common/pom.xml
index b7ff610b1d..8bb3e6bd5c 100644
--- a/stream/distributedlog/common/pom.xml
+++ b/stream/distributedlog/common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-common</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Common</name>
diff --git a/stream/distributedlog/core/pom.xml b/stream/distributedlog/core/pom.xml
index 19bf59ed49..3944f3231c 100644
--- a/stream/distributedlog/core/pom.xml
+++ b/stream/distributedlog/core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-core</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Core Library</name>
diff --git a/stream/distributedlog/io/dlfs/pom.xml b/stream/distributedlog/io/dlfs/pom.xml
index 70408aba94..b0a886e4f8 100644
--- a/stream/distributedlog/io/dlfs/pom.xml
+++ b/stream/distributedlog/io/dlfs/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>distributedlog</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/io/pom.xml b/stream/distributedlog/io/pom.xml
index da47636b9b..421524575a 100644
--- a/stream/distributedlog/io/pom.xml
+++ b/stream/distributedlog/io/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>distributedlog-io</artifactId>
diff --git a/stream/distributedlog/pom.xml b/stream/distributedlog/pom.xml
index d534f985fd..0e8d219cfe 100644
--- a/stream/distributedlog/pom.xml
+++ b/stream/distributedlog/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/distributedlog/protocol/pom.xml b/stream/distributedlog/protocol/pom.xml
index d3608975e4..e1a4658078 100644
--- a/stream/distributedlog/protocol/pom.xml
+++ b/stream/distributedlog/protocol/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>distributedlog</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>distributedlog-protocol</artifactId>
   <name>Apache BookKeeper :: DistributedLog :: Protocol</name>
diff --git a/stream/pom.xml b/stream/pom.xml
index f277182a80..4bc55a9cd9 100644
--- a/stream/pom.xml
+++ b/stream/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <packaging>pom</packaging>
diff --git a/stream/proto/pom.xml b/stream/proto/pom.xml
index 851ca75aa1..43561cc362 100644
--- a/stream/proto/pom.xml
+++ b/stream/proto/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/server/pom.xml b/stream/server/pom.xml
index 16579f7c31..76c8d9322c 100644
--- a/stream/server/pom.xml
+++ b/stream/server/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-server</artifactId>
   <name>Apache BookKeeper :: Stream Storage :: Server</name>
diff --git a/stream/statelib/pom.xml b/stream/statelib/pom.xml
index abb61312c5..d6f0a5d377 100644
--- a/stream/statelib/pom.xml
+++ b/stream/statelib/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>stream-storage-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss</groupId>
diff --git a/stream/storage/api/pom.xml b/stream/storage/api/pom.xml
index 084a8e811a..958015a6cb 100644
--- a/stream/storage/api/pom.xml
+++ b/stream/storage/api/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-api</artifactId>
diff --git a/stream/storage/impl/pom.xml b/stream/storage/impl/pom.xml
index 7a38b48ea9..9392d38b8b 100644
--- a/stream/storage/impl/pom.xml
+++ b/stream/storage/impl/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-service-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-impl</artifactId>
diff --git a/stream/storage/pom.xml b/stream/storage/pom.xml
index 0af5dc3207..ad25a00337 100644
--- a/stream/storage/pom.xml
+++ b/stream/storage/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>stream-storage-service-parent</artifactId>
diff --git a/stream/tests-common/pom.xml b/stream/tests-common/pom.xml
index 16ed510718..0149bc5bb2 100644
--- a/stream/tests-common/pom.xml
+++ b/stream/tests-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>stream-storage-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/bc-non-fips/pom.xml b/tests/backward-compat/bc-non-fips/pom.xml
index 8632764a4d..7851dfd20b 100644
--- a/tests/backward-compat/bc-non-fips/pom.xml
+++ b/tests/backward-compat/bc-non-fips/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/current-server-old-clients/pom.xml b/tests/backward-compat/current-server-old-clients/pom.xml
index 16e4be2628..81afaf800a 100644
--- a/tests/backward-compat/current-server-old-clients/pom.xml
+++ b/tests/backward-compat/current-server-old-clients/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hierarchical-ledger-manager/pom.xml b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
index 273a843f99..cc52ba28a1 100644
--- a/tests/backward-compat/hierarchical-ledger-manager/pom.xml
+++ b/tests/backward-compat/hierarchical-ledger-manager/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/hostname-bookieid/pom.xml b/tests/backward-compat/hostname-bookieid/pom.xml
index e376453bff..c740c332e8 100644
--- a/tests/backward-compat/hostname-bookieid/pom.xml
+++ b/tests/backward-compat/hostname-bookieid/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/old-cookie-new-cluster/pom.xml b/tests/backward-compat/old-cookie-new-cluster/pom.xml
index 7ed2caf131..7eaaa84a75 100644
--- a/tests/backward-compat/old-cookie-new-cluster/pom.xml
+++ b/tests/backward-compat/old-cookie-new-cluster/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/pom.xml b/tests/backward-compat/pom.xml
index ff9960adaa..5d622131ed 100644
--- a/tests/backward-compat/pom.xml
+++ b/tests/backward-compat/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base-groovy</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../integration-tests-base-groovy</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/backward-compat/recovery-no-password/pom.xml b/tests/backward-compat/recovery-no-password/pom.xml
index 4056666a13..77512567b5 100644
--- a/tests/backward-compat/recovery-no-password/pom.xml
+++ b/tests/backward-compat/recovery-no-password/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade-direct/pom.xml b/tests/backward-compat/upgrade-direct/pom.xml
index cfeba28150..7068acf4a9 100644
--- a/tests/backward-compat/upgrade-direct/pom.xml
+++ b/tests/backward-compat/upgrade-direct/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/upgrade/pom.xml b/tests/backward-compat/upgrade/pom.xml
index 83d0fc713a..e0a5685a00 100644
--- a/tests/backward-compat/upgrade/pom.xml
+++ b/tests/backward-compat/upgrade/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/backward-compat/yahoo-custom-version/pom.xml b/tests/backward-compat/yahoo-custom-version/pom.xml
index b913b1573f..d3282314fa 100644
--- a/tests/backward-compat/yahoo-custom-version/pom.xml
+++ b/tests/backward-compat/yahoo-custom-version/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>backward-compat</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/docker-images/all-released-versions-image/pom.xml b/tests/docker-images/all-released-versions-image/pom.xml
index 26c651d5d5..0bbd462be6 100644
--- a/tests/docker-images/all-released-versions-image/pom.xml
+++ b/tests/docker-images/all-released-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/all-versions-image/pom.xml b/tests/docker-images/all-versions-image/pom.xml
index b6b23b260b..45a74d77e9 100644
--- a/tests/docker-images/all-versions-image/pom.xml
+++ b/tests/docker-images/all-versions-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/current-version-image/pom.xml b/tests/docker-images/current-version-image/pom.xml
index 8c47d2fc82..c0d649e8fd 100644
--- a/tests/docker-images/current-version-image/pom.xml
+++ b/tests/docker-images/current-version-image/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>docker-images</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/docker-images/pom.xml b/tests/docker-images/pom.xml
index 7cc0f10adf..a1bc569f87 100644
--- a/tests/docker-images/pom.xml
+++ b/tests/docker-images/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>docker-images</artifactId>
diff --git a/tests/integration-tests-base-groovy/pom.xml b/tests/integration-tests-base-groovy/pom.xml
index d8858b27a6..224356088f 100644
--- a/tests/integration-tests-base-groovy/pom.xml
+++ b/tests/integration-tests-base-groovy/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration-tests-base</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>../integration-tests-base</relativePath>
   </parent>
 
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index 11bbbfbb19..26a051f47b 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-topologies/pom.xml b/tests/integration-tests-topologies/pom.xml
index 083ce244de..d654e6b224 100644
--- a/tests/integration-tests-topologies/pom.xml
+++ b/tests/integration-tests-topologies/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration-tests-utils/pom.xml b/tests/integration-tests-utils/pom.xml
index 04c1da426a..f246495dbf 100644
--- a/tests/integration-tests-utils/pom.xml
+++ b/tests/integration-tests-utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/integration/cluster/pom.xml b/tests/integration/cluster/pom.xml
index af3090bc95..5a66bb4c29 100644
--- a/tests/integration/cluster/pom.xml
+++ b/tests/integration/cluster/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index 5e76818aaa..5a8334429e 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>integration</artifactId>
diff --git a/tests/integration/smoke/pom.xml b/tests/integration/smoke/pom.xml
index a46399628c..f28c9e8323 100644
--- a/tests/integration/smoke/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/integration/standalone/pom.xml b/tests/integration/standalone/pom.xml
index 8a3664f083..3acebcb3e6 100644
--- a/tests/integration/standalone/pom.xml
+++ b/tests/integration/standalone/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>integration</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
diff --git a/tests/pom.xml b/tests/pom.xml
index f1f39a2343..778b4e4136 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <groupId>com.datastax.oss.tests</groupId>
   <artifactId>tests-parent</artifactId>
diff --git a/tests/scripts/pom.xml b/tests/scripts/pom.xml
index 633b2dafc1..3ad8a768aa 100644
--- a/tests/scripts/pom.xml
+++ b/tests/scripts/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
 
   <groupId>com.datastax.oss.tests</groupId>
diff --git a/tests/shaded/bookkeeper-server-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
index 9644af9581..aed09b264c 100644
--- a/tests/shaded/bookkeeper-server-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-shaded-test</artifactId>
diff --git a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
index 3b5bf172aa..700d744600 100644
--- a/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
+++ b/tests/shaded/bookkeeper-server-tests-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>bookkeeper-server-tests-shaded-test</artifactId>
diff --git a/tests/shaded/distributedlog-core-shaded-test/pom.xml b/tests/shaded/distributedlog-core-shaded-test/pom.xml
index 28c3058c9a..f3c70878dc 100644
--- a/tests/shaded/distributedlog-core-shaded-test/pom.xml
+++ b/tests/shaded/distributedlog-core-shaded-test/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>com.datastax.oss.tests.shaded</groupId>
     <artifactId>shaded-tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>distributedlog-core-shaded-test</artifactId>
diff --git a/tests/shaded/pom.xml b/tests/shaded/pom.xml
index 3d0aeaf9f6..9b8c4900fe 100644
--- a/tests/shaded/pom.xml
+++ b/tests/shaded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss.tests</groupId>
     <artifactId>tests-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <groupId>com.datastax.oss.tests.shaded</groupId>
diff --git a/tools/all/pom.xml b/tools/all/pom.xml
index cbe5259ba5..f13d457b0d 100644
--- a/tools/all/pom.xml
+++ b/tools/all/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools</artifactId>
   <name>Apache BookKeeper :: Tools</name>
diff --git a/tools/framework/pom.xml b/tools/framework/pom.xml
index 18841192e6..595a818a34 100644
--- a/tools/framework/pom.xml
+++ b/tools/framework/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-framework</artifactId>
   <name>Apache BookKeeper :: Tools :: Framework</name>
diff --git a/tools/ledger/pom.xml b/tools/ledger/pom.xml
index 99c3625522..258c007d08 100644
--- a/tools/ledger/pom.xml
+++ b/tools/ledger/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper-tools-parent</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-ledger</artifactId>
   <name>Apache BookKeeper :: Tools :: Ledger</name>
diff --git a/tools/perf/pom.xml b/tools/perf/pom.xml
index aed4632b24..3cc1f2fd26 100644
--- a/tools/perf/pom.xml
+++ b/tools/perf/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-perf</artifactId>
   <name>Apache BookKeeper :: Tools :: Perf</name>
diff --git a/tools/pom.xml b/tools/pom.xml
index 3e334b7ac9..bf66ef4f82 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>bookkeeper</artifactId>
     <groupId>com.datastax.oss</groupId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-tools-parent</artifactId>
   <name>Apache BookKeeper :: Tools :: Parent</name>
diff --git a/tools/stream/pom.xml b/tools/stream/pom.xml
index 5efea24ed5..2573e15b42 100644
--- a/tools/stream/pom.xml
+++ b/tools/stream/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper-tools-parent</artifactId>
-    <version>4.14.5.1.0.2</version>
+    <version>4.14.5.1.0.3-SNAPSHOT</version>
   </parent>
   <artifactId>stream-storage-cli</artifactId>
   <name>Apache BookKeeper :: Tools :: Stream</name>


[bookkeeper] 12/22: Fix the PendingAddOp is not recycled when LedgerHandler closed (#3321)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 4f9d5d90032b71ead91ce59cbb4d2f3d87f3c044
Author: Yong Zhang <zh...@gmail.com>
AuthorDate: Wed Jun 8 18:02:32 2022 +0800

    Fix the PendingAddOp is not recycled when LedgerHandler closed (#3321)
    
    ---
    
    **Motivation**
    
    When adding an entry into a bookie, the entry data lifecycle
    is handled by the bookie client. The data buffer will be
    released after receiving a corresponding response from the
    bookie server. So the user doesn't care about the entry
    buffer releasing.
    But when the ledgerHandler is closed, the PendingAddOp is not
    recycled which leads to the data buffer never being released.
    We should release that after the callback executed.
    
    (cherry picked from commit 3d01e6e13cf5410e913859c5c92c002e986df518)
---
 .../src/main/java/org/apache/bookkeeper/client/LedgerHandle.java        | 2 ++
 .../src/main/java/org/apache/bookkeeper/client/PendingAddOp.java        | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
index 661499e96c..d91e16567b 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
@@ -1323,6 +1323,7 @@ public class LedgerHandle implements WriteHandle {
                         LOG.warn("Attempt to add to closed ledger: {}", ledgerId);
                         op.cb.addCompleteWithLatency(BKException.Code.LedgerClosedException,
                                 LedgerHandle.this, INVALID_ENTRY_ID, 0, op.ctx);
+                        op.recyclePendAddOpObject();
                     }
 
                     @Override
@@ -1334,6 +1335,7 @@ public class LedgerHandle implements WriteHandle {
                 op.cb.addCompleteWithLatency(BookKeeper.getReturnRc(clientCtx.getBookieClient(),
                                                                     BKException.Code.InterruptedException),
                         LedgerHandle.this, INVALID_ENTRY_ID, 0, op.ctx);
+                op.recyclePendAddOpObject();
             }
             return;
         }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java
index 729d9fe077..223ce182f7 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java
@@ -499,7 +499,7 @@ class PendingAddOp extends SafeRunnable implements WriteCallback {
         }
     }
 
-    private void recyclePendAddOpObject() {
+    public void recyclePendAddOpObject() {
         entryId = LedgerHandle.INVALID_ENTRY_ID;
         currentLedgerLength = -1;
         if (payload != null) {


[bookkeeper] 21/22: Add missed call to onReadRequestFinish() when read request rejected (#3482)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 1cb10ce578336036203d92109ff57e69801063e8
Author: Michael Marshall <mm...@apache.org>
AuthorDate: Sun Sep 11 23:57:08 2022 -0700

    Add missed call to onReadRequestFinish() when read request rejected (#3482)
    
    Fixes: https://github.com/apache/bookkeeper/issues/2945
    
    ### Motivation
    
    When a read request is rejected due to the limit on the number of reads that can be enqueued, we need to decrement the metric for `bookkeeper_server_READ_ENTRY_IN_PROGRESS` and release the `readsSemaphore`, if it is not null.
    
    ### Changes
    
    * Call `onReadRequestFinish()` for failures in the V2 and V3 request processing logic.
    
    ### Observation
    It looks like the V2 responses for this kind of failure are not throttled, even when `throttleReadResponses` is true. We could call `read.sendReadReqResponse(` to enable this throttling. I didn't change it here because there might be a reason we're not throttling these small responses.
    
    (cherry picked from commit 6fa13ecdfca01d4d65d49c489484acc5755e616e)
---
 .../main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java   | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
index 2223274882..d34ce3c9da 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieRequestProcessor.java
@@ -540,6 +540,7 @@ public class BookieRequestProcessor implements RequestProcessor {
                     .setReadResponse(readResponse);
                 BookkeeperProtocol.Response resp = response.build();
                 read.sendResponse(readResponse.getStatus(), resp, requestStats.getReadRequestStats());
+                onReadRequestFinish();
             }
         }
     }
@@ -676,6 +677,7 @@ public class BookieRequestProcessor implements RequestProcessor {
                     BookieProtocol.ETOOMANYREQUESTS,
                     ResponseBuilder.buildErrorResponse(BookieProtocol.ETOOMANYREQUESTS, r),
                     requestStats.getReadRequestStats());
+                onReadRequestFinish();
             }
         }
     }


[bookkeeper] 03/22: Use 'com.datastax.oss' as groupId

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 8c0b960bfe9b746415614f5a602433bf4eb5bcd9
Author: Nicolò Boschi <bo...@gmail.com>
AuthorDate: Thu Apr 28 15:06:06 2022 +0200

    Use 'com.datastax.oss' as groupId
---
 bookkeeper-benchmark/pom.xml                       |    12 +-
 bookkeeper-common-allocator/pom.xml                |     4 +-
 bookkeeper-common/pom.xml                          |     8 +-
 bookkeeper-dist/all/pom.xml                        |    24 +-
 bookkeeper-dist/bkctl/pom.xml                      |     6 +-
 bookkeeper-dist/pom.xml                            |     4 +-
 bookkeeper-dist/server/pom.xml                     |    20 +-
 bookkeeper-http/http-server/pom.xml                |     6 +-
 bookkeeper-http/pom.xml                            |     6 +-
 bookkeeper-http/servlet-http-server/pom.xml        |     8 +-
 bookkeeper-http/vertx-http-server/pom.xml          |     8 +-
 bookkeeper-proto/pom.xml                           |     4 +-
 .../storage/ldb/DbLedgerStorageDataFormats.java    |  1011 +
 .../bookkeeper/proto/BookkeeperProtocol.java       | 21165 +++++++++++++++++++
 .../org/apache/bookkeeper/proto/DataFormats.java   | 12282 +++++++++++
 bookkeeper-server/pom.xml                          |    24 +-
 .../codahale-metrics-provider/pom.xml              |     8 +-
 bookkeeper-stats-providers/pom.xml                 |     4 +-
 .../prometheus-metrics-provider/pom.xml            |     8 +-
 bookkeeper-stats/pom.xml                           |     6 +-
 buildtools/pom.xml                                 |     6 +-
 circe-checksum/pom.xml                             |     4 +-
 cpu-affinity/pom.xml                               |     4 +-
 metadata-drivers/etcd/pom.xml                      |    12 +-
 metadata-drivers/pom.xml                           |     6 +-
 microbenchmarks/pom.xml                            |    10 +-
 pom.xml                                            |     4 +-
 shaded/bookkeeper-server-shaded/pom.xml            |    22 +-
 shaded/bookkeeper-server-tests-shaded/pom.xml      |    20 +-
 shaded/distributedlog-core-shaded/pom.xml          |    32 +-
 shaded/pom.xml                                     |     6 +-
 site3/website/.docusaurus/DONT-EDIT-THIS-FOLDER    |     4 +
 site3/website/.docusaurus/client-modules.js        |     6 +
 site3/website/.docusaurus/codeTranslations.json    |     1 +
 .../default/blog-archive-80c.json                  |     3 +
 .../default/blog-post-list-prop-default.json       |     4 +
 .../site-docs-admin-autorecovery-md-8df.json       |    25 +
 .../default/site-docs-admin-bookies-md-8af.json    |    25 +
 .../site-docs-admin-decomission-md-9ed.json        |    25 +
 .../site-docs-admin-geo-replication-md-4cd.json    |    16 +
 .../default/site-docs-admin-http-md-f69.json       |    25 +
 .../default/site-docs-admin-metrics-md-318.json    |    25 +
 .../default/site-docs-admin-perf-md-a7a.json       |    16 +
 .../default/site-docs-admin-placement-md-ba6.json  |    16 +
 .../default/site-docs-admin-upgrade-md-676.json    |    25 +
 .../site-docs-api-distributedlog-api-md-232.json   |    25 +
 .../site-docs-api-ledger-adv-api-md-089.json       |    25 +
 .../default/site-docs-api-ledger-api-md-9db.json   |    25 +
 .../default/site-docs-api-overview-md-65d.json     |    25 +
 .../default/site-docs-deployment-dcos-md-299.json  |    25 +
 .../site-docs-deployment-kubernetes-md-04d.json    |    25 +
 .../site-docs-deployment-manual-md-d09.json        |    25 +
 .../site-docs-development-codebase-md-ed3.json     |    16 +
 .../site-docs-development-protocol-md-bbd.json     |    25 +
 .../site-docs-getting-started-concepts-md-7b3.json |    25 +
 ...e-docs-getting-started-installation-md-54f.json |    25 +
 ...te-docs-getting-started-run-locally-md-ebb.json |    25 +
 .../site-docs-overview-overview-md-e94.json        |    21 +
 .../default/site-docs-reference-cli-md-91c.json    |    21 +
 .../default/site-docs-reference-config-md-9a9.json |    25 +
 .../site-docs-security-overview-md-359.json        |    25 +
 .../default/site-docs-security-sasl-md-9c4.json    |    25 +
 .../default/site-docs-security-tls-md-8fd.json     |    25 +
 .../site-docs-security-zookeeper-md-8ef.json       |    25 +
 ...s-version-4-10-0-admin-autorecovery-md-896.json |    25 +
 ...d-docs-version-4-10-0-admin-bookies-md-f2d.json |    25 +
 ...ersion-4-10-0-admin-geo-replication-md-5a1.json |    16 +
 ...oned-docs-version-4-10-0-admin-http-md-4cf.json |    25 +
 ...d-docs-version-4-10-0-admin-metrics-md-0d2.json |    25 +
 ...oned-docs-version-4-10-0-admin-perf-md-e52.json |    16 +
 ...docs-version-4-10-0-admin-placement-md-58e.json |    16 +
 ...d-docs-version-4-10-0-admin-upgrade-md-a34.json |    25 +
 ...rsion-4-10-0-api-distributedlog-api-md-da2.json |    25 +
 ...s-version-4-10-0-api-ledger-adv-api-md-d21.json |    25 +
 ...-docs-version-4-10-0-api-ledger-api-md-5f2.json |    25 +
 ...ed-docs-version-4-10-0-api-overview-md-000.json |    25 +
 ...docs-version-4-10-0-deployment-dcos-md-a2d.json |    25 +
 ...ersion-4-10-0-deployment-kubernetes-md-b68.json |    25 +
 ...cs-version-4-10-0-deployment-manual-md-8e8.json |    25 +
 ...version-4-10-0-development-codebase-md-1dd.json |    16 +
 ...version-4-10-0-development-protocol-md-3f8.json |    25 +
 ...ion-4-10-0-getting-started-concepts-md-ff2.json |    25 +
 ...4-10-0-getting-started-installation-md-ed0.json |    25 +
 ...-4-10-0-getting-started-run-locally-md-1c2.json |    25 +
 ...cs-version-4-10-0-overview-overview-md-73d.json |    21 +
 ...d-docs-version-4-10-0-reference-cli-md-bf2.json |    21 +
 ...ocs-version-4-10-0-reference-config-md-0d0.json |    25 +
 ...cs-version-4-10-0-reference-metrics-md-d91.json |    16 +
 ...cs-version-4-10-0-security-overview-md-e6a.json |    25 +
 ...d-docs-version-4-10-0-security-sasl-md-286.json |    25 +
 ...ed-docs-version-4-10-0-security-tls-md-3ec.json |    25 +
 ...s-version-4-10-0-security-zookeeper-md-a3d.json |    25 +
 ...s-version-4-11-1-admin-autorecovery-md-0a9.json |    25 +
 ...d-docs-version-4-11-1-admin-bookies-md-612.json |    25 +
 ...cs-version-4-11-1-admin-decomission-md-488.json |    25 +
 ...ersion-4-11-1-admin-geo-replication-md-83e.json |    16 +
 ...oned-docs-version-4-11-1-admin-http-md-313.json |    25 +
 ...d-docs-version-4-11-1-admin-metrics-md-1bb.json |    25 +
 ...oned-docs-version-4-11-1-admin-perf-md-5d5.json |    16 +
 ...docs-version-4-11-1-admin-placement-md-a4f.json |    16 +
 ...d-docs-version-4-11-1-admin-upgrade-md-5b8.json |    25 +
 ...rsion-4-11-1-api-distributedlog-api-md-2d2.json |    25 +
 ...s-version-4-11-1-api-ledger-adv-api-md-9c5.json |    25 +
 ...-docs-version-4-11-1-api-ledger-api-md-b21.json |    25 +
 ...ed-docs-version-4-11-1-api-overview-md-d67.json |    25 +
 ...docs-version-4-11-1-deployment-dcos-md-3b3.json |    25 +
 ...ersion-4-11-1-deployment-kubernetes-md-1e0.json |    25 +
 ...cs-version-4-11-1-deployment-manual-md-09c.json |    25 +
 ...version-4-11-1-development-codebase-md-8d3.json |    16 +
 ...version-4-11-1-development-protocol-md-6cd.json |    25 +
 ...ion-4-11-1-getting-started-concepts-md-8e9.json |    25 +
 ...4-11-1-getting-started-installation-md-638.json |    25 +
 ...-4-11-1-getting-started-run-locally-md-48e.json |    25 +
 ...cs-version-4-11-1-overview-overview-md-db1.json |    21 +
 ...d-docs-version-4-11-1-reference-cli-md-7f6.json |    21 +
 ...ocs-version-4-11-1-reference-config-md-86a.json |    25 +
 ...cs-version-4-11-1-reference-metrics-md-bb7.json |    16 +
 ...cs-version-4-11-1-security-overview-md-50f.json |    25 +
 ...d-docs-version-4-11-1-security-sasl-md-a58.json |    25 +
 ...ed-docs-version-4-11-1-security-tls-md-9a2.json |    25 +
 ...s-version-4-11-1-security-zookeeper-md-fca.json |    25 +
 ...s-version-4-12-1-admin-autorecovery-md-818.json |    25 +
 ...d-docs-version-4-12-1-admin-bookies-md-f51.json |    25 +
 ...cs-version-4-12-1-admin-decomission-md-e52.json |    25 +
 ...ersion-4-12-1-admin-geo-replication-md-363.json |    16 +
 ...oned-docs-version-4-12-1-admin-http-md-561.json |    25 +
 ...d-docs-version-4-12-1-admin-metrics-md-4bf.json |    25 +
 ...oned-docs-version-4-12-1-admin-perf-md-17f.json |    16 +
 ...docs-version-4-12-1-admin-placement-md-b26.json |    16 +
 ...d-docs-version-4-12-1-admin-upgrade-md-492.json |    25 +
 ...rsion-4-12-1-api-distributedlog-api-md-7b3.json |    25 +
 ...s-version-4-12-1-api-ledger-adv-api-md-b4b.json |    25 +
 ...-docs-version-4-12-1-api-ledger-api-md-877.json |    25 +
 ...ed-docs-version-4-12-1-api-overview-md-1c4.json |    25 +
 ...docs-version-4-12-1-deployment-dcos-md-061.json |    25 +
 ...ersion-4-12-1-deployment-kubernetes-md-39a.json |    25 +
 ...cs-version-4-12-1-deployment-manual-md-20c.json |    25 +
 ...version-4-12-1-development-codebase-md-341.json |    16 +
 ...version-4-12-1-development-protocol-md-b67.json |    25 +
 ...ion-4-12-1-getting-started-concepts-md-c9c.json |    25 +
 ...4-12-1-getting-started-installation-md-e2a.json |    25 +
 ...-4-12-1-getting-started-run-locally-md-c76.json |    25 +
 ...cs-version-4-12-1-overview-overview-md-c20.json |    21 +
 ...d-docs-version-4-12-1-reference-cli-md-6ff.json |    21 +
 ...ocs-version-4-12-1-reference-config-md-154.json |    25 +
 ...cs-version-4-12-1-reference-metrics-md-cbf.json |    16 +
 ...cs-version-4-12-1-security-overview-md-c87.json |    25 +
 ...d-docs-version-4-12-1-security-sasl-md-760.json |    25 +
 ...ed-docs-version-4-12-1-security-tls-md-421.json |    25 +
 ...s-version-4-12-1-security-zookeeper-md-ffb.json |    25 +
 ...s-version-4-13-0-admin-autorecovery-md-a9e.json |    25 +
 ...d-docs-version-4-13-0-admin-bookies-md-224.json |    25 +
 ...cs-version-4-13-0-admin-decomission-md-724.json |    25 +
 ...ersion-4-13-0-admin-geo-replication-md-aed.json |    16 +
 ...oned-docs-version-4-13-0-admin-http-md-f9a.json |    25 +
 ...d-docs-version-4-13-0-admin-metrics-md-c14.json |    25 +
 ...oned-docs-version-4-13-0-admin-perf-md-a36.json |    16 +
 ...docs-version-4-13-0-admin-placement-md-407.json |    16 +
 ...d-docs-version-4-13-0-admin-upgrade-md-800.json |    25 +
 ...rsion-4-13-0-api-distributedlog-api-md-dd5.json |    25 +
 ...s-version-4-13-0-api-ledger-adv-api-md-b02.json |    25 +
 ...-docs-version-4-13-0-api-ledger-api-md-561.json |    25 +
 ...ed-docs-version-4-13-0-api-overview-md-a43.json |    25 +
 ...docs-version-4-13-0-deployment-dcos-md-4d4.json |    25 +
 ...ersion-4-13-0-deployment-kubernetes-md-3a0.json |    25 +
 ...cs-version-4-13-0-deployment-manual-md-3f7.json |    25 +
 ...version-4-13-0-development-codebase-md-ea5.json |    16 +
 ...version-4-13-0-development-protocol-md-5ac.json |    25 +
 ...ion-4-13-0-getting-started-concepts-md-730.json |    25 +
 ...4-13-0-getting-started-installation-md-7e8.json |    25 +
 ...-4-13-0-getting-started-run-locally-md-dca.json |    25 +
 ...cs-version-4-13-0-overview-overview-md-eba.json |    21 +
 ...d-docs-version-4-13-0-reference-cli-md-f74.json |    21 +
 ...ocs-version-4-13-0-reference-config-md-d0a.json |    25 +
 ...cs-version-4-13-0-reference-metrics-md-eff.json |    16 +
 ...cs-version-4-13-0-security-overview-md-7ce.json |    25 +
 ...d-docs-version-4-13-0-security-sasl-md-e0d.json |    25 +
 ...ed-docs-version-4-13-0-security-tls-md-b7f.json |    25 +
 ...s-version-4-13-0-security-zookeeper-md-c56.json |    25 +
 ...s-version-4-14-4-admin-autorecovery-md-9da.json |    25 +
 ...d-docs-version-4-14-4-admin-bookies-md-0a5.json |    25 +
 ...cs-version-4-14-4-admin-decomission-md-97d.json |    25 +
 ...ersion-4-14-4-admin-geo-replication-md-218.json |    16 +
 ...oned-docs-version-4-14-4-admin-http-md-428.json |    25 +
 ...d-docs-version-4-14-4-admin-metrics-md-db3.json |    25 +
 ...oned-docs-version-4-14-4-admin-perf-md-5de.json |    16 +
 ...docs-version-4-14-4-admin-placement-md-98d.json |    16 +
 ...d-docs-version-4-14-4-admin-upgrade-md-567.json |    25 +
 ...rsion-4-14-4-api-distributedlog-api-md-4d7.json |    25 +
 ...s-version-4-14-4-api-ledger-adv-api-md-655.json |    25 +
 ...-docs-version-4-14-4-api-ledger-api-md-79f.json |    25 +
 ...ed-docs-version-4-14-4-api-overview-md-ede.json |    25 +
 ...docs-version-4-14-4-deployment-dcos-md-1a0.json |    25 +
 ...ersion-4-14-4-deployment-kubernetes-md-de8.json |    25 +
 ...cs-version-4-14-4-deployment-manual-md-aa9.json |    25 +
 ...version-4-14-4-development-codebase-md-18d.json |    16 +
 ...version-4-14-4-development-protocol-md-d99.json |    25 +
 ...ion-4-14-4-getting-started-concepts-md-865.json |    25 +
 ...4-14-4-getting-started-installation-md-385.json |    25 +
 ...-4-14-4-getting-started-run-locally-md-f18.json |    25 +
 ...cs-version-4-14-4-overview-overview-md-247.json |    21 +
 ...d-docs-version-4-14-4-reference-cli-md-ddc.json |    21 +
 ...ocs-version-4-14-4-reference-config-md-2c3.json |    25 +
 ...cs-version-4-14-4-reference-metrics-md-d33.json |    16 +
 ...cs-version-4-14-4-security-overview-md-642.json |    25 +
 ...d-docs-version-4-14-4-security-sasl-md-607.json |    25 +
 ...ed-docs-version-4-14-4-security-tls-md-482.json |    25 +
 ...s-version-4-14-4-security-zookeeper-md-865.json |    25 +
 ...cs-version-4-5-1-admin-autorecovery-md-c34.json |    25 +
 ...ed-docs-version-4-5-1-admin-bookies-md-2ba.json |    25 +
 ...version-4-5-1-admin-geo-replication-md-850.json |    16 +
 ...ed-docs-version-4-5-1-admin-metrics-md-8cc.json |    25 +
 ...ioned-docs-version-4-5-1-admin-perf-md-ca9.json |    16 +
 ...-docs-version-4-5-1-admin-placement-md-fb1.json |    16 +
 ...ed-docs-version-4-5-1-admin-upgrade-md-244.json |    25 +
 ...ersion-4-5-1-api-distributedlog-api-md-7fa.json |    25 +
 ...cs-version-4-5-1-api-ledger-adv-api-md-2c6.json |    25 +
 ...d-docs-version-4-5-1-api-ledger-api-md-480.json |    25 +
 ...ned-docs-version-4-5-1-api-overview-md-685.json |    25 +
 ...-docs-version-4-5-1-deployment-dcos-md-1d0.json |    25 +
 ...version-4-5-1-deployment-kubernetes-md-c53.json |    25 +
 ...ocs-version-4-5-1-deployment-manual-md-4d7.json |    25 +
 ...-version-4-5-1-development-codebase-md-bc5.json |    16 +
 ...-version-4-5-1-development-protocol-md-ac6.json |    25 +
 ...sion-4-5-1-getting-started-concepts-md-c78.json |    25 +
 ...-4-5-1-getting-started-installation-md-485.json |    25 +
 ...n-4-5-1-getting-started-run-locally-md-5b2.json |    25 +
 ...ocs-version-4-5-1-overview-overview-md-e15.json |    21 +
 ...ed-docs-version-4-5-1-reference-cli-md-739.json |    21 +
 ...docs-version-4-5-1-reference-config-md-05d.json |    25 +
 ...ocs-version-4-5-1-reference-metrics-md-342.json |    16 +
 ...ocs-version-4-5-1-security-overview-md-21e.json |    25 +
 ...ed-docs-version-4-5-1-security-sasl-md-5cc.json |    25 +
 ...ned-docs-version-4-5-1-security-tls-md-5e6.json |    25 +
 ...cs-version-4-5-1-security-zookeeper-md-3d9.json |    25 +
 ...cs-version-4-6-2-admin-autorecovery-md-469.json |    25 +
 ...ed-docs-version-4-6-2-admin-bookies-md-c39.json |    25 +
 ...version-4-6-2-admin-geo-replication-md-ee4.json |    16 +
 ...ioned-docs-version-4-6-2-admin-http-md-425.json |    25 +
 ...ed-docs-version-4-6-2-admin-metrics-md-e17.json |    25 +
 ...ioned-docs-version-4-6-2-admin-perf-md-def.json |    16 +
 ...-docs-version-4-6-2-admin-placement-md-2b1.json |    16 +
 ...ed-docs-version-4-6-2-admin-upgrade-md-d86.json |    25 +
 ...ersion-4-6-2-api-distributedlog-api-md-ded.json |    25 +
 ...cs-version-4-6-2-api-ledger-adv-api-md-c29.json |    25 +
 ...d-docs-version-4-6-2-api-ledger-api-md-001.json |    25 +
 ...ned-docs-version-4-6-2-api-overview-md-a47.json |    25 +
 ...-docs-version-4-6-2-deployment-dcos-md-a67.json |    25 +
 ...version-4-6-2-deployment-kubernetes-md-30c.json |    25 +
 ...ocs-version-4-6-2-deployment-manual-md-abb.json |    25 +
 ...-version-4-6-2-development-codebase-md-2ec.json |    16 +
 ...-version-4-6-2-development-protocol-md-72c.json |    25 +
 ...sion-4-6-2-getting-started-concepts-md-af3.json |    25 +
 ...-4-6-2-getting-started-installation-md-118.json |    25 +
 ...n-4-6-2-getting-started-run-locally-md-b21.json |    25 +
 ...ocs-version-4-6-2-overview-overview-md-da8.json |    21 +
 ...ed-docs-version-4-6-2-reference-cli-md-24e.json |    21 +
 ...docs-version-4-6-2-reference-config-md-0de.json |    25 +
 ...ocs-version-4-6-2-reference-metrics-md-bbe.json |    16 +
 ...ocs-version-4-6-2-security-overview-md-136.json |    25 +
 ...ed-docs-version-4-6-2-security-sasl-md-295.json |    25 +
 ...ned-docs-version-4-6-2-security-tls-md-caa.json |    25 +
 ...cs-version-4-6-2-security-zookeeper-md-61a.json |    25 +
 ...cs-version-4-7-3-admin-autorecovery-md-87d.json |    25 +
 ...ed-docs-version-4-7-3-admin-bookies-md-df9.json |    25 +
 ...version-4-7-3-admin-geo-replication-md-d1a.json |    16 +
 ...ioned-docs-version-4-7-3-admin-http-md-14a.json |    25 +
 ...ed-docs-version-4-7-3-admin-metrics-md-dff.json |    25 +
 ...ioned-docs-version-4-7-3-admin-perf-md-126.json |    16 +
 ...-docs-version-4-7-3-admin-placement-md-07b.json |    16 +
 ...ed-docs-version-4-7-3-admin-upgrade-md-cb1.json |    25 +
 ...ersion-4-7-3-api-distributedlog-api-md-bc2.json |    25 +
 ...cs-version-4-7-3-api-ledger-adv-api-md-f61.json |    25 +
 ...d-docs-version-4-7-3-api-ledger-api-md-053.json |    25 +
 ...ned-docs-version-4-7-3-api-overview-md-9f6.json |    25 +
 ...-docs-version-4-7-3-deployment-dcos-md-587.json |    25 +
 ...version-4-7-3-deployment-kubernetes-md-ea0.json |    25 +
 ...ocs-version-4-7-3-deployment-manual-md-905.json |    25 +
 ...-version-4-7-3-development-codebase-md-b7d.json |    16 +
 ...-version-4-7-3-development-protocol-md-491.json |    25 +
 ...sion-4-7-3-getting-started-concepts-md-de2.json |    25 +
 ...-4-7-3-getting-started-installation-md-fd1.json |    25 +
 ...n-4-7-3-getting-started-run-locally-md-1a4.json |    25 +
 ...ocs-version-4-7-3-overview-overview-md-257.json |    21 +
 ...ed-docs-version-4-7-3-reference-cli-md-084.json |    21 +
 ...docs-version-4-7-3-reference-config-md-bbd.json |    25 +
 ...ocs-version-4-7-3-reference-metrics-md-758.json |    16 +
 ...ocs-version-4-7-3-security-overview-md-035.json |    25 +
 ...ed-docs-version-4-7-3-security-sasl-md-0aa.json |    25 +
 ...ned-docs-version-4-7-3-security-tls-md-fce.json |    25 +
 ...cs-version-4-7-3-security-zookeeper-md-cb9.json |    25 +
 ...cs-version-4-8-2-admin-autorecovery-md-33c.json |    25 +
 ...ed-docs-version-4-8-2-admin-bookies-md-716.json |    25 +
 ...version-4-8-2-admin-geo-replication-md-1cb.json |    16 +
 ...ioned-docs-version-4-8-2-admin-http-md-2e5.json |    25 +
 ...ed-docs-version-4-8-2-admin-metrics-md-d8a.json |    25 +
 ...ioned-docs-version-4-8-2-admin-perf-md-6ee.json |    16 +
 ...-docs-version-4-8-2-admin-placement-md-186.json |    16 +
 ...ed-docs-version-4-8-2-admin-upgrade-md-0d5.json |    25 +
 ...ersion-4-8-2-api-distributedlog-api-md-791.json |    25 +
 ...cs-version-4-8-2-api-ledger-adv-api-md-a38.json |    25 +
 ...d-docs-version-4-8-2-api-ledger-api-md-f9a.json |    25 +
 ...ned-docs-version-4-8-2-api-overview-md-ca9.json |    25 +
 ...-docs-version-4-8-2-deployment-dcos-md-ed8.json |    25 +
 ...version-4-8-2-deployment-kubernetes-md-31b.json |    25 +
 ...ocs-version-4-8-2-deployment-manual-md-7e9.json |    25 +
 ...-version-4-8-2-development-codebase-md-9fe.json |    16 +
 ...-version-4-8-2-development-protocol-md-629.json |    25 +
 ...sion-4-8-2-getting-started-concepts-md-985.json |    25 +
 ...-4-8-2-getting-started-installation-md-1d9.json |    25 +
 ...n-4-8-2-getting-started-run-locally-md-1ac.json |    25 +
 ...ocs-version-4-8-2-overview-overview-md-131.json |    21 +
 ...ed-docs-version-4-8-2-reference-cli-md-5cf.json |    21 +
 ...docs-version-4-8-2-reference-config-md-926.json |    25 +
 ...ocs-version-4-8-2-reference-metrics-md-3cf.json |    16 +
 ...ocs-version-4-8-2-security-overview-md-ffb.json |    25 +
 ...ed-docs-version-4-8-2-security-sasl-md-c6f.json |    25 +
 ...ned-docs-version-4-8-2-security-tls-md-2cc.json |    25 +
 ...cs-version-4-8-2-security-zookeeper-md-747.json |    25 +
 ...cs-version-4-9-2-admin-autorecovery-md-781.json |    25 +
 ...ed-docs-version-4-9-2-admin-bookies-md-f2d.json |    25 +
 ...version-4-9-2-admin-geo-replication-md-b54.json |    16 +
 ...ioned-docs-version-4-9-2-admin-http-md-3f4.json |    25 +
 ...ed-docs-version-4-9-2-admin-metrics-md-6f4.json |    25 +
 ...ioned-docs-version-4-9-2-admin-perf-md-772.json |    16 +
 ...-docs-version-4-9-2-admin-placement-md-4ce.json |    16 +
 ...ed-docs-version-4-9-2-admin-upgrade-md-f51.json |    25 +
 ...ersion-4-9-2-api-distributedlog-api-md-db4.json |    25 +
 ...cs-version-4-9-2-api-ledger-adv-api-md-91a.json |    25 +
 ...d-docs-version-4-9-2-api-ledger-api-md-83a.json |    25 +
 ...ned-docs-version-4-9-2-api-overview-md-4a8.json |    25 +
 ...-docs-version-4-9-2-deployment-dcos-md-807.json |    25 +
 ...version-4-9-2-deployment-kubernetes-md-829.json |    25 +
 ...ocs-version-4-9-2-deployment-manual-md-114.json |    25 +
 ...-version-4-9-2-development-codebase-md-93e.json |    16 +
 ...-version-4-9-2-development-protocol-md-78c.json |    25 +
 ...sion-4-9-2-getting-started-concepts-md-be9.json |    25 +
 ...-4-9-2-getting-started-installation-md-b6c.json |    25 +
 ...n-4-9-2-getting-started-run-locally-md-14d.json |    25 +
 ...ocs-version-4-9-2-overview-overview-md-9ca.json |    21 +
 ...ed-docs-version-4-9-2-reference-cli-md-6eb.json |    21 +
 ...docs-version-4-9-2-reference-config-md-e49.json |    25 +
 ...ocs-version-4-9-2-reference-metrics-md-634.json |    16 +
 ...ocs-version-4-9-2-security-overview-md-3d7.json |    25 +
 ...ed-docs-version-4-9-2-security-sasl-md-d9c.json |    25 +
 ...ned-docs-version-4-9-2-security-tls-md-483.json |    25 +
 ...cs-version-4-9-2-security-zookeeper-md-e28.json |    25 +
 .../default/version-4-10-0-metadata-prop-d1e.json  |   372 +
 .../default/version-4-11-1-metadata-prop-280.json  |   384 +
 .../default/version-4-12-1-metadata-prop-897.json  |   384 +
 .../default/version-4-13-0-metadata-prop-ab4.json  |   384 +
 .../default/version-4-14-4-metadata-prop-7a0.json  |   384 +
 .../default/version-4-5-1-metadata-prop-bc3.json   |   360 +
 .../default/version-4-6-2-metadata-prop-234.json   |   372 +
 .../default/version-4-7-3-metadata-prop-11c.json   |   372 +
 .../default/version-4-8-2-metadata-prop-9c6.json   |   372 +
 .../default/version-4-9-2-metadata-prop-8ae.json   |   372 +
 .../default/version-current-metadata-prop-751.json |   379 +
 ...b-workflow-for-bookkeeper-proposals-md-92f.json |     8 +
 ...bp-21-new-api-close-inconsistencies-md-837.json |     8 +
 ...losing-ledgers-from-opening-ledgers-md-05c.json |     8 +
 ...-bps-bp-25-moving-checksum-to-proto-md-e54.json |     8 +
 ...26-move-distributedlog-core-library-md-b3c.json |     8 +
 ...-pages-bps-bp-27-new-bookkeeper-cli-md-7e8.json |     8 +
 ...es-bps-bp-28-etcd-as-metadata-store-md-3f0.json |     8 +
 ...bps-bp-29-metadata-store-api-module-md-dc0.json |     8 +
 ...site-src-pages-bps-bp-31-durability-md-86a.json |     8 +
 ...ages-bps-bp-32-advisory-write-close-md-b80.json |     8 +
 ...p-33-building-official-docker-imags-md-e1e.json |     8 +
 ...-bps-bp-34-cluster-metadata-checker-md-62a.json |     8 +
 ...rc-pages-bps-bp-35-128-bits-support-md-137.json |     8 +
 ...p-36-stats-documentation-annotation-md-c7f.json |     8 +
 ...-pages-bps-bp-37-conf-documentation-md-bf6.json |     8 +
 ...bps-bp-38-bookie-endpoint-discovery-md-411.json |     8 +
 .../site-src-pages-bps-bp-41-bookieid-md-7f2.json  |     8 +
 ...ages-bps-bp-42-new-api-list-ledgers-md-22d.json |     8 +
 ...rc-pages-bps-bp-43-gradle-migration-md-e39.json |     8 +
 ...ite-src-pages-bps-bp-44-use-metrics-md-678.json |     8 +
 ...pages-bps-bp-46-run-without-journal-md-3bb.json |     8 +
 .../site-src-pages-bps-bp-template-md-026.json     |     8 +
 ...ages-community-bookkeeper-proposals-md-553.json |     8 +
 ...te-src-pages-community-coding-guide-md-e2a.json |     8 +
 ...te-src-pages-community-contributing-md-7c8.json |     8 +
 ...te-src-pages-community-issue-report-md-8d5.json |     8 +
 .../site-src-pages-community-licensing-md-352.json |     8 +
 ...e-src-pages-community-mailing-lists-md-f1c.json |     8 +
 .../site-src-pages-community-meeting-md-a19.json   |     8 +
 ...e-src-pages-community-presentations-md-d70.json |     8 +
 ...e-src-pages-community-release-guide-md-cf9.json |     8 +
 .../site-src-pages-community-releases-md-c90.json  |     8 +
 .../site-src-pages-community-slack-md-a64.json     |     8 +
 .../site-src-pages-community-testing-md-2d2.json   |     8 +
 .../site-src-pages-project-bylaws-md-13a.json      |     8 +
 .../site-src-pages-project-privacy-md-b92.json     |     8 +
 .../default/site-src-pages-project-who-md-d28.json |     8 +
 .../site-src-pages-release-notes-md-146.json       |     8 +
 .../default/site-src-pages-releases-md-7ef.json    |    11 +
 .../default/docusaurus-debug-all-content-673.json  |  9685 +++++++++
 site3/website/.docusaurus/docusaurus.config.js     |   477 +
 site3/website/.docusaurus/globalData.json          |  1698 ++
 site3/website/.docusaurus/i18n.json                |    14 +
 site3/website/.docusaurus/registry.js              |   376 +
 site3/website/.docusaurus/routes.js                |  2128 ++
 site3/website/.docusaurus/routesChunkNames.json    |  1476 ++
 site3/website/.docusaurus/site-metadata.json       |    36 +
 stats/pom.xml                                      |     6 +-
 stats/utils/pom.xml                                |     8 +-
 stream/api/pom.xml                                 |    10 +-
 stream/bk-grpc-name-resolver/pom.xml               |    16 +-
 stream/clients/java/all/pom.xml                    |    10 +-
 stream/clients/java/base/pom.xml                   |     8 +-
 stream/clients/java/kv/pom.xml                     |     8 +-
 stream/clients/java/pom.xml                        |     4 +-
 stream/clients/pom.xml                             |     4 +-
 stream/common/pom.xml                              |    12 +-
 stream/distributedlog/common/pom.xml               |     8 +-
 stream/distributedlog/core/pom.xml                 |    12 +-
 stream/distributedlog/io/dlfs/pom.xml              |    10 +-
 stream/distributedlog/io/pom.xml                   |     4 +-
 stream/distributedlog/pom.xml                      |     8 +-
 stream/distributedlog/protocol/pom.xml             |     6 +-
 stream/pom.xml                                     |     6 +-
 stream/proto/pom.xml                               |    10 +-
 .../stream/proto/kv/rpc/TableServiceGrpc.java      |   698 +
 .../stream/proto/storage/MetaRangeServiceGrpc.java |   301 +
 .../stream/proto/storage/RootRangeServiceGrpc.java |   725 +
 .../proto/storage/StorageContainerServiceGrpc.java |   313 +
 .../stream/proto/BandwidthBasedSplitPolicy.java    |   739 +
 .../proto/BandwidthBasedSplitPolicyOrBuilder.java  |    39 +
 .../stream/proto/FixedRangeSplitPolicy.java        |   483 +
 .../proto/FixedRangeSplitPolicyOrBuilder.java      |    15 +
 .../apache/bookkeeper/stream/proto/KeyRange.java   |   549 +
 .../bookkeeper/stream/proto/KeyRangeOrBuilder.java |    21 +
 .../stream/proto/NamespaceConfiguration.java       |   615 +
 .../proto/NamespaceConfigurationOrBuilder.java     |    24 +
 .../bookkeeper/stream/proto/NamespaceMetadata.java |   615 +
 .../stream/proto/NamespaceMetadataOrBuilder.java   |    24 +
 .../stream/proto/NamespaceProperties.java          |   818 +
 .../stream/proto/NamespacePropertiesOrBuilder.java |    42 +
 .../bookkeeper/stream/proto/ParentRanges.java      |   664 +
 .../bookkeeper/stream/proto/ParentRangesList.java  |   770 +
 .../stream/proto/ParentRangesListOrBuilder.java    |    33 +
 .../stream/proto/ParentRangesOrBuilder.java        |    32 +
 .../apache/bookkeeper/stream/proto/RangeId.java    |   614 +
 .../bookkeeper/stream/proto/RangeIdOrBuilder.java  |    27 +
 .../bookkeeper/stream/proto/RangeKeyType.java      |   130 +
 .../bookkeeper/stream/proto/RangeMetadata.java     |  1310 ++
 .../stream/proto/RangeMetadataOrBuilder.java       |   103 +
 .../bookkeeper/stream/proto/RangeProperties.java   |   679 +
 .../stream/proto/RangePropertiesOrBuilder.java     |    33 +
 .../apache/bookkeeper/stream/proto/RangeState.java |   122 +
 .../bookkeeper/stream/proto/RetentionPolicy.java   |   607 +
 .../stream/proto/RetentionPolicyOrBuilder.java     |    24 +
 .../stream/proto/SegmentRollingPolicy.java         |   795 +
 .../proto/SegmentRollingPolicyOrBuilder.java       |    39 +
 .../proto/SizeBasedSegmentRollingPolicy.java       |   484 +
 .../SizeBasedSegmentRollingPolicyOrBuilder.java    |    15 +
 .../bookkeeper/stream/proto/SplitPolicy.java       |  1012 +
 .../stream/proto/SplitPolicyOrBuilder.java         |    52 +
 .../bookkeeper/stream/proto/SplitPolicyType.java   |   113 +
 .../bookkeeper/stream/proto/StorageType.java       |   120 +
 .../org/apache/bookkeeper/stream/proto/Stream.java |   345 +
 .../stream/proto/StreamConfiguration.java          |  1367 ++
 .../stream/proto/StreamConfigurationOrBuilder.java |    94 +
 .../bookkeeper/stream/proto/StreamMetadata.java    |  1593 ++
 .../stream/proto/StreamMetadataOrBuilder.java      |   129 +
 .../apache/bookkeeper/stream/proto/StreamName.java |   695 +
 .../stream/proto/StreamNameOrBuilder.java          |    33 +
 .../bookkeeper/stream/proto/StreamProperties.java  |   875 +
 .../stream/proto/StreamPropertiesOrBuilder.java    |    48 +
 .../stream/proto/TimeBasedRetentionPolicy.java     |   484 +
 .../proto/TimeBasedRetentionPolicyOrBuilder.java   |    15 +
 .../proto/TimeBasedSegmentRollingPolicy.java       |   484 +
 .../TimeBasedSegmentRollingPolicyOrBuilder.java    |    15 +
 .../bookkeeper/stream/proto/cluster/Cluster.java   |    88 +
 .../proto/cluster/ClusterAssignmentData.java       |   705 +
 .../cluster/ClusterAssignmentDataOrBuilder.java    |    43 +
 .../stream/proto/cluster/ClusterMetadata.java      |   484 +
 .../proto/cluster/ClusterMetadataOrBuilder.java    |    15 +
 .../stream/proto/cluster/ServerAssignmentData.java |   639 +
 .../cluster/ServerAssignmentDataOrBuilder.java     |    38 +
 .../bookkeeper/stream/proto/common/Common.java     |    49 +
 .../bookkeeper/stream/proto/common/Endpoint.java   |   621 +
 .../stream/proto/common/EndpointOrBuilder.java     |    27 +
 .../apache/bookkeeper/stream/proto/kv/Event.java   |  1185 ++
 .../bookkeeper/stream/proto/kv/EventOrBuilder.java |    98 +
 .../bookkeeper/stream/proto/kv/KeyValue.java       |  1049 +
 .../stream/proto/kv/KeyValueOrBuilder.java         |    83 +
 .../org/apache/bookkeeper/stream/proto/kv/Kv.java  |    67 +
 .../bookkeeper/stream/proto/kv/rpc/Compare.java    |  1546 ++
 .../stream/proto/kv/rpc/CompareOrBuilder.java      |   135 +
 .../stream/proto/kv/rpc/DeleteRangeRequest.java    |   924 +
 .../proto/kv/rpc/DeleteRangeRequestOrBuilder.java  |    71 +
 .../stream/proto/kv/rpc/DeleteRangeResponse.java   |  1131 +
 .../proto/kv/rpc/DeleteRangeResponseOrBuilder.java |    78 +
 .../stream/proto/kv/rpc/IncrementRequest.java      |   901 +
 .../proto/kv/rpc/IncrementRequestOrBuilder.java    |    66 +
 .../stream/proto/kv/rpc/IncrementResponse.java     |   688 +
 .../proto/kv/rpc/IncrementResponseOrBuilder.java   |    34 +
 .../bookkeeper/stream/proto/kv/rpc/KvRpc.java      |   292 +
 .../bookkeeper/stream/proto/kv/rpc/PutRequest.java |  1228 ++
 .../stream/proto/kv/rpc/PutRequestOrBuilder.java   |   106 +
 .../stream/proto/kv/rpc/PutResponse.java           |   843 +
 .../stream/proto/kv/rpc/PutResponseOrBuilder.java  |    51 +
 .../stream/proto/kv/rpc/RangeRequest.java          |  2136 ++
 .../stream/proto/kv/rpc/RangeRequestOrBuilder.java |   199 +
 .../stream/proto/kv/rpc/RangeResponse.java         |  1235 ++
 .../proto/kv/rpc/RangeResponseOrBuilder.java       |    93 +
 .../bookkeeper/stream/proto/kv/rpc/RequestOp.java  |  1130 +
 .../stream/proto/kv/rpc/RequestOpOrBuilder.java    |    56 +
 .../stream/proto/kv/rpc/ResponseHeader.java        |   779 +
 .../proto/kv/rpc/ResponseHeaderOrBuilder.java      |    55 +
 .../bookkeeper/stream/proto/kv/rpc/ResponseOp.java |  1130 +
 .../stream/proto/kv/rpc/ResponseOpOrBuilder.java   |    56 +
 .../stream/proto/kv/rpc/RoutingHeader.java         |   673 +
 .../proto/kv/rpc/RoutingHeaderOrBuilder.java       |    39 +
 .../bookkeeper/stream/proto/kv/rpc/TxnRequest.java |  2106 ++
 .../stream/proto/kv/rpc/TxnRequestOrBuilder.java   |   188 +
 .../stream/proto/kv/rpc/TxnResponse.java           |  1154 +
 .../stream/proto/kv/rpc/TxnResponseOrBuilder.java  |    83 +
 .../stream/proto/kv/store/CheckpointMetadata.java  |  1095 +
 .../kv/store/CheckpointMetadataOrBuilder.java      |    70 +
 .../bookkeeper/stream/proto/kv/store/Command.java  |  1558 ++
 .../stream/proto/kv/store/CommandOrBuilder.java    |    86 +
 .../bookkeeper/stream/proto/kv/store/FileInfo.java |   695 +
 .../stream/proto/kv/store/FileInfoOrBuilder.java   |    33 +
 .../bookkeeper/stream/proto/kv/store/KeyMeta.java  |   875 +
 .../stream/proto/kv/store/KeyMetaOrBuilder.java    |    68 +
 .../bookkeeper/stream/proto/kv/store/KvStore.java  |   112 +
 .../stream/proto/kv/store/NopRequest.java          |   419 +
 .../stream/proto/kv/store/NopRequestOrBuilder.java |     9 +
 .../stream/proto/kv/store/ValueType.java           |   121 +
 .../proto/storage/CreateNamespaceRequest.java      |   745 +
 .../storage/CreateNamespaceRequestOrBuilder.java   |    36 +
 .../proto/storage/CreateNamespaceResponse.java     |   703 +
 .../storage/CreateNamespaceResponseOrBuilder.java  |    35 +
 .../stream/proto/storage/CreateStreamRequest.java  |   883 +
 .../storage/CreateStreamRequestOrBuilder.java      |    48 +
 .../stream/proto/storage/CreateStreamResponse.java |   703 +
 .../storage/CreateStreamResponseOrBuilder.java     |    35 +
 .../proto/storage/DeleteNamespaceRequest.java      |   557 +
 .../storage/DeleteNamespaceRequestOrBuilder.java   |    21 +
 .../proto/storage/DeleteNamespaceResponse.java     |   515 +
 .../storage/DeleteNamespaceResponseOrBuilder.java  |    20 +
 .../stream/proto/storage/DeleteStreamRequest.java  |   695 +
 .../storage/DeleteStreamRequestOrBuilder.java      |    33 +
 .../stream/proto/storage/DeleteStreamResponse.java |   515 +
 .../storage/DeleteStreamResponseOrBuilder.java     |    20 +
 .../proto/storage/GetActiveRangesRequest.java      |   720 +
 .../storage/GetActiveRangesRequestOrBuilder.java   |    42 +
 .../proto/storage/GetActiveRangesResponse.java     |   866 +
 .../storage/GetActiveRangesResponseOrBuilder.java  |    44 +
 .../stream/proto/storage/GetNamespaceRequest.java  |   557 +
 .../storage/GetNamespaceRequestOrBuilder.java      |    21 +
 .../stream/proto/storage/GetNamespaceResponse.java |   703 +
 .../storage/GetNamespaceResponseOrBuilder.java     |    35 +
 .../GetStorageContainerEndpointRequest.java        |   770 +
 ...etStorageContainerEndpointRequestOrBuilder.java |    33 +
 .../GetStorageContainerEndpointResponse.java       |   866 +
 ...tStorageContainerEndpointResponseOrBuilder.java |    44 +
 .../stream/proto/storage/GetStreamRequest.java     |   796 +
 .../proto/storage/GetStreamRequestOrBuilder.java   |    37 +
 .../stream/proto/storage/GetStreamResponse.java    |   703 +
 .../proto/storage/GetStreamResponseOrBuilder.java  |    35 +
 .../OneStorageContainerEndpointRequest.java        |   549 +
 ...neStorageContainerEndpointRequestOrBuilder.java |    21 +
 .../OneStorageContainerEndpointResponse.java       |   703 +
 ...eStorageContainerEndpointResponseOrBuilder.java |    35 +
 .../stream/proto/storage/RelatedRanges.java        |   883 +
 .../proto/storage/RelatedRangesOrBuilder.java      |    52 +
 .../stream/proto/storage/RelationType.java         |   122 +
 .../stream/proto/storage/StatusCode.java           |   393 +
 .../bookkeeper/stream/proto/storage/Storage.java   |   362 +
 .../proto/storage/StorageContainerEndpoint.java    |  1088 +
 .../storage/StorageContainerEndpointOrBuilder.java |    60 +
 stream/server/pom.xml                              |    10 +-
 stream/statelib/pom.xml                            |    18 +-
 .../bookkeeper/proto/statestore/kv/Command.java    |  1558 ++
 .../proto/statestore/kv/CommandOrBuilder.java      |    86 +
 .../proto/statestore/kv/DeleteRequest.java         |   487 +
 .../statestore/kv/DeleteRequestOrBuilder.java      |    15 +
 .../proto/statestore/kv/IncrementRequest.java      |   552 +
 .../statestore/kv/IncrementRequestOrBuilder.java   |    21 +
 .../apache/bookkeeper/proto/statestore/kv/Kv.java  |   118 +
 .../bookkeeper/proto/statestore/kv/NopRequest.java |   419 +
 .../proto/statestore/kv/NopRequestOrBuilder.java   |     9 +
 .../proto/statestore/kv/PutIfAbsentRequest.java    |   555 +
 .../statestore/kv/PutIfAbsentRequestOrBuilder.java |    21 +
 .../bookkeeper/proto/statestore/kv/PutRequest.java |   555 +
 .../proto/statestore/kv/PutRequestOrBuilder.java   |    21 +
 .../bookkeeper/proto/statestore/kv/ValueType.java  |   121 +
 stream/storage/api/pom.xml                         |     8 +-
 stream/storage/impl/pom.xml                        |    18 +-
 stream/storage/pom.xml                             |     4 +-
 stream/tests-common/pom.xml                        |     6 +-
 .../tests/proto/rpc/PingPongServiceGrpc.java       |   487 +
 .../protobuf/test/Proto2CoderTestMessages.java     |  3641 ++++
 .../bookkeeper/tests/proto/rpc/PingRequest.java    |   484 +
 .../tests/proto/rpc/PingRequestOrBuilder.java      |    15 +
 .../bookkeeper/tests/proto/rpc/PongResponse.java   |   628 +
 .../tests/proto/rpc/PongResponseOrBuilder.java     |    31 +
 .../java/org/bookkeeper/tests/proto/rpc/Rpc.java   |    72 +
 tests/backward-compat/bc-non-fips/pom.xml          |     8 +-
 .../current-server-old-clients/pom.xml             |     6 +-
 .../hierarchical-ledger-manager/pom.xml            |     6 +-
 tests/backward-compat/hostname-bookieid/pom.xml    |     6 +-
 .../backward-compat/old-cookie-new-cluster/pom.xml |     6 +-
 tests/backward-compat/pom.xml                      |     6 +-
 tests/backward-compat/recovery-no-password/pom.xml |     8 +-
 tests/backward-compat/upgrade-direct/pom.xml       |     6 +-
 tests/backward-compat/upgrade/pom.xml              |     6 +-
 tests/backward-compat/yahoo-custom-version/pom.xml |     6 +-
 .../all-released-versions-image/pom.xml            |     6 +-
 tests/docker-images/all-versions-image/pom.xml     |    10 +-
 tests/docker-images/current-version-image/pom.xml  |     8 +-
 tests/docker-images/pom.xml                        |     6 +-
 tests/integration-tests-base-groovy/pom.xml        |     6 +-
 tests/integration-tests-base/pom.xml               |    10 +-
 tests/integration-tests-topologies/pom.xml         |     8 +-
 tests/integration-tests-utils/pom.xml              |     6 +-
 tests/integration/cluster/pom.xml                  |    14 +-
 tests/integration/pom.xml                          |     6 +-
 tests/integration/smoke/pom.xml                    |    12 +-
 tests/integration/standalone/pom.xml               |    10 +-
 tests/pom.xml                                      |     6 +-
 tests/scripts/pom.xml                              |     6 +-
 tests/shaded/bookkeeper-server-shaded-test/pom.xml |     6 +-
 .../bookkeeper-server-tests-shaded-test/pom.xml    |     8 +-
 .../shaded/distributedlog-core-shaded-test/pom.xml |    18 +-
 tests/shaded/pom.xml                               |     6 +-
 tools/all/pom.xml                                  |     8 +-
 tools/framework/pom.xml                            |     8 +-
 tools/ledger/pom.xml                               |    12 +-
 tools/perf/pom.xml                                 |    12 +-
 tools/pom.xml                                      |     4 +-
 tools/stream/pom.xml                               |    12 +-
 636 files changed, 137917 insertions(+), 386 deletions(-)

diff --git a/bookkeeper-benchmark/pom.xml b/bookkeeper-benchmark/pom.xml
index 8989297f10..8e3e1ce218 100644
--- a/bookkeeper-benchmark/pom.xml
+++ b/bookkeeper-benchmark/pom.xml
@@ -20,10 +20,10 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
-  <groupId>org.apache.bookkeeper</groupId>
+  <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-benchmark</artifactId>
   <name>Apache BookKeeper :: Benchmark</name>
   <properties>
@@ -62,20 +62,20 @@
        <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>${project.version}</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-common</artifactId>
       <version>${project.version}</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>${project.version}</version>
       <type>test-jar</type>
diff --git a/bookkeeper-common-allocator/pom.xml b/bookkeeper-common-allocator/pom.xml
index 6b9b791f25..618ab27f57 100644
--- a/bookkeeper-common-allocator/pom.xml
+++ b/bookkeeper-common-allocator/pom.xml
@@ -18,9 +18,9 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.bookkeeper</groupId>
+    <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5-SNAPSHOT</version>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common-allocator</artifactId>
   <name>Apache BookKeeper :: Common :: Allocator</name>
diff --git a/bookkeeper-common/pom.xml b/bookkeeper-common/pom.xml
index 95d1bfe496..1af464b0ac 100644
--- a/bookkeeper-common/pom.xml
+++ b/bookkeeper-common/pom.xml
@@ -18,20 +18,20 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.bookkeeper</groupId>
+    <groupId>com.datastax.oss</groupId>
     <artifactId>bookkeeper</artifactId>
-    <version>4.14.5-SNAPSHOT</version>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-common</artifactId>
   <name>Apache BookKeeper :: Common</name>
   <dependencies>
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-stats-api</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>cpu-affinity</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
diff --git a/bookkeeper-dist/all/pom.xml b/bookkeeper-dist/all/pom.xml
index 2c15b0b946..d4790c4cd2 100644
--- a/bookkeeper-dist/all/pom.xml
+++ b/bookkeeper-dist/all/pom.xml
@@ -22,8 +22,8 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
@@ -33,51 +33,51 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.stats -->
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-stats-api</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>codahale-metrics-provider</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>prometheus-metrics-provider</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.http -->
     <dependency>
-      <groupId>org.apache.bookkeeper.http</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>http-server</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper.http</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>vertx-http-server</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.tools (new CLI) -->
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-tools</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- dlog -->
     <dependency>
-      <groupId>org.apache.distributedlog</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>distributedlog-core</artifactId>
       <version>${project.version}</version>
     </dependency>
@@ -85,14 +85,14 @@
 
     <!-- stream.storage -->
     <dependency>
-       <groupId>org.apache.bookkeeper</groupId>
+       <groupId>com.datastax.oss</groupId>
        <artifactId>stream-storage-server</artifactId>
        <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper benchmark -->
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-benchmark</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/bookkeeper-dist/bkctl/pom.xml b/bookkeeper-dist/bkctl/pom.xml
index 8561ca29ad..4717a2a0a4 100644
--- a/bookkeeper-dist/bkctl/pom.xml
+++ b/bookkeeper-dist/bkctl/pom.xml
@@ -22,8 +22,8 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
@@ -34,7 +34,7 @@
   <dependencies>
     <!-- bookkeeper.tools (new CLI) -->
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-tools</artifactId>
       <version>${project.version}</version>
       <exclusions>
diff --git a/bookkeeper-dist/pom.xml b/bookkeeper-dist/pom.xml
index 13e67d06fd..4be1811715 100644
--- a/bookkeeper-dist/pom.xml
+++ b/bookkeeper-dist/pom.xml
@@ -18,8 +18,8 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>bookkeeper-dist</artifactId>
diff --git a/bookkeeper-dist/server/pom.xml b/bookkeeper-dist/server/pom.xml
index 2a7393c294..682cb4682b 100644
--- a/bookkeeper-dist/server/pom.xml
+++ b/bookkeeper-dist/server/pom.xml
@@ -22,8 +22,8 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>bookkeeper-dist</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 
@@ -33,52 +33,52 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.stats -->
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-stats-api</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper.stats</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>prometheus-metrics-provider</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.http -->
     <dependency>
-      <groupId>org.apache.bookkeeper.http</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>http-server</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper.http</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>vertx-http-server</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- stream.storage -->
     <dependency>
-       <groupId>org.apache.bookkeeper</groupId>
+       <groupId>com.datastax.oss</groupId>
        <artifactId>stream-storage-server</artifactId>
        <version>${project.version}</version>
     </dependency>
 
     <!-- bookkeeper.tools (new CLI) -->
     <dependency>
-      <groupId>org.apache.bookkeeper</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>bookkeeper-tools</artifactId>
       <version>${project.version}</version>
     </dependency>
 
     <!-- dlog -->
     <dependency>
-      <groupId>org.apache.distributedlog</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>distributedlog-core</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/bookkeeper-http/http-server/pom.xml b/bookkeeper-http/http-server/pom.xml
index 3ca6ef4426..d4390fed3a 100644
--- a/bookkeeper-http/http-server/pom.xml
+++ b/bookkeeper-http/http-server/pom.xml
@@ -18,12 +18,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.bookkeeper.http</groupId>
+  <groupId>com.datastax.oss</groupId>
   <artifactId>http-server</artifactId>
   <name>Apache BookKeeper :: Http :: Http Server</name>
   <url>http://maven.apache.org</url>
diff --git a/bookkeeper-http/pom.xml b/bookkeeper-http/pom.xml
index b8ec970ee5..534aa5e2a2 100644
--- a/bookkeeper-http/pom.xml
+++ b/bookkeeper-http/pom.xml
@@ -18,11 +18,11 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.bookkeeper.http</groupId>
+  <groupId>com.datastax.oss</groupId>
   <artifactId>bookkeeper-http</artifactId>
   <packaging>pom</packaging>
   <name>Apache BookKeeper :: Http</name>
diff --git a/bookkeeper-http/servlet-http-server/pom.xml b/bookkeeper-http/servlet-http-server/pom.xml
index f534f2d5cc..754c094a20 100644
--- a/bookkeeper-http/servlet-http-server/pom.xml
+++ b/bookkeeper-http/servlet-http-server/pom.xml
@@ -18,19 +18,19 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>bookkeeper</artifactId>
-        <groupId>org.apache.bookkeeper</groupId>
-        <version>4.14.5-SNAPSHOT</version>
+        <groupId>com.datastax.oss</groupId>
+        <version>4.14.0-SNAPSHOT</version>
         <relativePath>../..</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.bookkeeper.http</groupId>
+    <groupId>com.datastax.oss</groupId>
     <artifactId>servlet-http-server</artifactId>
     <name>Apache BookKeeper :: Bookkeeper Http :: Servlet Http Server</name>
     <url>http://maven.apache.org</url>
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.bookkeeper.http</groupId>
+            <groupId>com.datastax.oss</groupId>
             <artifactId>http-server</artifactId>
             <version>${project.version}</version>
         </dependency>
diff --git a/bookkeeper-http/vertx-http-server/pom.xml b/bookkeeper-http/vertx-http-server/pom.xml
index 1cbafb73d8..4f57d9fca7 100644
--- a/bookkeeper-http/vertx-http-server/pom.xml
+++ b/bookkeeper-http/vertx-http-server/pom.xml
@@ -18,12 +18,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.bookkeeper.http</groupId>
+  <groupId>com.datastax.oss</groupId>
   <artifactId>vertx-http-server</artifactId>
   <name>Apache BookKeeper :: Bookkeeper Http :: Vertx Http Server</name>
   <url>http://maven.apache.org</url>
@@ -41,7 +41,7 @@
       <artifactId>guava</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.bookkeeper.http</groupId>
+      <groupId>com.datastax.oss</groupId>
       <artifactId>http-server</artifactId>
       <version>${project.version}</version>
     </dependency>
diff --git a/bookkeeper-proto/pom.xml b/bookkeeper-proto/pom.xml
index 18e9c0bf4b..26769331cd 100644
--- a/bookkeeper-proto/pom.xml
+++ b/bookkeeper-proto/pom.xml
@@ -19,8 +19,8 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <artifactId>bookkeeper</artifactId>
-    <groupId>org.apache.bookkeeper</groupId>
-    <version>4.14.5-SNAPSHOT</version>
+    <groupId>com.datastax.oss</groupId>
+    <version>4.14.0-SNAPSHOT</version>
   </parent>
   <artifactId>bookkeeper-proto</artifactId>
   <name>Apache BookKeeper :: Protocols</name>
diff --git a/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageDataFormats.java b/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageDataFormats.java
new file mode 100644
index 0000000000..ba70297ddf
--- /dev/null
+++ b/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageDataFormats.java
@@ -0,0 +1,1011 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: DbLedgerStorageDataFormats.proto
+
+package org.apache.bookkeeper.bookie.storage.ldb;
+
+public final class DbLedgerStorageDataFormats {
+  private DbLedgerStorageDataFormats() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  public interface LedgerDataOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:LedgerData)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required bool exists = 1;</code>
+     * @return Whether the exists field is set.
+     */
+    boolean hasExists();
+    /**
+     * <code>required bool exists = 1;</code>
+     * @return The exists.
+     */
+    boolean getExists();
+
+    /**
+     * <code>required bool fenced = 2;</code>
+     * @return Whether the fenced field is set.
+     */
+    boolean hasFenced();
+    /**
+     * <code>required bool fenced = 2;</code>
+     * @return The fenced.
+     */
+    boolean getFenced();
+
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    boolean hasMasterKey();
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    com.google.protobuf.ByteString getMasterKey();
+
+    /**
+     * <code>optional bytes explicitLac = 4;</code>
+     * @return Whether the explicitLac field is set.
+     */
+    boolean hasExplicitLac();
+    /**
+     * <code>optional bytes explicitLac = 4;</code>
+     * @return The explicitLac.
+     */
+    com.google.protobuf.ByteString getExplicitLac();
+
+    /**
+     * <code>optional bool limbo = 5;</code>
+     * @return Whether the limbo field is set.
+     */
+    boolean hasLimbo();
+    /**
+     * <code>optional bool limbo = 5;</code>
+     * @return The limbo.
+     */
+    boolean getLimbo();
+  }
+  /**
+   * <pre>
+   **
+   * Ledger metadata stored in the bookie
+   * </pre>
+   *
+   * Protobuf type {@code LedgerData}
+   */
+  public static final class LedgerData extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:LedgerData)
+      LedgerDataOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use LedgerData.newBuilder() to construct.
+    private LedgerData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private LedgerData() {
+      masterKey_ = com.google.protobuf.ByteString.EMPTY;
+      explicitLac_ = com.google.protobuf.ByteString.EMPTY;
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new LedgerData();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LedgerData(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000001;
+              exists_ = input.readBool();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              fenced_ = input.readBool();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              masterKey_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              explicitLac_ = input.readBytes();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000010;
+              limbo_ = input.readBool();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.internal_static_LedgerData_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.internal_static_LedgerData_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.class, org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int EXISTS_FIELD_NUMBER = 1;
+    private boolean exists_;
+    /**
+     * <code>required bool exists = 1;</code>
+     * @return Whether the exists field is set.
+     */
+    @java.lang.Override
+    public boolean hasExists() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>required bool exists = 1;</code>
+     * @return The exists.
+     */
+    @java.lang.Override
+    public boolean getExists() {
+      return exists_;
+    }
+
+    public static final int FENCED_FIELD_NUMBER = 2;
+    private boolean fenced_;
+    /**
+     * <code>required bool fenced = 2;</code>
+     * @return Whether the fenced field is set.
+     */
+    @java.lang.Override
+    public boolean hasFenced() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <code>required bool fenced = 2;</code>
+     * @return The fenced.
+     */
+    @java.lang.Override
+    public boolean getFenced() {
+      return fenced_;
+    }
+
+    public static final int MASTERKEY_FIELD_NUMBER = 3;
+    private com.google.protobuf.ByteString masterKey_;
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    @java.lang.Override
+    public boolean hasMasterKey() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getMasterKey() {
+      return masterKey_;
+    }
+
+    public static final int EXPLICITLAC_FIELD_NUMBER = 4;
+    private com.google.protobuf.ByteString explicitLac_;
+    /**
+     * <code>optional bytes explicitLac = 4;</code>
+     * @return Whether the explicitLac field is set.
+     */
+    @java.lang.Override
+    public boolean hasExplicitLac() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <code>optional bytes explicitLac = 4;</code>
+     * @return The explicitLac.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getExplicitLac() {
+      return explicitLac_;
+    }
+
+    public static final int LIMBO_FIELD_NUMBER = 5;
+    private boolean limbo_;
+    /**
+     * <code>optional bool limbo = 5;</code>
+     * @return Whether the limbo field is set.
+     */
+    @java.lang.Override
+    public boolean hasLimbo() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <code>optional bool limbo = 5;</code>
+     * @return The limbo.
+     */
+    @java.lang.Override
+    public boolean getLimbo() {
+      return limbo_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasExists()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasFenced()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasMasterKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeBool(1, exists_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeBool(2, fenced_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeBytes(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeBytes(4, explicitLac_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeBool(5, limbo_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(1, exists_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(2, fenced_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, explicitLac_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, limbo_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData other = (org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData) obj;
+
+      if (hasExists() != other.hasExists()) return false;
+      if (hasExists()) {
+        if (getExists()
+            != other.getExists()) return false;
+      }
+      if (hasFenced() != other.hasFenced()) return false;
+      if (hasFenced()) {
+        if (getFenced()
+            != other.getFenced()) return false;
+      }
+      if (hasMasterKey() != other.hasMasterKey()) return false;
+      if (hasMasterKey()) {
+        if (!getMasterKey()
+            .equals(other.getMasterKey())) return false;
+      }
+      if (hasExplicitLac() != other.hasExplicitLac()) return false;
+      if (hasExplicitLac()) {
+        if (!getExplicitLac()
+            .equals(other.getExplicitLac())) return false;
+      }
+      if (hasLimbo() != other.hasLimbo()) return false;
+      if (hasLimbo()) {
+        if (getLimbo()
+            != other.getLimbo()) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasExists()) {
+        hash = (37 * hash) + EXISTS_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getExists());
+      }
+      if (hasFenced()) {
+        hash = (37 * hash) + FENCED_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getFenced());
+      }
+      if (hasMasterKey()) {
+        hash = (37 * hash) + MASTERKEY_FIELD_NUMBER;
+        hash = (53 * hash) + getMasterKey().hashCode();
+      }
+      if (hasExplicitLac()) {
+        hash = (37 * hash) + EXPLICITLAC_FIELD_NUMBER;
+        hash = (53 * hash) + getExplicitLac().hashCode();
+      }
+      if (hasLimbo()) {
+        hash = (37 * hash) + LIMBO_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+            getLimbo());
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     **
+     * Ledger metadata stored in the bookie
+     * </pre>
+     *
+     * Protobuf type {@code LedgerData}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:LedgerData)
+        org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerDataOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.internal_static_LedgerData_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.internal_static_LedgerData_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.class, org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        exists_ = false;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        fenced_ = false;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        masterKey_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        explicitLac_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        limbo_ = false;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.internal_static_LedgerData_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData getDefaultInstanceForType() {
+        return org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData build() {
+        org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData buildPartial() {
+        org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData result = new org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          result.exists_ = exists_;
+          to_bitField0_ |= 0x00000001;
+        }
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.fenced_ = fenced_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.masterKey_ = masterKey_;
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.explicitLac_ = explicitLac_;
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.limbo_ = limbo_;
+          to_bitField0_ |= 0x00000010;
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData) {
+          return mergeFrom((org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData other) {
+        if (other == org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData.getDefaultInstance()) return this;
+        if (other.hasExists()) {
+          setExists(other.getExists());
+        }
+        if (other.hasFenced()) {
+          setFenced(other.getFenced());
+        }
+        if (other.hasMasterKey()) {
+          setMasterKey(other.getMasterKey());
+        }
+        if (other.hasExplicitLac()) {
+          setExplicitLac(other.getExplicitLac());
+        }
+        if (other.hasLimbo()) {
+          setLimbo(other.getLimbo());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasExists()) {
+          return false;
+        }
+        if (!hasFenced()) {
+          return false;
+        }
+        if (!hasMasterKey()) {
+          return false;
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private boolean exists_ ;
+      /**
+       * <code>required bool exists = 1;</code>
+       * @return Whether the exists field is set.
+       */
+      @java.lang.Override
+      public boolean hasExists() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>required bool exists = 1;</code>
+       * @return The exists.
+       */
+      @java.lang.Override
+      public boolean getExists() {
+        return exists_;
+      }
+      /**
+       * <code>required bool exists = 1;</code>
+       * @param value The exists to set.
+       * @return This builder for chaining.
+       */
+      public Builder setExists(boolean value) {
+        bitField0_ |= 0x00000001;
+        exists_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required bool exists = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearExists() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        exists_ = false;
+        onChanged();
+        return this;
+      }
+
+      private boolean fenced_ ;
+      /**
+       * <code>required bool fenced = 2;</code>
+       * @return Whether the fenced field is set.
+       */
+      @java.lang.Override
+      public boolean hasFenced() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <code>required bool fenced = 2;</code>
+       * @return The fenced.
+       */
+      @java.lang.Override
+      public boolean getFenced() {
+        return fenced_;
+      }
+      /**
+       * <code>required bool fenced = 2;</code>
+       * @param value The fenced to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFenced(boolean value) {
+        bitField0_ |= 0x00000002;
+        fenced_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required bool fenced = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFenced() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        fenced_ = false;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString masterKey_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return Whether the masterKey field is set.
+       */
+      @java.lang.Override
+      public boolean hasMasterKey() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return The masterKey.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getMasterKey() {
+        return masterKey_;
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @param value The masterKey to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMasterKey(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        masterKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMasterKey() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        masterKey_ = getDefaultInstance().getMasterKey();
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString explicitLac_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes explicitLac = 4;</code>
+       * @return Whether the explicitLac field is set.
+       */
+      @java.lang.Override
+      public boolean hasExplicitLac() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <code>optional bytes explicitLac = 4;</code>
+       * @return The explicitLac.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getExplicitLac() {
+        return explicitLac_;
+      }
+      /**
+       * <code>optional bytes explicitLac = 4;</code>
+       * @param value The explicitLac to set.
+       * @return This builder for chaining.
+       */
+      public Builder setExplicitLac(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        explicitLac_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes explicitLac = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearExplicitLac() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        explicitLac_ = getDefaultInstance().getExplicitLac();
+        onChanged();
+        return this;
+      }
+
+      private boolean limbo_ ;
+      /**
+       * <code>optional bool limbo = 5;</code>
+       * @return Whether the limbo field is set.
+       */
+      @java.lang.Override
+      public boolean hasLimbo() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <code>optional bool limbo = 5;</code>
+       * @return The limbo.
+       */
+      @java.lang.Override
+      public boolean getLimbo() {
+        return limbo_;
+      }
+      /**
+       * <code>optional bool limbo = 5;</code>
+       * @param value The limbo to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLimbo(boolean value) {
+        bitField0_ |= 0x00000010;
+        limbo_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bool limbo = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLimbo() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        limbo_ = false;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:LedgerData)
+    }
+
+    // @@protoc_insertion_point(class_scope:LedgerData)
+    private static final org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData();
+    }
+
+    public static org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<LedgerData>
+        PARSER = new com.google.protobuf.AbstractParser<LedgerData>() {
+      @java.lang.Override
+      public LedgerData parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LedgerData(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<LedgerData> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LedgerData> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorageDataFormats.LedgerData getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_LedgerData_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_LedgerData_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n DbLedgerStorageDataFormats.proto\"c\n\nLe" +
+      "dgerData\022\016\n\006exists\030\001 \002(\010\022\016\n\006fenced\030\002 \002(\010" +
+      "\022\021\n\tmasterKey\030\003 \002(\014\022\023\n\013explicitLac\030\004 \001(\014" +
+      "\022\r\n\005limbo\030\005 \001(\010B,\n(org.apache.bookkeeper" +
+      ".bookie.storage.ldbH\001"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_LedgerData_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_LedgerData_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_LedgerData_descriptor,
+        new java.lang.String[] { "Exists", "Fenced", "MasterKey", "ExplicitLac", "Limbo", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java b/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
new file mode 100644
index 0000000000..20fd3d7055
--- /dev/null
+++ b/bookkeeper-proto/src/generated/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
@@ -0,0 +1,21165 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: BookkeeperProtocol.proto
+
+package org.apache.bookkeeper.proto;
+
+public final class BookkeeperProtocol {
+  private BookkeeperProtocol() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  /**
+   * <pre>
+   **
+   * Protocol Versions.
+   * </pre>
+   *
+   * Protobuf enum {@code ProtocolVersion}
+   */
+  public enum ProtocolVersion
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>VERSION_ONE = 1;</code>
+     */
+    VERSION_ONE(1),
+    /**
+     * <code>VERSION_TWO = 2;</code>
+     */
+    VERSION_TWO(2),
+    /**
+     * <code>VERSION_THREE = 3;</code>
+     */
+    VERSION_THREE(3),
+    ;
+
+    /**
+     * <code>VERSION_ONE = 1;</code>
+     */
+    public static final int VERSION_ONE_VALUE = 1;
+    /**
+     * <code>VERSION_TWO = 2;</code>
+     */
+    public static final int VERSION_TWO_VALUE = 2;
+    /**
+     * <code>VERSION_THREE = 3;</code>
+     */
+    public static final int VERSION_THREE_VALUE = 3;
+
+
+    public final int getNumber() {
+      return value;
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     * @deprecated Use {@link #forNumber(int)} instead.
+     */
+    @java.lang.Deprecated
+    public static ProtocolVersion valueOf(int value) {
+      return forNumber(value);
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     */
+    public static ProtocolVersion forNumber(int value) {
+      switch (value) {
+        case 1: return VERSION_ONE;
+        case 2: return VERSION_TWO;
+        case 3: return VERSION_THREE;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static final com.google.protobuf.Internal.EnumLiteMap<
+        ProtocolVersion> internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>() {
+            public ProtocolVersion findValueByNumber(int number) {
+              return ProtocolVersion.forNumber(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(ordinal());
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(0);
+    }
+
+    private static final ProtocolVersion[] VALUES = values();
+
+    public static ProtocolVersion valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int value;
+
+    private ProtocolVersion(int value) {
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:ProtocolVersion)
+  }
+
+  /**
+   * <pre>
+   **
+   * Status codes.
+   * </pre>
+   *
+   * Protobuf enum {@code StatusCode}
+   */
+  public enum StatusCode
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>EOK = 0;</code>
+     */
+    EOK(0),
+    /**
+     * <pre>
+     * Server side Errors 4xx
+     * </pre>
+     *
+     * <code>ENOLEDGER = 402;</code>
+     */
+    ENOLEDGER(402),
+    /**
+     * <code>ENOENTRY = 403;</code>
+     */
+    ENOENTRY(403),
+    /**
+     * <code>EBADREQ = 404;</code>
+     */
+    EBADREQ(404),
+    /**
+     * <pre>
+     * IO/access errors 5xx
+     * </pre>
+     *
+     * <code>EIO = 501;</code>
+     */
+    EIO(501),
+    /**
+     * <code>EUA = 502;</code>
+     */
+    EUA(502),
+    /**
+     * <code>EBADVERSION = 503;</code>
+     */
+    EBADVERSION(503),
+    /**
+     * <code>EFENCED = 504;</code>
+     */
+    EFENCED(504),
+    /**
+     * <code>EREADONLY = 505;</code>
+     */
+    EREADONLY(505),
+    /**
+     * <code>ETOOMANYREQUESTS = 506;</code>
+     */
+    ETOOMANYREQUESTS(506),
+    /**
+     * <code>EUNKNOWNLEDGERSTATE = 507;</code>
+     */
+    EUNKNOWNLEDGERSTATE(507),
+    ;
+
+    /**
+     * <code>EOK = 0;</code>
+     */
+    public static final int EOK_VALUE = 0;
+    /**
+     * <pre>
+     * Server side Errors 4xx
+     * </pre>
+     *
+     * <code>ENOLEDGER = 402;</code>
+     */
+    public static final int ENOLEDGER_VALUE = 402;
+    /**
+     * <code>ENOENTRY = 403;</code>
+     */
+    public static final int ENOENTRY_VALUE = 403;
+    /**
+     * <code>EBADREQ = 404;</code>
+     */
+    public static final int EBADREQ_VALUE = 404;
+    /**
+     * <pre>
+     * IO/access errors 5xx
+     * </pre>
+     *
+     * <code>EIO = 501;</code>
+     */
+    public static final int EIO_VALUE = 501;
+    /**
+     * <code>EUA = 502;</code>
+     */
+    public static final int EUA_VALUE = 502;
+    /**
+     * <code>EBADVERSION = 503;</code>
+     */
+    public static final int EBADVERSION_VALUE = 503;
+    /**
+     * <code>EFENCED = 504;</code>
+     */
+    public static final int EFENCED_VALUE = 504;
+    /**
+     * <code>EREADONLY = 505;</code>
+     */
+    public static final int EREADONLY_VALUE = 505;
+    /**
+     * <code>ETOOMANYREQUESTS = 506;</code>
+     */
+    public static final int ETOOMANYREQUESTS_VALUE = 506;
+    /**
+     * <code>EUNKNOWNLEDGERSTATE = 507;</code>
+     */
+    public static final int EUNKNOWNLEDGERSTATE_VALUE = 507;
+
+
+    public final int getNumber() {
+      return value;
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     * @deprecated Use {@link #forNumber(int)} instead.
+     */
+    @java.lang.Deprecated
+    public static StatusCode valueOf(int value) {
+      return forNumber(value);
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     */
+    public static StatusCode forNumber(int value) {
+      switch (value) {
+        case 0: return EOK;
+        case 402: return ENOLEDGER;
+        case 403: return ENOENTRY;
+        case 404: return EBADREQ;
+        case 501: return EIO;
+        case 502: return EUA;
+        case 503: return EBADVERSION;
+        case 504: return EFENCED;
+        case 505: return EREADONLY;
+        case 506: return ETOOMANYREQUESTS;
+        case 507: return EUNKNOWNLEDGERSTATE;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<StatusCode>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static final com.google.protobuf.Internal.EnumLiteMap<
+        StatusCode> internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<StatusCode>() {
+            public StatusCode findValueByNumber(int number) {
+              return StatusCode.forNumber(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(ordinal());
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(1);
+    }
+
+    private static final StatusCode[] VALUES = values();
+
+    public static StatusCode valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int value;
+
+    private StatusCode(int value) {
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:StatusCode)
+  }
+
+  /**
+   * <pre>
+   **
+   * Supported operations by this protocol.
+   * </pre>
+   *
+   * Protobuf enum {@code OperationType}
+   */
+  public enum OperationType
+      implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>READ_ENTRY = 1;</code>
+     */
+    READ_ENTRY(1),
+    /**
+     * <code>ADD_ENTRY = 2;</code>
+     */
+    ADD_ENTRY(2),
+    /**
+     * <pre>
+     * Not supported yet.
+     * </pre>
+     *
+     * <code>RANGE_READ_ENTRY = 3;</code>
+     */
+    RANGE_READ_ENTRY(3),
+    /**
+     * <code>RANGE_ADD_ENTRY = 4;</code>
+     */
+    RANGE_ADD_ENTRY(4),
+    /**
+     * <code>AUTH = 5;</code>
+     */
+    AUTH(5),
+    /**
+     * <code>WRITE_LAC = 6;</code>
+     */
+    WRITE_LAC(6),
+    /**
+     * <code>READ_LAC = 7;</code>
+     */
+    READ_LAC(7),
+    /**
+     * <code>GET_BOOKIE_INFO = 8;</code>
+     */
+    GET_BOOKIE_INFO(8),
+    /**
+     * <code>START_TLS = 9;</code>
+     */
+    START_TLS(9),
+    /**
+     * <code>FORCE_LEDGER = 10;</code>
+     */
+    FORCE_LEDGER(10),
+    /**
+     * <code>GET_LIST_OF_ENTRIES_OF_LEDGER = 11;</code>
+     */
+    GET_LIST_OF_ENTRIES_OF_LEDGER(11),
+    ;
+
+    /**
+     * <code>READ_ENTRY = 1;</code>
+     */
+    public static final int READ_ENTRY_VALUE = 1;
+    /**
+     * <code>ADD_ENTRY = 2;</code>
+     */
+    public static final int ADD_ENTRY_VALUE = 2;
+    /**
+     * <pre>
+     * Not supported yet.
+     * </pre>
+     *
+     * <code>RANGE_READ_ENTRY = 3;</code>
+     */
+    public static final int RANGE_READ_ENTRY_VALUE = 3;
+    /**
+     * <code>RANGE_ADD_ENTRY = 4;</code>
+     */
+    public static final int RANGE_ADD_ENTRY_VALUE = 4;
+    /**
+     * <code>AUTH = 5;</code>
+     */
+    public static final int AUTH_VALUE = 5;
+    /**
+     * <code>WRITE_LAC = 6;</code>
+     */
+    public static final int WRITE_LAC_VALUE = 6;
+    /**
+     * <code>READ_LAC = 7;</code>
+     */
+    public static final int READ_LAC_VALUE = 7;
+    /**
+     * <code>GET_BOOKIE_INFO = 8;</code>
+     */
+    public static final int GET_BOOKIE_INFO_VALUE = 8;
+    /**
+     * <code>START_TLS = 9;</code>
+     */
+    public static final int START_TLS_VALUE = 9;
+    /**
+     * <code>FORCE_LEDGER = 10;</code>
+     */
+    public static final int FORCE_LEDGER_VALUE = 10;
+    /**
+     * <code>GET_LIST_OF_ENTRIES_OF_LEDGER = 11;</code>
+     */
+    public static final int GET_LIST_OF_ENTRIES_OF_LEDGER_VALUE = 11;
+
+
+    public final int getNumber() {
+      return value;
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     * @deprecated Use {@link #forNumber(int)} instead.
+     */
+    @java.lang.Deprecated
+    public static OperationType valueOf(int value) {
+      return forNumber(value);
+    }
+
+    /**
+     * @param value The numeric wire value of the corresponding enum entry.
+     * @return The enum associated with the given numeric wire value.
+     */
+    public static OperationType forNumber(int value) {
+      switch (value) {
+        case 1: return READ_ENTRY;
+        case 2: return ADD_ENTRY;
+        case 3: return RANGE_READ_ENTRY;
+        case 4: return RANGE_ADD_ENTRY;
+        case 5: return AUTH;
+        case 6: return WRITE_LAC;
+        case 7: return READ_LAC;
+        case 8: return GET_BOOKIE_INFO;
+        case 9: return START_TLS;
+        case 10: return FORCE_LEDGER;
+        case 11: return GET_LIST_OF_ENTRIES_OF_LEDGER;
+        default: return null;
+      }
+    }
+
+    public static com.google.protobuf.Internal.EnumLiteMap<OperationType>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static final com.google.protobuf.Internal.EnumLiteMap<
+        OperationType> internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<OperationType>() {
+            public OperationType findValueByNumber(int number) {
+              return OperationType.forNumber(number);
+            }
+          };
+
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(ordinal());
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(2);
+    }
+
+    private static final OperationType[] VALUES = values();
+
+    public static OperationType valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+
+    private final int value;
+
+    private OperationType(int value) {
+      this.value = value;
+    }
+
+    // @@protoc_insertion_point(enum_scope:OperationType)
+  }
+
+  public interface BKPacketHeaderOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:BKPacketHeader)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     * @return Whether the version field is set.
+     */
+    boolean hasVersion();
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     * @return The version.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion();
+
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     * @return Whether the operation field is set.
+     */
+    boolean hasOperation();
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     * @return The operation.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation();
+
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     * @return Whether the txnId field is set.
+     */
+    boolean hasTxnId();
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     * @return The txnId.
+     */
+    long getTxnId();
+
+    /**
+     * <code>optional uint32 priority = 4 [default = 0];</code>
+     * @return Whether the priority field is set.
+     */
+    boolean hasPriority();
+    /**
+     * <code>optional uint32 priority = 4 [default = 0];</code>
+     * @return The priority.
+     */
+    int getPriority();
+  }
+  /**
+   * <pre>
+   **
+   * Packet header for all requests.
+   * </pre>
+   *
+   * Protobuf type {@code BKPacketHeader}
+   */
+  public static final class BKPacketHeader extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:BKPacketHeader)
+      BKPacketHeaderOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use BKPacketHeader.newBuilder() to construct.
+    private BKPacketHeader(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private BKPacketHeader() {
+      version_ = 1;
+      operation_ = 1;
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new BKPacketHeader();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private BKPacketHeader(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              int rawValue = input.readEnum();
+                @SuppressWarnings("deprecation")
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion value = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                version_ = rawValue;
+              }
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+                @SuppressWarnings("deprecation")
+              org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType value = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                bitField0_ |= 0x00000002;
+                operation_ = rawValue;
+              }
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              txnId_ = input.readUInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              priority_ = input.readUInt32();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.class, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int VERSION_FIELD_NUMBER = 1;
+    private int version_;
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     * @return Whether the version field is set.
+     */
+    @java.lang.Override public boolean hasVersion() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     * @return The version.
+     */
+    @java.lang.Override public org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion() {
+      @SuppressWarnings("deprecation")
+      org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion result = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.valueOf(version_);
+      return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE : result;
+    }
+
+    public static final int OPERATION_FIELD_NUMBER = 2;
+    private int operation_;
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     * @return Whether the operation field is set.
+     */
+    @java.lang.Override public boolean hasOperation() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     * @return The operation.
+     */
+    @java.lang.Override public org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation() {
+      @SuppressWarnings("deprecation")
+      org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType result = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.valueOf(operation_);
+      return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.READ_ENTRY : result;
+    }
+
+    public static final int TXNID_FIELD_NUMBER = 3;
+    private long txnId_;
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     * @return Whether the txnId field is set.
+     */
+    @java.lang.Override
+    public boolean hasTxnId() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     * @return The txnId.
+     */
+    @java.lang.Override
+    public long getTxnId() {
+      return txnId_;
+    }
+
+    public static final int PRIORITY_FIELD_NUMBER = 4;
+    private int priority_;
+    /**
+     * <code>optional uint32 priority = 4 [default = 0];</code>
+     * @return Whether the priority field is set.
+     */
+    @java.lang.Override
+    public boolean hasPriority() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <code>optional uint32 priority = 4 [default = 0];</code>
+     * @return The priority.
+     */
+    @java.lang.Override
+    public int getPriority() {
+      return priority_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasVersion()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasOperation()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasTxnId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeEnum(1, version_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeEnum(2, operation_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeUInt64(3, txnId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeUInt32(4, priority_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, version_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, operation_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(3, txnId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(4, priority_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader other = (org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader) obj;
+
+      if (hasVersion() != other.hasVersion()) return false;
+      if (hasVersion()) {
+        if (version_ != other.version_) return false;
+      }
+      if (hasOperation() != other.hasOperation()) return false;
+      if (hasOperation()) {
+        if (operation_ != other.operation_) return false;
+      }
+      if (hasTxnId() != other.hasTxnId()) return false;
+      if (hasTxnId()) {
+        if (getTxnId()
+            != other.getTxnId()) return false;
+      }
+      if (hasPriority() != other.hasPriority()) return false;
+      if (hasPriority()) {
+        if (getPriority()
+            != other.getPriority()) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasVersion()) {
+        hash = (37 * hash) + VERSION_FIELD_NUMBER;
+        hash = (53 * hash) + version_;
+      }
+      if (hasOperation()) {
+        hash = (37 * hash) + OPERATION_FIELD_NUMBER;
+        hash = (53 * hash) + operation_;
+      }
+      if (hasTxnId()) {
+        hash = (37 * hash) + TXNID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTxnId());
+      }
+      if (hasPriority()) {
+        hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
+        hash = (53 * hash) + getPriority();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     **
+     * Packet header for all requests.
+     * </pre>
+     *
+     * Protobuf type {@code BKPacketHeader}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:BKPacketHeader)
+        org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.class, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        version_ = 1;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        operation_ = 1;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        txnId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        priority_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getDefaultInstanceForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader build() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader buildPartial() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader result = new org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.version_ = version_;
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.operation_ = operation_;
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.txnId_ = txnId_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          result.priority_ = priority_;
+          to_bitField0_ |= 0x00000008;
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader) {
+          return mergeFrom((org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader other) {
+        if (other == org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance()) return this;
+        if (other.hasVersion()) {
+          setVersion(other.getVersion());
+        }
+        if (other.hasOperation()) {
+          setOperation(other.getOperation());
+        }
+        if (other.hasTxnId()) {
+          setTxnId(other.getTxnId());
+        }
+        if (other.hasPriority()) {
+          setPriority(other.getPriority());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasVersion()) {
+          return false;
+        }
+        if (!hasOperation()) {
+          return false;
+        }
+        if (!hasTxnId()) {
+          return false;
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int version_ = 1;
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       * @return Whether the version field is set.
+       */
+      @java.lang.Override public boolean hasVersion() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       * @return The version.
+       */
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion() {
+        @SuppressWarnings("deprecation")
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion result = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.valueOf(version_);
+        return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE : result;
+      }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       * @param value The version to set.
+       * @return This builder for chaining.
+       */
+      public Builder setVersion(org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        version_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearVersion() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        version_ = 1;
+        onChanged();
+        return this;
+      }
+
+      private int operation_ = 1;
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       * @return Whether the operation field is set.
+       */
+      @java.lang.Override public boolean hasOperation() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       * @return The operation.
+       */
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation() {
+        @SuppressWarnings("deprecation")
+        org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType result = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.valueOf(operation_);
+        return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.READ_ENTRY : result;
+      }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       * @param value The operation to set.
+       * @return This builder for chaining.
+       */
+      public Builder setOperation(org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000002;
+        operation_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearOperation() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        operation_ = 1;
+        onChanged();
+        return this;
+      }
+
+      private long txnId_ ;
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       * @return Whether the txnId field is set.
+       */
+      @java.lang.Override
+      public boolean hasTxnId() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       * @return The txnId.
+       */
+      @java.lang.Override
+      public long getTxnId() {
+        return txnId_;
+      }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       * @param value The txnId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTxnId(long value) {
+        bitField0_ |= 0x00000004;
+        txnId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTxnId() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        txnId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private int priority_ ;
+      /**
+       * <code>optional uint32 priority = 4 [default = 0];</code>
+       * @return Whether the priority field is set.
+       */
+      @java.lang.Override
+      public boolean hasPriority() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <code>optional uint32 priority = 4 [default = 0];</code>
+       * @return The priority.
+       */
+      @java.lang.Override
+      public int getPriority() {
+        return priority_;
+      }
+      /**
+       * <code>optional uint32 priority = 4 [default = 0];</code>
+       * @param value The priority to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPriority(int value) {
+        bitField0_ |= 0x00000008;
+        priority_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional uint32 priority = 4 [default = 0];</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPriority() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        priority_ = 0;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:BKPacketHeader)
+    }
+
+    // @@protoc_insertion_point(class_scope:BKPacketHeader)
+    private static final org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader();
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<BKPacketHeader>
+        PARSER = new com.google.protobuf.AbstractParser<BKPacketHeader>() {
+      @java.lang.Override
+      public BKPacketHeader parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new BKPacketHeader(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<BKPacketHeader> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<BKPacketHeader> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ContextPairOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ContextPair)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required string key = 1;</code>
+     * @return Whether the key field is set.
+     */
+    boolean hasKey();
+    /**
+     * <code>required string key = 1;</code>
+     * @return The key.
+     */
+    java.lang.String getKey();
+    /**
+     * <code>required string key = 1;</code>
+     * @return The bytes for key.
+     */
+    com.google.protobuf.ByteString
+        getKeyBytes();
+
+    /**
+     * <code>required string value = 2;</code>
+     * @return Whether the value field is set.
+     */
+    boolean hasValue();
+    /**
+     * <code>required string value = 2;</code>
+     * @return The value.
+     */
+    java.lang.String getValue();
+    /**
+     * <code>required string value = 2;</code>
+     * @return The bytes for value.
+     */
+    com.google.protobuf.ByteString
+        getValueBytes();
+  }
+  /**
+   * Protobuf type {@code ContextPair}
+   */
+  public static final class ContextPair extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ContextPair)
+      ContextPairOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ContextPair.newBuilder() to construct.
+    private ContextPair(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ContextPair() {
+      key_ = "";
+      value_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ContextPair();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ContextPair(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000001;
+              key_ = bs;
+              break;
+            }
+            case 18: {
+              com.google.protobuf.ByteString bs = input.readBytes();
+              bitField0_ |= 0x00000002;
+              value_ = bs;
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ContextPair_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ContextPair_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.class, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private volatile java.lang.Object key_;
+    /**
+     * <code>required string key = 1;</code>
+     * @return Whether the key field is set.
+     */
+    @java.lang.Override
+    public boolean hasKey() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>required string key = 1;</code>
+     * @return The key.
+     */
+    @java.lang.Override
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          key_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string key = 1;</code>
+     * @return The bytes for key.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getKeyBytes() {
+      java.lang.Object ref = key_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        key_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private volatile java.lang.Object value_;
+    /**
+     * <code>required string value = 2;</code>
+     * @return Whether the value field is set.
+     */
+    @java.lang.Override
+    public boolean hasValue() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <code>required string value = 2;</code>
+     * @return The value.
+     */
+    @java.lang.Override
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          value_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string value = 2;</code>
+     * @return The bytes for value.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getValueBytes() {
+      java.lang.Object ref = value_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        value_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasValue()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair other = (org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair) obj;
+
+      if (hasKey() != other.hasKey()) return false;
+      if (hasKey()) {
+        if (!getKey()
+            .equals(other.getKey())) return false;
+      }
+      if (hasValue() != other.hasValue()) return false;
+      if (hasValue()) {
+        if (!getValue()
+            .equals(other.getValue())) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasKey()) {
+        hash = (37 * hash) + KEY_FIELD_NUMBER;
+        hash = (53 * hash) + getKey().hashCode();
+      }
+      if (hasValue()) {
+        hash = (37 * hash) + VALUE_FIELD_NUMBER;
+        hash = (53 * hash) + getValue().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code ContextPair}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ContextPair)
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ContextPair_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ContextPair_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.class, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        key_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        value_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ContextPair_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getDefaultInstanceForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair build() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair buildPartial() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair result = new org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.key_ = key_;
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.value_ = value_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair) {
+          return mergeFrom((org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair other) {
+        if (other == org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.getDefaultInstance()) return this;
+        if (other.hasKey()) {
+          bitField0_ |= 0x00000001;
+          key_ = other.key_;
+          onChanged();
+        }
+        if (other.hasValue()) {
+          bitField0_ |= 0x00000002;
+          value_ = other.value_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasKey()) {
+          return false;
+        }
+        if (!hasValue()) {
+          return false;
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.lang.Object key_ = "";
+      /**
+       * <code>required string key = 1;</code>
+       * @return Whether the key field is set.
+       */
+      public boolean hasKey() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>required string key = 1;</code>
+       * @return The key.
+       */
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            key_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       * @return The bytes for key.
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
+        java.lang.Object ref = key_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          key_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string key = 1;</code>
+       * @param value The key to set.
+       * @return This builder for chaining.
+       */
+      public Builder setKey(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearKey() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        key_ = getDefaultInstance().getKey();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string key = 1;</code>
+       * @param value The bytes for key to set.
+       * @return This builder for chaining.
+       */
+      public Builder setKeyBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        key_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object value_ = "";
+      /**
+       * <code>required string value = 2;</code>
+       * @return Whether the value field is set.
+       */
+      public boolean hasValue() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <code>required string value = 2;</code>
+       * @return The value.
+       */
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
+            value_ = s;
+          }
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       * @return The bytes for value.
+       */
+      public com.google.protobuf.ByteString
+          getValueBytes() {
+        java.lang.Object ref = value_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          value_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string value = 2;</code>
+       * @param value The value to set.
+       * @return This builder for chaining.
+       */
+      public Builder setValue(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearValue() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        value_ = getDefaultInstance().getValue();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string value = 2;</code>
+       * @param value The bytes for value to set.
+       * @return This builder for chaining.
+       */
+      public Builder setValueBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        value_ = value;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:ContextPair)
+    }
+
+    // @@protoc_insertion_point(class_scope:ContextPair)
+    private static final org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair();
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ContextPair>
+        PARSER = new com.google.protobuf.AbstractParser<ContextPair>() {
+      @java.lang.Override
+      public ContextPair parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ContextPair(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ContextPair> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ContextPair> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface RequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Request)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    boolean hasHeader();
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     * @return The header.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader();
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder getHeaderOrBuilder();
+
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     * @return Whether the readRequest field is set.
+     */
+    boolean hasReadRequest();
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     * @return The readRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest();
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder();
+
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     * @return Whether the addRequest field is set.
+     */
+    boolean hasAddRequest();
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     * @return The addRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest();
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder getAddRequestOrBuilder();
+
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     * @return Whether the authRequest field is set.
+     */
+    boolean hasAuthRequest();
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     * @return The authRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest();
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder getAuthRequestOrBuilder();
+
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     * @return Whether the writeLacRequest field is set.
+     */
+    boolean hasWriteLacRequest();
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     * @return The writeLacRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest getWriteLacRequest();
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder getWriteLacRequestOrBuilder();
+
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     * @return Whether the readLacRequest field is set.
+     */
+    boolean hasReadLacRequest();
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     * @return The readLacRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest getReadLacRequest();
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder getReadLacRequestOrBuilder();
+
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     * @return Whether the getBookieInfoRequest field is set.
+     */
+    boolean hasGetBookieInfoRequest();
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     * @return The getBookieInfoRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest getGetBookieInfoRequest();
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder getGetBookieInfoRequestOrBuilder();
+
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     * @return Whether the startTLSRequest field is set.
+     */
+    boolean hasStartTLSRequest();
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     * @return The startTLSRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest getStartTLSRequest();
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder getStartTLSRequestOrBuilder();
+
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     * @return Whether the forceLedgerRequest field is set.
+     */
+    boolean hasForceLedgerRequest();
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     * @return The forceLedgerRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest getForceLedgerRequest();
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder getForceLedgerRequestOrBuilder();
+
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     * @return Whether the getListOfEntriesOfLedgerRequest field is set.
+     */
+    boolean hasGetListOfEntriesOfLedgerRequest();
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     * @return The getListOfEntriesOfLedgerRequest.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest getGetListOfEntriesOfLedgerRequest();
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder getGetListOfEntriesOfLedgerRequestOrBuilder();
+
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> 
+        getRequestContextList();
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getRequestContext(int index);
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    int getRequestContextCount();
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    java.util.List<? extends org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder> 
+        getRequestContextOrBuilderList();
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder getRequestContextOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code Request}
+   */
+  public static final class Request extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:Request)
+      RequestOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use Request.newBuilder() to construct.
+    private Request(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private Request() {
+      requestContext_ = java.util.Collections.emptyList();
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new Request();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private Request(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) != 0)) {
+                subBuilder = header_.toBuilder();
+              }
+              header_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(header_);
+                header_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000001;
+              break;
+            }
+            case 802: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000002) != 0)) {
+                subBuilder = readRequest_.toBuilder();
+              }
+              readRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(readRequest_);
+                readRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000002;
+              break;
+            }
+            case 810: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000004) != 0)) {
+                subBuilder = addRequest_.toBuilder();
+              }
+              addRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(addRequest_);
+                addRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000004;
+              break;
+            }
+            case 818: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000008) != 0)) {
+                subBuilder = authRequest_.toBuilder();
+              }
+              authRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(authRequest_);
+                authRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000008;
+              break;
+            }
+            case 826: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) != 0)) {
+                subBuilder = writeLacRequest_.toBuilder();
+              }
+              writeLacRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(writeLacRequest_);
+                writeLacRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
+            case 834: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000020) != 0)) {
+                subBuilder = readLacRequest_.toBuilder();
+              }
+              readLacRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(readLacRequest_);
+                readLacRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000020;
+              break;
+            }
+            case 842: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000040) != 0)) {
+                subBuilder = getBookieInfoRequest_.toBuilder();
+              }
+              getBookieInfoRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(getBookieInfoRequest_);
+                getBookieInfoRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000040;
+              break;
+            }
+            case 850: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000080) != 0)) {
+                subBuilder = startTLSRequest_.toBuilder();
+              }
+              startTLSRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(startTLSRequest_);
+                startTLSRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000080;
+              break;
+            }
+            case 858: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000100) != 0)) {
+                subBuilder = forceLedgerRequest_.toBuilder();
+              }
+              forceLedgerRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(forceLedgerRequest_);
+                forceLedgerRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000100;
+              break;
+            }
+            case 866: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000200) != 0)) {
+                subBuilder = getListOfEntriesOfLedgerRequest_.toBuilder();
+              }
+              getListOfEntriesOfLedgerRequest_ = input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(getListOfEntriesOfLedgerRequest_);
+                getListOfEntriesOfLedgerRequest_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000200;
+              break;
+            }
+            case 1602: {
+              if (!((mutable_bitField0_ & 0x00000400) != 0)) {
+                requestContext_ = new java.util.ArrayList<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair>();
+                mutable_bitField0_ |= 0x00000400;
+              }
+              requestContext_.add(
+                  input.readMessage(org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.PARSER, extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000400) != 0)) {
+          requestContext_ = java.util.Collections.unmodifiableList(requestContext_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.Request.class, org.apache.bookkeeper.proto.BookkeeperProtocol.Request.Builder.class);
+    }
+
+    private int bitField0_;
+    public static final int HEADER_FIELD_NUMBER = 1;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader header_;
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     * @return Whether the header field is set.
+     */
+    @java.lang.Override
+    public boolean hasHeader() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     * @return The header.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader() {
+      return header_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance() : header_;
+    }
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder getHeaderOrBuilder() {
+      return header_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance() : header_;
+    }
+
+    public static final int READREQUEST_FIELD_NUMBER = 100;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest readRequest_;
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     * @return Whether the readRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasReadRequest() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     * @return The readRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest() {
+      return readRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance() : readRequest_;
+    }
+    /**
+     * <pre>
+     * Requests
+     * </pre>
+     *
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder() {
+      return readRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance() : readRequest_;
+    }
+
+    public static final int ADDREQUEST_FIELD_NUMBER = 101;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest addRequest_;
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     * @return Whether the addRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasAddRequest() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     * @return The addRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest() {
+      return addRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance() : addRequest_;
+    }
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder getAddRequestOrBuilder() {
+      return addRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance() : addRequest_;
+    }
+
+    public static final int AUTHREQUEST_FIELD_NUMBER = 102;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage authRequest_;
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     * @return Whether the authRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasAuthRequest() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     * @return The authRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest() {
+      return authRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance() : authRequest_;
+    }
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder getAuthRequestOrBuilder() {
+      return authRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance() : authRequest_;
+    }
+
+    public static final int WRITELACREQUEST_FIELD_NUMBER = 103;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest writeLacRequest_;
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     * @return Whether the writeLacRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasWriteLacRequest() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     * @return The writeLacRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest getWriteLacRequest() {
+      return writeLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.getDefaultInstance() : writeLacRequest_;
+    }
+    /**
+     * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder getWriteLacRequestOrBuilder() {
+      return writeLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.getDefaultInstance() : writeLacRequest_;
+    }
+
+    public static final int READLACREQUEST_FIELD_NUMBER = 104;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest readLacRequest_;
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     * @return Whether the readLacRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasReadLacRequest() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     * @return The readLacRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest getReadLacRequest() {
+      return readLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.getDefaultInstance() : readLacRequest_;
+    }
+    /**
+     * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder getReadLacRequestOrBuilder() {
+      return readLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.getDefaultInstance() : readLacRequest_;
+    }
+
+    public static final int GETBOOKIEINFOREQUEST_FIELD_NUMBER = 105;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest getBookieInfoRequest_;
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     * @return Whether the getBookieInfoRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasGetBookieInfoRequest() {
+      return ((bitField0_ & 0x00000040) != 0);
+    }
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     * @return The getBookieInfoRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest getGetBookieInfoRequest() {
+      return getBookieInfoRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.getDefaultInstance() : getBookieInfoRequest_;
+    }
+    /**
+     * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder getGetBookieInfoRequestOrBuilder() {
+      return getBookieInfoRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.getDefaultInstance() : getBookieInfoRequest_;
+    }
+
+    public static final int STARTTLSREQUEST_FIELD_NUMBER = 106;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest startTLSRequest_;
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     * @return Whether the startTLSRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasStartTLSRequest() {
+      return ((bitField0_ & 0x00000080) != 0);
+    }
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     * @return The startTLSRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest getStartTLSRequest() {
+      return startTLSRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.getDefaultInstance() : startTLSRequest_;
+    }
+    /**
+     * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder getStartTLSRequestOrBuilder() {
+      return startTLSRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.getDefaultInstance() : startTLSRequest_;
+    }
+
+    public static final int FORCELEDGERREQUEST_FIELD_NUMBER = 107;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest forceLedgerRequest_;
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     * @return Whether the forceLedgerRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasForceLedgerRequest() {
+      return ((bitField0_ & 0x00000100) != 0);
+    }
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     * @return The forceLedgerRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest getForceLedgerRequest() {
+      return forceLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.getDefaultInstance() : forceLedgerRequest_;
+    }
+    /**
+     * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder getForceLedgerRequestOrBuilder() {
+      return forceLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.getDefaultInstance() : forceLedgerRequest_;
+    }
+
+    public static final int GETLISTOFENTRIESOFLEDGERREQUEST_FIELD_NUMBER = 108;
+    private org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest_;
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     * @return Whether the getListOfEntriesOfLedgerRequest field is set.
+     */
+    @java.lang.Override
+    public boolean hasGetListOfEntriesOfLedgerRequest() {
+      return ((bitField0_ & 0x00000200) != 0);
+    }
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     * @return The getListOfEntriesOfLedgerRequest.
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest getGetListOfEntriesOfLedgerRequest() {
+      return getListOfEntriesOfLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.getDefaultInstance() : getListOfEntriesOfLedgerRequest_;
+    }
+    /**
+     * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder getGetListOfEntriesOfLedgerRequestOrBuilder() {
+      return getListOfEntriesOfLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.getDefaultInstance() : getListOfEntriesOfLedgerRequest_;
+    }
+
+    public static final int REQUESTCONTEXT_FIELD_NUMBER = 200;
+    private java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> requestContext_;
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    @java.lang.Override
+    public java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> getRequestContextList() {
+      return requestContext_;
+    }
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    @java.lang.Override
+    public java.util.List<? extends org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder> 
+        getRequestContextOrBuilderList() {
+      return requestContext_;
+    }
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    @java.lang.Override
+    public int getRequestContextCount() {
+      return requestContext_.size();
+    }
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getRequestContext(int index) {
+      return requestContext_.get(index);
+    }
+    /**
+     * <pre>
+     * to pass MDC context
+     * </pre>
+     *
+     * <code>repeated .ContextPair requestContext = 200;</code>
+     */
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder getRequestContextOrBuilder(
+        int index) {
+      return requestContext_.get(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasHeader()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!getHeader().isInitialized()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (hasReadRequest()) {
+        if (!getReadRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAddRequest()) {
+        if (!getAddRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasAuthRequest()) {
+        if (!getAuthRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasWriteLacRequest()) {
+        if (!getWriteLacRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasReadLacRequest()) {
+        if (!getReadLacRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasForceLedgerRequest()) {
+        if (!getForceLedgerRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      if (hasGetListOfEntriesOfLedgerRequest()) {
+        if (!getGetListOfEntriesOfLedgerRequest().isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      for (int i = 0; i < getRequestContextCount(); i++) {
+        if (!getRequestContext(i).isInitialized()) {
+          memoizedIsInitialized = 0;
+          return false;
+        }
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeMessage(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeMessage(100, getReadRequest());
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeMessage(101, getAddRequest());
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeMessage(102, getAuthRequest());
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeMessage(103, getWriteLacRequest());
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeMessage(104, getReadLacRequest());
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        output.writeMessage(105, getGetBookieInfoRequest());
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        output.writeMessage(106, getStartTLSRequest());
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        output.writeMessage(107, getForceLedgerRequest());
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        output.writeMessage(108, getGetListOfEntriesOfLedgerRequest());
+      }
+      for (int i = 0; i < requestContext_.size(); i++) {
+        output.writeMessage(200, requestContext_.get(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getHeader());
+      }
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(100, getReadRequest());
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(101, getAddRequest());
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(102, getAuthRequest());
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(103, getWriteLacRequest());
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(104, getReadLacRequest());
+      }
+      if (((bitField0_ & 0x00000040) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(105, getGetBookieInfoRequest());
+      }
+      if (((bitField0_ & 0x00000080) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(106, getStartTLSRequest());
+      }
+      if (((bitField0_ & 0x00000100) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(107, getForceLedgerRequest());
+      }
+      if (((bitField0_ & 0x00000200) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(108, getGetListOfEntriesOfLedgerRequest());
+      }
+      for (int i = 0; i < requestContext_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(200, requestContext_.get(i));
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.Request)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.Request other = (org.apache.bookkeeper.proto.BookkeeperProtocol.Request) obj;
+
+      if (hasHeader() != other.hasHeader()) return false;
+      if (hasHeader()) {
+        if (!getHeader()
+            .equals(other.getHeader())) return false;
+      }
+      if (hasReadRequest() != other.hasReadRequest()) return false;
+      if (hasReadRequest()) {
+        if (!getReadRequest()
+            .equals(other.getReadRequest())) return false;
+      }
+      if (hasAddRequest() != other.hasAddRequest()) return false;
+      if (hasAddRequest()) {
+        if (!getAddRequest()
+            .equals(other.getAddRequest())) return false;
+      }
+      if (hasAuthRequest() != other.hasAuthRequest()) return false;
+      if (hasAuthRequest()) {
+        if (!getAuthRequest()
+            .equals(other.getAuthRequest())) return false;
+      }
+      if (hasWriteLacRequest() != other.hasWriteLacRequest()) return false;
+      if (hasWriteLacRequest()) {
+        if (!getWriteLacRequest()
+            .equals(other.getWriteLacRequest())) return false;
+      }
+      if (hasReadLacRequest() != other.hasReadLacRequest()) return false;
+      if (hasReadLacRequest()) {
+        if (!getReadLacRequest()
+            .equals(other.getReadLacRequest())) return false;
+      }
+      if (hasGetBookieInfoRequest() != other.hasGetBookieInfoRequest()) return false;
+      if (hasGetBookieInfoRequest()) {
+        if (!getGetBookieInfoRequest()
+            .equals(other.getGetBookieInfoRequest())) return false;
+      }
+      if (hasStartTLSRequest() != other.hasStartTLSRequest()) return false;
+      if (hasStartTLSRequest()) {
+        if (!getStartTLSRequest()
+            .equals(other.getStartTLSRequest())) return false;
+      }
+      if (hasForceLedgerRequest() != other.hasForceLedgerRequest()) return false;
+      if (hasForceLedgerRequest()) {
+        if (!getForceLedgerRequest()
+            .equals(other.getForceLedgerRequest())) return false;
+      }
+      if (hasGetListOfEntriesOfLedgerRequest() != other.hasGetListOfEntriesOfLedgerRequest()) return false;
+      if (hasGetListOfEntriesOfLedgerRequest()) {
+        if (!getGetListOfEntriesOfLedgerRequest()
+            .equals(other.getGetListOfEntriesOfLedgerRequest())) return false;
+      }
+      if (!getRequestContextList()
+          .equals(other.getRequestContextList())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasHeader()) {
+        hash = (37 * hash) + HEADER_FIELD_NUMBER;
+        hash = (53 * hash) + getHeader().hashCode();
+      }
+      if (hasReadRequest()) {
+        hash = (37 * hash) + READREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getReadRequest().hashCode();
+      }
+      if (hasAddRequest()) {
+        hash = (37 * hash) + ADDREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getAddRequest().hashCode();
+      }
+      if (hasAuthRequest()) {
+        hash = (37 * hash) + AUTHREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getAuthRequest().hashCode();
+      }
+      if (hasWriteLacRequest()) {
+        hash = (37 * hash) + WRITELACREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getWriteLacRequest().hashCode();
+      }
+      if (hasReadLacRequest()) {
+        hash = (37 * hash) + READLACREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getReadLacRequest().hashCode();
+      }
+      if (hasGetBookieInfoRequest()) {
+        hash = (37 * hash) + GETBOOKIEINFOREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getGetBookieInfoRequest().hashCode();
+      }
+      if (hasStartTLSRequest()) {
+        hash = (37 * hash) + STARTTLSREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getStartTLSRequest().hashCode();
+      }
+      if (hasForceLedgerRequest()) {
+        hash = (37 * hash) + FORCELEDGERREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getForceLedgerRequest().hashCode();
+      }
+      if (hasGetListOfEntriesOfLedgerRequest()) {
+        hash = (37 * hash) + GETLISTOFENTRIESOFLEDGERREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getGetListOfEntriesOfLedgerRequest().hashCode();
+      }
+      if (getRequestContextCount() > 0) {
+        hash = (37 * hash) + REQUESTCONTEXT_FIELD_NUMBER;
+        hash = (53 * hash) + getRequestContextList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.Request prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code Request}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:Request)
+        org.apache.bookkeeper.proto.BookkeeperProtocol.RequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.BookkeeperProtocol.Request.class, org.apache.bookkeeper.proto.BookkeeperProtocol.Request.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.proto.BookkeeperProtocol.Request.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getHeaderFieldBuilder();
+          getReadRequestFieldBuilder();
+          getAddRequestFieldBuilder();
+          getAuthRequestFieldBuilder();
+          getWriteLacRequestFieldBuilder();
+          getReadLacRequestFieldBuilder();
+          getGetBookieInfoRequestFieldBuilder();
+          getStartTLSRequestFieldBuilder();
+          getForceLedgerRequestFieldBuilder();
+          getGetListOfEntriesOfLedgerRequestFieldBuilder();
+          getRequestContextFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (headerBuilder_ == null) {
+          header_ = null;
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        if (readRequestBuilder_ == null) {
+          readRequest_ = null;
+        } else {
+          readRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        if (addRequestBuilder_ == null) {
+          addRequest_ = null;
+        } else {
+          addRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        if (authRequestBuilder_ == null) {
+          authRequest_ = null;
+        } else {
+          authRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        if (writeLacRequestBuilder_ == null) {
+          writeLacRequest_ = null;
+        } else {
+          writeLacRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        if (readLacRequestBuilder_ == null) {
+          readLacRequest_ = null;
+        } else {
+          readLacRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        if (getBookieInfoRequestBuilder_ == null) {
+          getBookieInfoRequest_ = null;
+        } else {
+          getBookieInfoRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        if (startTLSRequestBuilder_ == null) {
+          startTLSRequest_ = null;
+        } else {
+          startTLSRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        if (forceLedgerRequestBuilder_ == null) {
+          forceLedgerRequest_ = null;
+        } else {
+          forceLedgerRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          getListOfEntriesOfLedgerRequest_ = null;
+        } else {
+          getListOfEntriesOfLedgerRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        if (requestContextBuilder_ == null) {
+          requestContext_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+        } else {
+          requestContextBuilder_.clear();
+        }
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.Request getDefaultInstanceForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.Request.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.Request build() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.Request result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.Request buildPartial() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.Request result = new org.apache.bookkeeper.proto.BookkeeperProtocol.Request(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          if (headerBuilder_ == null) {
+            result.header_ = header_;
+          } else {
+            result.header_ = headerBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000001;
+        }
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          if (readRequestBuilder_ == null) {
+            result.readRequest_ = readRequest_;
+          } else {
+            result.readRequest_ = readRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          if (addRequestBuilder_ == null) {
+            result.addRequest_ = addRequest_;
+          } else {
+            result.addRequest_ = addRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          if (authRequestBuilder_ == null) {
+            result.authRequest_ = authRequest_;
+          } else {
+            result.authRequest_ = authRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000008;
+        }
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          if (writeLacRequestBuilder_ == null) {
+            result.writeLacRequest_ = writeLacRequest_;
+          } else {
+            result.writeLacRequest_ = writeLacRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000010;
+        }
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          if (readLacRequestBuilder_ == null) {
+            result.readLacRequest_ = readLacRequest_;
+          } else {
+            result.readLacRequest_ = readLacRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000020;
+        }
+        if (((from_bitField0_ & 0x00000040) != 0)) {
+          if (getBookieInfoRequestBuilder_ == null) {
+            result.getBookieInfoRequest_ = getBookieInfoRequest_;
+          } else {
+            result.getBookieInfoRequest_ = getBookieInfoRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000040;
+        }
+        if (((from_bitField0_ & 0x00000080) != 0)) {
+          if (startTLSRequestBuilder_ == null) {
+            result.startTLSRequest_ = startTLSRequest_;
+          } else {
+            result.startTLSRequest_ = startTLSRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000080;
+        }
+        if (((from_bitField0_ & 0x00000100) != 0)) {
+          if (forceLedgerRequestBuilder_ == null) {
+            result.forceLedgerRequest_ = forceLedgerRequest_;
+          } else {
+            result.forceLedgerRequest_ = forceLedgerRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000100;
+        }
+        if (((from_bitField0_ & 0x00000200) != 0)) {
+          if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+            result.getListOfEntriesOfLedgerRequest_ = getListOfEntriesOfLedgerRequest_;
+          } else {
+            result.getListOfEntriesOfLedgerRequest_ = getListOfEntriesOfLedgerRequestBuilder_.build();
+          }
+          to_bitField0_ |= 0x00000200;
+        }
+        if (requestContextBuilder_ == null) {
+          if (((bitField0_ & 0x00000400) != 0)) {
+            requestContext_ = java.util.Collections.unmodifiableList(requestContext_);
+            bitField0_ = (bitField0_ & ~0x00000400);
+          }
+          result.requestContext_ = requestContext_;
+        } else {
+          result.requestContext_ = requestContextBuilder_.build();
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.Request) {
+          return mergeFrom((org.apache.bookkeeper.proto.BookkeeperProtocol.Request)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.proto.BookkeeperProtocol.Request other) {
+        if (other == org.apache.bookkeeper.proto.BookkeeperProtocol.Request.getDefaultInstance()) return this;
+        if (other.hasHeader()) {
+          mergeHeader(other.getHeader());
+        }
+        if (other.hasReadRequest()) {
+          mergeReadRequest(other.getReadRequest());
+        }
+        if (other.hasAddRequest()) {
+          mergeAddRequest(other.getAddRequest());
+        }
+        if (other.hasAuthRequest()) {
+          mergeAuthRequest(other.getAuthRequest());
+        }
+        if (other.hasWriteLacRequest()) {
+          mergeWriteLacRequest(other.getWriteLacRequest());
+        }
+        if (other.hasReadLacRequest()) {
+          mergeReadLacRequest(other.getReadLacRequest());
+        }
+        if (other.hasGetBookieInfoRequest()) {
+          mergeGetBookieInfoRequest(other.getGetBookieInfoRequest());
+        }
+        if (other.hasStartTLSRequest()) {
+          mergeStartTLSRequest(other.getStartTLSRequest());
+        }
+        if (other.hasForceLedgerRequest()) {
+          mergeForceLedgerRequest(other.getForceLedgerRequest());
+        }
+        if (other.hasGetListOfEntriesOfLedgerRequest()) {
+          mergeGetListOfEntriesOfLedgerRequest(other.getGetListOfEntriesOfLedgerRequest());
+        }
+        if (requestContextBuilder_ == null) {
+          if (!other.requestContext_.isEmpty()) {
+            if (requestContext_.isEmpty()) {
+              requestContext_ = other.requestContext_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+            } else {
+              ensureRequestContextIsMutable();
+              requestContext_.addAll(other.requestContext_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.requestContext_.isEmpty()) {
+            if (requestContextBuilder_.isEmpty()) {
+              requestContextBuilder_.dispose();
+              requestContextBuilder_ = null;
+              requestContext_ = other.requestContext_;
+              bitField0_ = (bitField0_ & ~0x00000400);
+              requestContextBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getRequestContextFieldBuilder() : null;
+            } else {
+              requestContextBuilder_.addAllMessages(other.requestContext_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasHeader()) {
+          return false;
+        }
+        if (!getHeader().isInitialized()) {
+          return false;
+        }
+        if (hasReadRequest()) {
+          if (!getReadRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasAddRequest()) {
+          if (!getAddRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasAuthRequest()) {
+          if (!getAuthRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasWriteLacRequest()) {
+          if (!getWriteLacRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasReadLacRequest()) {
+          if (!getReadLacRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasForceLedgerRequest()) {
+          if (!getForceLedgerRequest().isInitialized()) {
+            return false;
+          }
+        }
+        if (hasGetListOfEntriesOfLedgerRequest()) {
+          if (!getGetListOfEntriesOfLedgerRequest().isInitialized()) {
+            return false;
+          }
+        }
+        for (int i = 0; i < getRequestContextCount(); i++) {
+          if (!getRequestContext(i).isInitialized()) {
+            return false;
+          }
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.Request parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.proto.BookkeeperProtocol.Request) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader header_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder> headerBuilder_;
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       * @return Whether the header field is set.
+       */
+      public boolean hasHeader() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       * @return The header.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader() {
+        if (headerBuilder_ == null) {
+          return header_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance() : header_;
+        } else {
+          return headerBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public Builder setHeader(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader value) {
+        if (headerBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          header_ = value;
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public Builder setHeader(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder builderForValue) {
+        if (headerBuilder_ == null) {
+          header_ = builderForValue.build();
+          onChanged();
+        } else {
+          headerBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public Builder mergeHeader(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader value) {
+        if (headerBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0) &&
+              header_ != null &&
+              header_ != org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance()) {
+            header_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.newBuilder(header_).mergeFrom(value).buildPartial();
+          } else {
+            header_ = value;
+          }
+          onChanged();
+        } else {
+          headerBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000001;
+        return this;
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public Builder clearHeader() {
+        if (headerBuilder_ == null) {
+          header_ = null;
+          onChanged();
+        } else {
+          headerBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000001);
+        return this;
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder getHeaderBuilder() {
+        bitField0_ |= 0x00000001;
+        onChanged();
+        return getHeaderFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder getHeaderOrBuilder() {
+        if (headerBuilder_ != null) {
+          return headerBuilder_.getMessageOrBuilder();
+        } else {
+          return header_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance() : header_;
+        }
+      }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder> 
+          getHeaderFieldBuilder() {
+        if (headerBuilder_ == null) {
+          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder>(
+                  getHeader(),
+                  getParentForChildren(),
+                  isClean());
+          header_ = null;
+        }
+        return headerBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest readRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder> readRequestBuilder_;
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       * @return Whether the readRequest field is set.
+       */
+      public boolean hasReadRequest() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       * @return The readRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest() {
+        if (readRequestBuilder_ == null) {
+          return readRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance() : readRequest_;
+        } else {
+          return readRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public Builder setReadRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest value) {
+        if (readRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          readRequest_ = value;
+          onChanged();
+        } else {
+          readRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public Builder setReadRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder builderForValue) {
+        if (readRequestBuilder_ == null) {
+          readRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          readRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public Builder mergeReadRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest value) {
+        if (readRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000002) != 0) &&
+              readRequest_ != null &&
+              readRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance()) {
+            readRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.newBuilder(readRequest_).mergeFrom(value).buildPartial();
+          } else {
+            readRequest_ = value;
+          }
+          onChanged();
+        } else {
+          readRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000002;
+        return this;
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public Builder clearReadRequest() {
+        if (readRequestBuilder_ == null) {
+          readRequest_ = null;
+          onChanged();
+        } else {
+          readRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000002);
+        return this;
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder getReadRequestBuilder() {
+        bitField0_ |= 0x00000002;
+        onChanged();
+        return getReadRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder() {
+        if (readRequestBuilder_ != null) {
+          return readRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return readRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance() : readRequest_;
+        }
+      }
+      /**
+       * <pre>
+       * Requests
+       * </pre>
+       *
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder> 
+          getReadRequestFieldBuilder() {
+        if (readRequestBuilder_ == null) {
+          readRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder>(
+                  getReadRequest(),
+                  getParentForChildren(),
+                  isClean());
+          readRequest_ = null;
+        }
+        return readRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest addRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder> addRequestBuilder_;
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       * @return Whether the addRequest field is set.
+       */
+      public boolean hasAddRequest() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       * @return The addRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest() {
+        if (addRequestBuilder_ == null) {
+          return addRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance() : addRequest_;
+        } else {
+          return addRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public Builder setAddRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest value) {
+        if (addRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          addRequest_ = value;
+          onChanged();
+        } else {
+          addRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public Builder setAddRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder builderForValue) {
+        if (addRequestBuilder_ == null) {
+          addRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          addRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public Builder mergeAddRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest value) {
+        if (addRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000004) != 0) &&
+              addRequest_ != null &&
+              addRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance()) {
+            addRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.newBuilder(addRequest_).mergeFrom(value).buildPartial();
+          } else {
+            addRequest_ = value;
+          }
+          onChanged();
+        } else {
+          addRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000004;
+        return this;
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public Builder clearAddRequest() {
+        if (addRequestBuilder_ == null) {
+          addRequest_ = null;
+          onChanged();
+        } else {
+          addRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder getAddRequestBuilder() {
+        bitField0_ |= 0x00000004;
+        onChanged();
+        return getAddRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder getAddRequestOrBuilder() {
+        if (addRequestBuilder_ != null) {
+          return addRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return addRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance() : addRequest_;
+        }
+      }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder> 
+          getAddRequestFieldBuilder() {
+        if (addRequestBuilder_ == null) {
+          addRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder>(
+                  getAddRequest(),
+                  getParentForChildren(),
+                  isClean());
+          addRequest_ = null;
+        }
+        return addRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage authRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder> authRequestBuilder_;
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       * @return Whether the authRequest field is set.
+       */
+      public boolean hasAuthRequest() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       * @return The authRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest() {
+        if (authRequestBuilder_ == null) {
+          return authRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance() : authRequest_;
+        } else {
+          return authRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public Builder setAuthRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage value) {
+        if (authRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          authRequest_ = value;
+          onChanged();
+        } else {
+          authRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public Builder setAuthRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder builderForValue) {
+        if (authRequestBuilder_ == null) {
+          authRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          authRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public Builder mergeAuthRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage value) {
+        if (authRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000008) != 0) &&
+              authRequest_ != null &&
+              authRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance()) {
+            authRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.newBuilder(authRequest_).mergeFrom(value).buildPartial();
+          } else {
+            authRequest_ = value;
+          }
+          onChanged();
+        } else {
+          authRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000008;
+        return this;
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public Builder clearAuthRequest() {
+        if (authRequestBuilder_ == null) {
+          authRequest_ = null;
+          onChanged();
+        } else {
+          authRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000008);
+        return this;
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder getAuthRequestBuilder() {
+        bitField0_ |= 0x00000008;
+        onChanged();
+        return getAuthRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder getAuthRequestOrBuilder() {
+        if (authRequestBuilder_ != null) {
+          return authRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return authRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance() : authRequest_;
+        }
+      }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder> 
+          getAuthRequestFieldBuilder() {
+        if (authRequestBuilder_ == null) {
+          authRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder>(
+                  getAuthRequest(),
+                  getParentForChildren(),
+                  isClean());
+          authRequest_ = null;
+        }
+        return authRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest writeLacRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder> writeLacRequestBuilder_;
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       * @return Whether the writeLacRequest field is set.
+       */
+      public boolean hasWriteLacRequest() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       * @return The writeLacRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest getWriteLacRequest() {
+        if (writeLacRequestBuilder_ == null) {
+          return writeLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.getDefaultInstance() : writeLacRequest_;
+        } else {
+          return writeLacRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public Builder setWriteLacRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest value) {
+        if (writeLacRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          writeLacRequest_ = value;
+          onChanged();
+        } else {
+          writeLacRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public Builder setWriteLacRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder builderForValue) {
+        if (writeLacRequestBuilder_ == null) {
+          writeLacRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          writeLacRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public Builder mergeWriteLacRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest value) {
+        if (writeLacRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000010) != 0) &&
+              writeLacRequest_ != null &&
+              writeLacRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.getDefaultInstance()) {
+            writeLacRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.newBuilder(writeLacRequest_).mergeFrom(value).buildPartial();
+          } else {
+            writeLacRequest_ = value;
+          }
+          onChanged();
+        } else {
+          writeLacRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000010;
+        return this;
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public Builder clearWriteLacRequest() {
+        if (writeLacRequestBuilder_ == null) {
+          writeLacRequest_ = null;
+          onChanged();
+        } else {
+          writeLacRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000010);
+        return this;
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder getWriteLacRequestBuilder() {
+        bitField0_ |= 0x00000010;
+        onChanged();
+        return getWriteLacRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder getWriteLacRequestOrBuilder() {
+        if (writeLacRequestBuilder_ != null) {
+          return writeLacRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return writeLacRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.getDefaultInstance() : writeLacRequest_;
+        }
+      }
+      /**
+       * <code>optional .WriteLacRequest writeLacRequest = 103;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder> 
+          getWriteLacRequestFieldBuilder() {
+        if (writeLacRequestBuilder_ == null) {
+          writeLacRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.WriteLacRequestOrBuilder>(
+                  getWriteLacRequest(),
+                  getParentForChildren(),
+                  isClean());
+          writeLacRequest_ = null;
+        }
+        return writeLacRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest readLacRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder> readLacRequestBuilder_;
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       * @return Whether the readLacRequest field is set.
+       */
+      public boolean hasReadLacRequest() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       * @return The readLacRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest getReadLacRequest() {
+        if (readLacRequestBuilder_ == null) {
+          return readLacRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.getDefaultInstance() : readLacRequest_;
+        } else {
+          return readLacRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public Builder setReadLacRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest value) {
+        if (readLacRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          readLacRequest_ = value;
+          onChanged();
+        } else {
+          readLacRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public Builder setReadLacRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder builderForValue) {
+        if (readLacRequestBuilder_ == null) {
+          readLacRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          readLacRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public Builder mergeReadLacRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest value) {
+        if (readLacRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000020) != 0) &&
+              readLacRequest_ != null &&
+              readLacRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.getDefaultInstance()) {
+            readLacRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.newBuilder(readLacRequest_).mergeFrom(value).buildPartial();
+          } else {
+            readLacRequest_ = value;
+          }
+          onChanged();
+        } else {
+          readLacRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000020;
+        return this;
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public Builder clearReadLacRequest() {
+        if (readLacRequestBuilder_ == null) {
+          readLacRequest_ = null;
+          onChanged();
+        } else {
+          readLacRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder getReadLacRequestBuilder() {
+        bitField0_ |= 0x00000020;
+        onChanged();
+        return getReadLacRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder getReadLacRequestOrBuilder() {
+        if (readLacRequestBuilder_ != null) {
+          return readLacRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return readLacRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.getDefaultInstance() : readLacRequest_;
+        }
+      }
+      /**
+       * <code>optional .ReadLacRequest readLacRequest = 104;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder> 
+          getReadLacRequestFieldBuilder() {
+        if (readLacRequestBuilder_ == null) {
+          readLacRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadLacRequestOrBuilder>(
+                  getReadLacRequest(),
+                  getParentForChildren(),
+                  isClean());
+          readLacRequest_ = null;
+        }
+        return readLacRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest getBookieInfoRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder> getBookieInfoRequestBuilder_;
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       * @return Whether the getBookieInfoRequest field is set.
+       */
+      public boolean hasGetBookieInfoRequest() {
+        return ((bitField0_ & 0x00000040) != 0);
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       * @return The getBookieInfoRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest getGetBookieInfoRequest() {
+        if (getBookieInfoRequestBuilder_ == null) {
+          return getBookieInfoRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.getDefaultInstance() : getBookieInfoRequest_;
+        } else {
+          return getBookieInfoRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public Builder setGetBookieInfoRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest value) {
+        if (getBookieInfoRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          getBookieInfoRequest_ = value;
+          onChanged();
+        } else {
+          getBookieInfoRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public Builder setGetBookieInfoRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder builderForValue) {
+        if (getBookieInfoRequestBuilder_ == null) {
+          getBookieInfoRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          getBookieInfoRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public Builder mergeGetBookieInfoRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest value) {
+        if (getBookieInfoRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000040) != 0) &&
+              getBookieInfoRequest_ != null &&
+              getBookieInfoRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.getDefaultInstance()) {
+            getBookieInfoRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.newBuilder(getBookieInfoRequest_).mergeFrom(value).buildPartial();
+          } else {
+            getBookieInfoRequest_ = value;
+          }
+          onChanged();
+        } else {
+          getBookieInfoRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000040;
+        return this;
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public Builder clearGetBookieInfoRequest() {
+        if (getBookieInfoRequestBuilder_ == null) {
+          getBookieInfoRequest_ = null;
+          onChanged();
+        } else {
+          getBookieInfoRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000040);
+        return this;
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder getGetBookieInfoRequestBuilder() {
+        bitField0_ |= 0x00000040;
+        onChanged();
+        return getGetBookieInfoRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder getGetBookieInfoRequestOrBuilder() {
+        if (getBookieInfoRequestBuilder_ != null) {
+          return getBookieInfoRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return getBookieInfoRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.getDefaultInstance() : getBookieInfoRequest_;
+        }
+      }
+      /**
+       * <code>optional .GetBookieInfoRequest getBookieInfoRequest = 105;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder> 
+          getGetBookieInfoRequestFieldBuilder() {
+        if (getBookieInfoRequestBuilder_ == null) {
+          getBookieInfoRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetBookieInfoRequestOrBuilder>(
+                  getGetBookieInfoRequest(),
+                  getParentForChildren(),
+                  isClean());
+          getBookieInfoRequest_ = null;
+        }
+        return getBookieInfoRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest startTLSRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder> startTLSRequestBuilder_;
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       * @return Whether the startTLSRequest field is set.
+       */
+      public boolean hasStartTLSRequest() {
+        return ((bitField0_ & 0x00000080) != 0);
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       * @return The startTLSRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest getStartTLSRequest() {
+        if (startTLSRequestBuilder_ == null) {
+          return startTLSRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.getDefaultInstance() : startTLSRequest_;
+        } else {
+          return startTLSRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public Builder setStartTLSRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest value) {
+        if (startTLSRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          startTLSRequest_ = value;
+          onChanged();
+        } else {
+          startTLSRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public Builder setStartTLSRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder builderForValue) {
+        if (startTLSRequestBuilder_ == null) {
+          startTLSRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          startTLSRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public Builder mergeStartTLSRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest value) {
+        if (startTLSRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000080) != 0) &&
+              startTLSRequest_ != null &&
+              startTLSRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.getDefaultInstance()) {
+            startTLSRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.newBuilder(startTLSRequest_).mergeFrom(value).buildPartial();
+          } else {
+            startTLSRequest_ = value;
+          }
+          onChanged();
+        } else {
+          startTLSRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000080;
+        return this;
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public Builder clearStartTLSRequest() {
+        if (startTLSRequestBuilder_ == null) {
+          startTLSRequest_ = null;
+          onChanged();
+        } else {
+          startTLSRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000080);
+        return this;
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder getStartTLSRequestBuilder() {
+        bitField0_ |= 0x00000080;
+        onChanged();
+        return getStartTLSRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder getStartTLSRequestOrBuilder() {
+        if (startTLSRequestBuilder_ != null) {
+          return startTLSRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return startTLSRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.getDefaultInstance() : startTLSRequest_;
+        }
+      }
+      /**
+       * <code>optional .StartTLSRequest startTLSRequest = 106;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder> 
+          getStartTLSRequestFieldBuilder() {
+        if (startTLSRequestBuilder_ == null) {
+          startTLSRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequestOrBuilder>(
+                  getStartTLSRequest(),
+                  getParentForChildren(),
+                  isClean());
+          startTLSRequest_ = null;
+        }
+        return startTLSRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest forceLedgerRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder> forceLedgerRequestBuilder_;
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       * @return Whether the forceLedgerRequest field is set.
+       */
+      public boolean hasForceLedgerRequest() {
+        return ((bitField0_ & 0x00000100) != 0);
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       * @return The forceLedgerRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest getForceLedgerRequest() {
+        if (forceLedgerRequestBuilder_ == null) {
+          return forceLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.getDefaultInstance() : forceLedgerRequest_;
+        } else {
+          return forceLedgerRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public Builder setForceLedgerRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest value) {
+        if (forceLedgerRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          forceLedgerRequest_ = value;
+          onChanged();
+        } else {
+          forceLedgerRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public Builder setForceLedgerRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder builderForValue) {
+        if (forceLedgerRequestBuilder_ == null) {
+          forceLedgerRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          forceLedgerRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public Builder mergeForceLedgerRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest value) {
+        if (forceLedgerRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000100) != 0) &&
+              forceLedgerRequest_ != null &&
+              forceLedgerRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.getDefaultInstance()) {
+            forceLedgerRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.newBuilder(forceLedgerRequest_).mergeFrom(value).buildPartial();
+          } else {
+            forceLedgerRequest_ = value;
+          }
+          onChanged();
+        } else {
+          forceLedgerRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000100;
+        return this;
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public Builder clearForceLedgerRequest() {
+        if (forceLedgerRequestBuilder_ == null) {
+          forceLedgerRequest_ = null;
+          onChanged();
+        } else {
+          forceLedgerRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000100);
+        return this;
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder getForceLedgerRequestBuilder() {
+        bitField0_ |= 0x00000100;
+        onChanged();
+        return getForceLedgerRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder getForceLedgerRequestOrBuilder() {
+        if (forceLedgerRequestBuilder_ != null) {
+          return forceLedgerRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return forceLedgerRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.getDefaultInstance() : forceLedgerRequest_;
+        }
+      }
+      /**
+       * <code>optional .ForceLedgerRequest forceLedgerRequest = 107;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder> 
+          getForceLedgerRequestFieldBuilder() {
+        if (forceLedgerRequestBuilder_ == null) {
+          forceLedgerRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ForceLedgerRequestOrBuilder>(
+                  getForceLedgerRequest(),
+                  getParentForChildren(),
+                  isClean());
+          forceLedgerRequest_ = null;
+        }
+        return forceLedgerRequestBuilder_;
+      }
+
+      private org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder> getListOfEntriesOfLedgerRequestBuilder_;
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       * @return Whether the getListOfEntriesOfLedgerRequest field is set.
+       */
+      public boolean hasGetListOfEntriesOfLedgerRequest() {
+        return ((bitField0_ & 0x00000200) != 0);
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       * @return The getListOfEntriesOfLedgerRequest.
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest getGetListOfEntriesOfLedgerRequest() {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          return getListOfEntriesOfLedgerRequest_ == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.getDefaultInstance() : getListOfEntriesOfLedgerRequest_;
+        } else {
+          return getListOfEntriesOfLedgerRequestBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public Builder setGetListOfEntriesOfLedgerRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest value) {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          getListOfEntriesOfLedgerRequest_ = value;
+          onChanged();
+        } else {
+          getListOfEntriesOfLedgerRequestBuilder_.setMessage(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public Builder setGetListOfEntriesOfLedgerRequest(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder builderForValue) {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          getListOfEntriesOfLedgerRequest_ = builderForValue.build();
+          onChanged();
+        } else {
+          getListOfEntriesOfLedgerRequestBuilder_.setMessage(builderForValue.build());
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public Builder mergeGetListOfEntriesOfLedgerRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest value) {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          if (((bitField0_ & 0x00000200) != 0) &&
+              getListOfEntriesOfLedgerRequest_ != null &&
+              getListOfEntriesOfLedgerRequest_ != org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.getDefaultInstance()) {
+            getListOfEntriesOfLedgerRequest_ =
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.newBuilder(getListOfEntriesOfLedgerRequest_).mergeFrom(value).buildPartial();
+          } else {
+            getListOfEntriesOfLedgerRequest_ = value;
+          }
+          onChanged();
+        } else {
+          getListOfEntriesOfLedgerRequestBuilder_.mergeFrom(value);
+        }
+        bitField0_ |= 0x00000200;
+        return this;
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public Builder clearGetListOfEntriesOfLedgerRequest() {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          getListOfEntriesOfLedgerRequest_ = null;
+          onChanged();
+        } else {
+          getListOfEntriesOfLedgerRequestBuilder_.clear();
+        }
+        bitField0_ = (bitField0_ & ~0x00000200);
+        return this;
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder getGetListOfEntriesOfLedgerRequestBuilder() {
+        bitField0_ |= 0x00000200;
+        onChanged();
+        return getGetListOfEntriesOfLedgerRequestFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder getGetListOfEntriesOfLedgerRequestOrBuilder() {
+        if (getListOfEntriesOfLedgerRequestBuilder_ != null) {
+          return getListOfEntriesOfLedgerRequestBuilder_.getMessageOrBuilder();
+        } else {
+          return getListOfEntriesOfLedgerRequest_ == null ?
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.getDefaultInstance() : getListOfEntriesOfLedgerRequest_;
+        }
+      }
+      /**
+       * <code>optional .GetListOfEntriesOfLedgerRequest getListOfEntriesOfLedgerRequest = 108;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder> 
+          getGetListOfEntriesOfLedgerRequestFieldBuilder() {
+        if (getListOfEntriesOfLedgerRequestBuilder_ == null) {
+          getListOfEntriesOfLedgerRequestBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.GetListOfEntriesOfLedgerRequestOrBuilder>(
+                  getGetListOfEntriesOfLedgerRequest(),
+                  getParentForChildren(),
+                  isClean());
+          getListOfEntriesOfLedgerRequest_ = null;
+        }
+        return getListOfEntriesOfLedgerRequestBuilder_;
+      }
+
+      private java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> requestContext_ =
+        java.util.Collections.emptyList();
+      private void ensureRequestContextIsMutable() {
+        if (!((bitField0_ & 0x00000400) != 0)) {
+          requestContext_ = new java.util.ArrayList<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair>(requestContext_);
+          bitField0_ |= 0x00000400;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder> requestContextBuilder_;
+
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> getRequestContextList() {
+        if (requestContextBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(requestContext_);
+        } else {
+          return requestContextBuilder_.getMessageList();
+        }
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public int getRequestContextCount() {
+        if (requestContextBuilder_ == null) {
+          return requestContext_.size();
+        } else {
+          return requestContextBuilder_.getCount();
+        }
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair getRequestContext(int index) {
+        if (requestContextBuilder_ == null) {
+          return requestContext_.get(index);
+        } else {
+          return requestContextBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder setRequestContext(
+          int index, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair value) {
+        if (requestContextBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRequestContextIsMutable();
+          requestContext_.set(index, value);
+          onChanged();
+        } else {
+          requestContextBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder setRequestContext(
+          int index, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder builderForValue) {
+        if (requestContextBuilder_ == null) {
+          ensureRequestContextIsMutable();
+          requestContext_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          requestContextBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder addRequestContext(org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair value) {
+        if (requestContextBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRequestContextIsMutable();
+          requestContext_.add(value);
+          onChanged();
+        } else {
+          requestContextBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder addRequestContext(
+          int index, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair value) {
+        if (requestContextBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureRequestContextIsMutable();
+          requestContext_.add(index, value);
+          onChanged();
+        } else {
+          requestContextBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder addRequestContext(
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder builderForValue) {
+        if (requestContextBuilder_ == null) {
+          ensureRequestContextIsMutable();
+          requestContext_.add(builderForValue.build());
+          onChanged();
+        } else {
+          requestContextBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder addRequestContext(
+          int index, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder builderForValue) {
+        if (requestContextBuilder_ == null) {
+          ensureRequestContextIsMutable();
+          requestContext_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          requestContextBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder addAllRequestContext(
+          java.lang.Iterable<? extends org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair> values) {
+        if (requestContextBuilder_ == null) {
+          ensureRequestContextIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, requestContext_);
+          onChanged();
+        } else {
+          requestContextBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder clearRequestContext() {
+        if (requestContextBuilder_ == null) {
+          requestContext_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000400);
+          onChanged();
+        } else {
+          requestContextBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public Builder removeRequestContext(int index) {
+        if (requestContextBuilder_ == null) {
+          ensureRequestContextIsMutable();
+          requestContext_.remove(index);
+          onChanged();
+        } else {
+          requestContextBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder getRequestContextBuilder(
+          int index) {
+        return getRequestContextFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder getRequestContextOrBuilder(
+          int index) {
+        if (requestContextBuilder_ == null) {
+          return requestContext_.get(index);  } else {
+          return requestContextBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public java.util.List<? extends org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder> 
+           getRequestContextOrBuilderList() {
+        if (requestContextBuilder_ != null) {
+          return requestContextBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(requestContext_);
+        }
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder addRequestContextBuilder() {
+        return getRequestContextFieldBuilder().addBuilder(
+            org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder addRequestContextBuilder(
+          int index) {
+        return getRequestContextFieldBuilder().addBuilder(
+            index, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.getDefaultInstance());
+      }
+      /**
+       * <pre>
+       * to pass MDC context
+       * </pre>
+       *
+       * <code>repeated .ContextPair requestContext = 200;</code>
+       */
+      public java.util.List<org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder> 
+           getRequestContextBuilderList() {
+        return getRequestContextFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder> 
+          getRequestContextFieldBuilder() {
+        if (requestContextBuilder_ == null) {
+          requestContextBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPair.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ContextPairOrBuilder>(
+                  requestContext_,
+                  ((bitField0_ & 0x00000400) != 0),
+                  getParentForChildren(),
+                  isClean());
+          requestContext_ = null;
+        }
+        return requestContextBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:Request)
+    }
+
+    // @@protoc_insertion_point(class_scope:Request)
+    private static final org.apache.bookkeeper.proto.BookkeeperProtocol.Request DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.proto.BookkeeperProtocol.Request();
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<Request>
+        PARSER = new com.google.protobuf.AbstractParser<Request>() {
+      @java.lang.Override
+      public Request parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Request(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<Request> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Request> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.Request getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ReadRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ReadRequest)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     * @return Whether the flag field is set.
+     */
+    boolean hasFlag();
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     * @return The flag.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag getFlag();
+
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return Whether the ledgerId field is set.
+     */
+    boolean hasLedgerId();
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return The ledgerId.
+     */
+    long getLedgerId();
+
+    /**
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     *
+     * <code>required int64 entryId = 2;</code>
+     * @return Whether the entryId field is set.
+     */
+    boolean hasEntryId();
+    /**
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     *
+     * <code>required int64 entryId = 2;</code>
+     * @return The entryId.
+     */
+    long getEntryId();
+
+    /**
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     *
+     * <code>optional bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    boolean hasMasterKey();
+    /**
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     *
+     * <code>optional bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    com.google.protobuf.ByteString getMasterKey();
+
+    /**
+     * <pre>
+     * Used for waiting on last add confirmed update
+     * </pre>
+     *
+     * <code>optional int64 previousLAC = 4;</code>
+     * @return Whether the previousLAC field is set.
+     */
+    boolean hasPreviousLAC();
+    /**
+     * <pre>
+     * Used for waiting on last add confirmed update
+     * </pre>
+     *
+     * <code>optional int64 previousLAC = 4;</code>
+     * @return The previousLAC.
+     */
+    long getPreviousLAC();
+
+    /**
+     * <pre>
+     * Used as a timeout (in milliseconds) for the long polling request
+     * </pre>
+     *
+     * <code>optional int64 timeOut = 5;</code>
+     * @return Whether the timeOut field is set.
+     */
+    boolean hasTimeOut();
+    /**
+     * <pre>
+     * Used as a timeout (in milliseconds) for the long polling request
+     * </pre>
+     *
+     * <code>optional int64 timeOut = 5;</code>
+     * @return The timeOut.
+     */
+    long getTimeOut();
+  }
+  /**
+   * Protobuf type {@code ReadRequest}
+   */
+  public static final class ReadRequest extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:ReadRequest)
+      ReadRequestOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ReadRequest.newBuilder() to construct.
+    private ReadRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private ReadRequest() {
+      flag_ = 1;
+      masterKey_ = com.google.protobuf.ByteString.EMPTY;
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ReadRequest();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ReadRequest(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000002;
+              ledgerId_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000004;
+              entryId_ = input.readInt64();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000008;
+              masterKey_ = input.readBytes();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000010;
+              previousLAC_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000020;
+              timeOut_ = input.readInt64();
+              break;
+            }
+            case 800: {
+              int rawValue = input.readEnum();
+                @SuppressWarnings("deprecation")
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag value = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(100, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                flag_ = rawValue;
+              }
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.class, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder.class);
+    }
+
+    /**
+     * Protobuf enum {@code ReadRequest.Flag}
+     */
+    public enum Flag
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>FENCE_LEDGER = 1;</code>
+       */
+      FENCE_LEDGER(1),
+      /**
+       * <code>ENTRY_PIGGYBACK = 2;</code>
+       */
+      ENTRY_PIGGYBACK(2),
+      ;
+
+      /**
+       * <code>FENCE_LEDGER = 1;</code>
+       */
+      public static final int FENCE_LEDGER_VALUE = 1;
+      /**
+       * <code>ENTRY_PIGGYBACK = 2;</code>
+       */
+      public static final int ENTRY_PIGGYBACK_VALUE = 2;
+
+
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static Flag valueOf(int value) {
+        return forNumber(value);
+      }
+
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       */
+      public static Flag forNumber(int value) {
+        switch (value) {
+          case 1: return FENCE_LEDGER;
+          case 2: return ENTRY_PIGGYBACK;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Flag>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Flag> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Flag>() {
+              public Flag findValueByNumber(int number) {
+                return Flag.forNumber(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Flag[] VALUES = values();
+
+      public static Flag valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int value;
+
+      private Flag(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:ReadRequest.Flag)
+    }
+
+    private int bitField0_;
+    public static final int FLAG_FIELD_NUMBER = 100;
+    private int flag_;
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     * @return Whether the flag field is set.
+     */
+    @java.lang.Override public boolean hasFlag() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     * @return The flag.
+     */
+    @java.lang.Override public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag getFlag() {
+      @SuppressWarnings("deprecation")
+      org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag result = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag.valueOf(flag_);
+      return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag.FENCE_LEDGER : result;
+    }
+
+    public static final int LEDGERID_FIELD_NUMBER = 1;
+    private long ledgerId_;
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return Whether the ledgerId field is set.
+     */
+    @java.lang.Override
+    public boolean hasLedgerId() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return The ledgerId.
+     */
+    @java.lang.Override
+    public long getLedgerId() {
+      return ledgerId_;
+    }
+
+    public static final int ENTRYID_FIELD_NUMBER = 2;
+    private long entryId_;
+    /**
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     *
+     * <code>required int64 entryId = 2;</code>
+     * @return Whether the entryId field is set.
+     */
+    @java.lang.Override
+    public boolean hasEntryId() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     *
+     * <code>required int64 entryId = 2;</code>
+     * @return The entryId.
+     */
+    @java.lang.Override
+    public long getEntryId() {
+      return entryId_;
+    }
+
+    public static final int MASTERKEY_FIELD_NUMBER = 3;
+    private com.google.protobuf.ByteString masterKey_;
+    /**
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     *
+     * <code>optional bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    @java.lang.Override
+    public boolean hasMasterKey() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     *
+     * <code>optional bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getMasterKey() {
+      return masterKey_;
+    }
+
+    public static final int PREVIOUSLAC_FIELD_NUMBER = 4;
+    private long previousLAC_;
+    /**
+     * <pre>
+     * Used for waiting on last add confirmed update
+     * </pre>
+     *
+     * <code>optional int64 previousLAC = 4;</code>
+     * @return Whether the previousLAC field is set.
+     */
+    @java.lang.Override
+    public boolean hasPreviousLAC() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <pre>
+     * Used for waiting on last add confirmed update
+     * </pre>
+     *
+     * <code>optional int64 previousLAC = 4;</code>
+     * @return The previousLAC.
+     */
+    @java.lang.Override
+    public long getPreviousLAC() {
+      return previousLAC_;
+    }
+
+    public static final int TIMEOUT_FIELD_NUMBER = 5;
+    private long timeOut_;
+    /**
+     * <pre>
+     * Used as a timeout (in milliseconds) for the long polling request
+     * </pre>
+     *
+     * <code>optional int64 timeOut = 5;</code>
+     * @return Whether the timeOut field is set.
+     */
+    @java.lang.Override
+    public boolean hasTimeOut() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <pre>
+     * Used as a timeout (in milliseconds) for the long polling request
+     * </pre>
+     *
+     * <code>optional int64 timeOut = 5;</code>
+     * @return The timeOut.
+     */
+    @java.lang.Override
+    public long getTimeOut() {
+      return timeOut_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasLedgerId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasEntryId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeInt64(1, ledgerId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeInt64(2, entryId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeBytes(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeInt64(4, previousLAC_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeInt64(5, timeOut_);
+      }
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeEnum(100, flag_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, ledgerId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, entryId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(4, previousLAC_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(5, timeOut_);
+      }
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(100, flag_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest other = (org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest) obj;
+
+      if (hasFlag() != other.hasFlag()) return false;
+      if (hasFlag()) {
+        if (flag_ != other.flag_) return false;
+      }
+      if (hasLedgerId() != other.hasLedgerId()) return false;
+      if (hasLedgerId()) {
+        if (getLedgerId()
+            != other.getLedgerId()) return false;
+      }
+      if (hasEntryId() != other.hasEntryId()) return false;
+      if (hasEntryId()) {
+        if (getEntryId()
+            != other.getEntryId()) return false;
+      }
+      if (hasMasterKey() != other.hasMasterKey()) return false;
+      if (hasMasterKey()) {
+        if (!getMasterKey()
+            .equals(other.getMasterKey())) return false;
+      }
+      if (hasPreviousLAC() != other.hasPreviousLAC()) return false;
+      if (hasPreviousLAC()) {
+        if (getPreviousLAC()
+            != other.getPreviousLAC()) return false;
+      }
+      if (hasTimeOut() != other.hasTimeOut()) return false;
+      if (hasTimeOut()) {
+        if (getTimeOut()
+            != other.getTimeOut()) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasFlag()) {
+        hash = (37 * hash) + FLAG_FIELD_NUMBER;
+        hash = (53 * hash) + flag_;
+      }
+      if (hasLedgerId()) {
+        hash = (37 * hash) + LEDGERID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getLedgerId());
+      }
+      if (hasEntryId()) {
+        hash = (37 * hash) + ENTRYID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getEntryId());
+      }
+      if (hasMasterKey()) {
+        hash = (37 * hash) + MASTERKEY_FIELD_NUMBER;
+        hash = (53 * hash) + getMasterKey().hashCode();
+      }
+      if (hasPreviousLAC()) {
+        hash = (37 * hash) + PREVIOUSLAC_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getPreviousLAC());
+      }
+      if (hasTimeOut()) {
+        hash = (37 * hash) + TIMEOUT_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getTimeOut());
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code ReadRequest}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:ReadRequest)
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.class, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        flag_ = 1;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ledgerId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        entryId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        masterKey_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        previousLAC_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        timeOut_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getDefaultInstanceForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest build() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest buildPartial() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest result = new org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.flag_ = flag_;
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.ledgerId_ = ledgerId_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.entryId_ = entryId_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.masterKey_ = masterKey_;
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          result.previousLAC_ = previousLAC_;
+          to_bitField0_ |= 0x00000010;
+        }
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          result.timeOut_ = timeOut_;
+          to_bitField0_ |= 0x00000020;
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest) {
+          return mergeFrom((org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest other) {
+        if (other == org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance()) return this;
+        if (other.hasFlag()) {
+          setFlag(other.getFlag());
+        }
+        if (other.hasLedgerId()) {
+          setLedgerId(other.getLedgerId());
+        }
+        if (other.hasEntryId()) {
+          setEntryId(other.getEntryId());
+        }
+        if (other.hasMasterKey()) {
+          setMasterKey(other.getMasterKey());
+        }
+        if (other.hasPreviousLAC()) {
+          setPreviousLAC(other.getPreviousLAC());
+        }
+        if (other.hasTimeOut()) {
+          setTimeOut(other.getTimeOut());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasLedgerId()) {
+          return false;
+        }
+        if (!hasEntryId()) {
+          return false;
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int flag_ = 1;
+      /**
+       * <code>optional .ReadRequest.Flag flag = 100;</code>
+       * @return Whether the flag field is set.
+       */
+      @java.lang.Override public boolean hasFlag() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>optional .ReadRequest.Flag flag = 100;</code>
+       * @return The flag.
+       */
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag getFlag() {
+        @SuppressWarnings("deprecation")
+        org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag result = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag.valueOf(flag_);
+        return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag.FENCE_LEDGER : result;
+      }
+      /**
+       * <code>optional .ReadRequest.Flag flag = 100;</code>
+       * @param value The flag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFlag(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        flag_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .ReadRequest.Flag flag = 100;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFlag() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        flag_ = 1;
+        onChanged();
+        return this;
+      }
+
+      private long ledgerId_ ;
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return Whether the ledgerId field is set.
+       */
+      @java.lang.Override
+      public boolean hasLedgerId() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return The ledgerId.
+       */
+      @java.lang.Override
+      public long getLedgerId() {
+        return ledgerId_;
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @param value The ledgerId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLedgerId(long value) {
+        bitField0_ |= 0x00000002;
+        ledgerId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLedgerId() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ledgerId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long entryId_ ;
+      /**
+       * <pre>
+       * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+       * </pre>
+       *
+       * <code>required int64 entryId = 2;</code>
+       * @return Whether the entryId field is set.
+       */
+      @java.lang.Override
+      public boolean hasEntryId() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <pre>
+       * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+       * </pre>
+       *
+       * <code>required int64 entryId = 2;</code>
+       * @return The entryId.
+       */
+      @java.lang.Override
+      public long getEntryId() {
+        return entryId_;
+      }
+      /**
+       * <pre>
+       * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+       * </pre>
+       *
+       * <code>required int64 entryId = 2;</code>
+       * @param value The entryId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setEntryId(long value) {
+        bitField0_ |= 0x00000004;
+        entryId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+       * </pre>
+       *
+       * <code>required int64 entryId = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearEntryId() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        entryId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString masterKey_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <pre>
+       * Used while fencing a ledger.
+       * </pre>
+       *
+       * <code>optional bytes masterKey = 3;</code>
+       * @return Whether the masterKey field is set.
+       */
+      @java.lang.Override
+      public boolean hasMasterKey() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <pre>
+       * Used while fencing a ledger.
+       * </pre>
+       *
+       * <code>optional bytes masterKey = 3;</code>
+       * @return The masterKey.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getMasterKey() {
+        return masterKey_;
+      }
+      /**
+       * <pre>
+       * Used while fencing a ledger.
+       * </pre>
+       *
+       * <code>optional bytes masterKey = 3;</code>
+       * @param value The masterKey to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMasterKey(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        masterKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Used while fencing a ledger.
+       * </pre>
+       *
+       * <code>optional bytes masterKey = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMasterKey() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        masterKey_ = getDefaultInstance().getMasterKey();
+        onChanged();
+        return this;
+      }
+
+      private long previousLAC_ ;
+      /**
+       * <pre>
+       * Used for waiting on last add confirmed update
+       * </pre>
+       *
+       * <code>optional int64 previousLAC = 4;</code>
+       * @return Whether the previousLAC field is set.
+       */
+      @java.lang.Override
+      public boolean hasPreviousLAC() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <pre>
+       * Used for waiting on last add confirmed update
+       * </pre>
+       *
+       * <code>optional int64 previousLAC = 4;</code>
+       * @return The previousLAC.
+       */
+      @java.lang.Override
+      public long getPreviousLAC() {
+        return previousLAC_;
+      }
+      /**
+       * <pre>
+       * Used for waiting on last add confirmed update
+       * </pre>
+       *
+       * <code>optional int64 previousLAC = 4;</code>
+       * @param value The previousLAC to set.
+       * @return This builder for chaining.
+       */
+      public Builder setPreviousLAC(long value) {
+        bitField0_ |= 0x00000010;
+        previousLAC_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Used for waiting on last add confirmed update
+       * </pre>
+       *
+       * <code>optional int64 previousLAC = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearPreviousLAC() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        previousLAC_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long timeOut_ ;
+      /**
+       * <pre>
+       * Used as a timeout (in milliseconds) for the long polling request
+       * </pre>
+       *
+       * <code>optional int64 timeOut = 5;</code>
+       * @return Whether the timeOut field is set.
+       */
+      @java.lang.Override
+      public boolean hasTimeOut() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <pre>
+       * Used as a timeout (in milliseconds) for the long polling request
+       * </pre>
+       *
+       * <code>optional int64 timeOut = 5;</code>
+       * @return The timeOut.
+       */
+      @java.lang.Override
+      public long getTimeOut() {
+        return timeOut_;
+      }
+      /**
+       * <pre>
+       * Used as a timeout (in milliseconds) for the long polling request
+       * </pre>
+       *
+       * <code>optional int64 timeOut = 5;</code>
+       * @param value The timeOut to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTimeOut(long value) {
+        bitField0_ |= 0x00000020;
+        timeOut_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * Used as a timeout (in milliseconds) for the long polling request
+       * </pre>
+       *
+       * <code>optional int64 timeOut = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTimeOut() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        timeOut_ = 0L;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:ReadRequest)
+    }
+
+    // @@protoc_insertion_point(class_scope:ReadRequest)
+    private static final org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest();
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<ReadRequest>
+        PARSER = new com.google.protobuf.AbstractParser<ReadRequest>() {
+      @java.lang.Override
+      public ReadRequest parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ReadRequest(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<ReadRequest> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ReadRequest> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface AddRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:AddRequest)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional .AddRequest.Flag flag = 100;</code>
+     * @return Whether the flag field is set.
+     */
+    boolean hasFlag();
+    /**
+     * <code>optional .AddRequest.Flag flag = 100;</code>
+     * @return The flag.
+     */
+    org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag getFlag();
+
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return Whether the ledgerId field is set.
+     */
+    boolean hasLedgerId();
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return The ledgerId.
+     */
+    long getLedgerId();
+
+    /**
+     * <code>required int64 entryId = 2;</code>
+     * @return Whether the entryId field is set.
+     */
+    boolean hasEntryId();
+    /**
+     * <code>required int64 entryId = 2;</code>
+     * @return The entryId.
+     */
+    long getEntryId();
+
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    boolean hasMasterKey();
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    com.google.protobuf.ByteString getMasterKey();
+
+    /**
+     * <code>required bytes body = 4;</code>
+     * @return Whether the body field is set.
+     */
+    boolean hasBody();
+    /**
+     * <code>required bytes body = 4;</code>
+     * @return The body.
+     */
+    com.google.protobuf.ByteString getBody();
+
+    /**
+     * <code>optional int32 writeFlags = 5;</code>
+     * @return Whether the writeFlags field is set.
+     */
+    boolean hasWriteFlags();
+    /**
+     * <code>optional int32 writeFlags = 5;</code>
+     * @return The writeFlags.
+     */
+    int getWriteFlags();
+  }
+  /**
+   * Protobuf type {@code AddRequest}
+   */
+  public static final class AddRequest extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:AddRequest)
+      AddRequestOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use AddRequest.newBuilder() to construct.
+    private AddRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private AddRequest() {
+      flag_ = 1;
+      masterKey_ = com.google.protobuf.ByteString.EMPTY;
+      body_ = com.google.protobuf.ByteString.EMPTY;
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new AddRequest();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private AddRequest(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+              bitField0_ |= 0x00000002;
+              ledgerId_ = input.readInt64();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000004;
+              entryId_ = input.readInt64();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000008;
+              masterKey_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000010;
+              body_ = input.readBytes();
+              break;
+            }
+            case 40: {
+              bitField0_ |= 0x00000020;
+              writeFlags_ = input.readInt32();
+              break;
+            }
+            case 800: {
+              int rawValue = input.readEnum();
+                @SuppressWarnings("deprecation")
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag value = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(100, rawValue);
+              } else {
+                bitField0_ |= 0x00000001;
+                flag_ = rawValue;
+              }
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_AddRequest_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_AddRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.class, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder.class);
+    }
+
+    /**
+     * Protobuf enum {@code AddRequest.Flag}
+     */
+    public enum Flag
+        implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>RECOVERY_ADD = 1;</code>
+       */
+      RECOVERY_ADD(1),
+      ;
+
+      /**
+       * <code>RECOVERY_ADD = 1;</code>
+       */
+      public static final int RECOVERY_ADD_VALUE = 1;
+
+
+      public final int getNumber() {
+        return value;
+      }
+
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       * @deprecated Use {@link #forNumber(int)} instead.
+       */
+      @java.lang.Deprecated
+      public static Flag valueOf(int value) {
+        return forNumber(value);
+      }
+
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       */
+      public static Flag forNumber(int value) {
+        switch (value) {
+          case 1: return RECOVERY_ADD;
+          default: return null;
+        }
+      }
+
+      public static com.google.protobuf.Internal.EnumLiteMap<Flag>
+          internalGetValueMap() {
+        return internalValueMap;
+      }
+      private static final com.google.protobuf.Internal.EnumLiteMap<
+          Flag> internalValueMap =
+            new com.google.protobuf.Internal.EnumLiteMap<Flag>() {
+              public Flag findValueByNumber(int number) {
+                return Flag.forNumber(number);
+              }
+            };
+
+      public final com.google.protobuf.Descriptors.EnumValueDescriptor
+          getValueDescriptor() {
+        return getDescriptor().getValues().get(ordinal());
+      }
+      public final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+      public static final com.google.protobuf.Descriptors.EnumDescriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDescriptor().getEnumTypes().get(0);
+      }
+
+      private static final Flag[] VALUES = values();
+
+      public static Flag valueOf(
+          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+        if (desc.getType() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "EnumValueDescriptor is not for this type.");
+        }
+        return VALUES[desc.getIndex()];
+      }
+
+      private final int value;
+
+      private Flag(int value) {
+        this.value = value;
+      }
+
+      // @@protoc_insertion_point(enum_scope:AddRequest.Flag)
+    }
+
+    private int bitField0_;
+    public static final int FLAG_FIELD_NUMBER = 100;
+    private int flag_;
+    /**
+     * <code>optional .AddRequest.Flag flag = 100;</code>
+     * @return Whether the flag field is set.
+     */
+    @java.lang.Override public boolean hasFlag() {
+      return ((bitField0_ & 0x00000001) != 0);
+    }
+    /**
+     * <code>optional .AddRequest.Flag flag = 100;</code>
+     * @return The flag.
+     */
+    @java.lang.Override public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag getFlag() {
+      @SuppressWarnings("deprecation")
+      org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag result = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag.valueOf(flag_);
+      return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag.RECOVERY_ADD : result;
+    }
+
+    public static final int LEDGERID_FIELD_NUMBER = 1;
+    private long ledgerId_;
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return Whether the ledgerId field is set.
+     */
+    @java.lang.Override
+    public boolean hasLedgerId() {
+      return ((bitField0_ & 0x00000002) != 0);
+    }
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     * @return The ledgerId.
+     */
+    @java.lang.Override
+    public long getLedgerId() {
+      return ledgerId_;
+    }
+
+    public static final int ENTRYID_FIELD_NUMBER = 2;
+    private long entryId_;
+    /**
+     * <code>required int64 entryId = 2;</code>
+     * @return Whether the entryId field is set.
+     */
+    @java.lang.Override
+    public boolean hasEntryId() {
+      return ((bitField0_ & 0x00000004) != 0);
+    }
+    /**
+     * <code>required int64 entryId = 2;</code>
+     * @return The entryId.
+     */
+    @java.lang.Override
+    public long getEntryId() {
+      return entryId_;
+    }
+
+    public static final int MASTERKEY_FIELD_NUMBER = 3;
+    private com.google.protobuf.ByteString masterKey_;
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return Whether the masterKey field is set.
+     */
+    @java.lang.Override
+    public boolean hasMasterKey() {
+      return ((bitField0_ & 0x00000008) != 0);
+    }
+    /**
+     * <code>required bytes masterKey = 3;</code>
+     * @return The masterKey.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getMasterKey() {
+      return masterKey_;
+    }
+
+    public static final int BODY_FIELD_NUMBER = 4;
+    private com.google.protobuf.ByteString body_;
+    /**
+     * <code>required bytes body = 4;</code>
+     * @return Whether the body field is set.
+     */
+    @java.lang.Override
+    public boolean hasBody() {
+      return ((bitField0_ & 0x00000010) != 0);
+    }
+    /**
+     * <code>required bytes body = 4;</code>
+     * @return The body.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString getBody() {
+      return body_;
+    }
+
+    public static final int WRITEFLAGS_FIELD_NUMBER = 5;
+    private int writeFlags_;
+    /**
+     * <code>optional int32 writeFlags = 5;</code>
+     * @return Whether the writeFlags field is set.
+     */
+    @java.lang.Override
+    public boolean hasWriteFlags() {
+      return ((bitField0_ & 0x00000020) != 0);
+    }
+    /**
+     * <code>optional int32 writeFlags = 5;</code>
+     * @return The writeFlags.
+     */
+    @java.lang.Override
+    public int getWriteFlags() {
+      return writeFlags_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      if (!hasLedgerId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasEntryId()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasMasterKey()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasBody()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (((bitField0_ & 0x00000002) != 0)) {
+        output.writeInt64(1, ledgerId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        output.writeInt64(2, entryId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        output.writeBytes(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        output.writeBytes(4, body_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        output.writeInt32(5, writeFlags_);
+      }
+      if (((bitField0_ & 0x00000001) != 0)) {
+        output.writeEnum(100, flag_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000002) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, ledgerId_);
+      }
+      if (((bitField0_ & 0x00000004) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(2, entryId_);
+      }
+      if (((bitField0_ & 0x00000008) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, masterKey_);
+      }
+      if (((bitField0_ & 0x00000010) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, body_);
+      }
+      if (((bitField0_ & 0x00000020) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(5, writeFlags_);
+      }
+      if (((bitField0_ & 0x00000001) != 0)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(100, flag_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest other = (org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest) obj;
+
+      if (hasFlag() != other.hasFlag()) return false;
+      if (hasFlag()) {
+        if (flag_ != other.flag_) return false;
+      }
+      if (hasLedgerId() != other.hasLedgerId()) return false;
+      if (hasLedgerId()) {
+        if (getLedgerId()
+            != other.getLedgerId()) return false;
+      }
+      if (hasEntryId() != other.hasEntryId()) return false;
+      if (hasEntryId()) {
+        if (getEntryId()
+            != other.getEntryId()) return false;
+      }
+      if (hasMasterKey() != other.hasMasterKey()) return false;
+      if (hasMasterKey()) {
+        if (!getMasterKey()
+            .equals(other.getMasterKey())) return false;
+      }
+      if (hasBody() != other.hasBody()) return false;
+      if (hasBody()) {
+        if (!getBody()
+            .equals(other.getBody())) return false;
+      }
+      if (hasWriteFlags() != other.hasWriteFlags()) return false;
+      if (hasWriteFlags()) {
+        if (getWriteFlags()
+            != other.getWriteFlags()) return false;
+      }
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (hasFlag()) {
+        hash = (37 * hash) + FLAG_FIELD_NUMBER;
+        hash = (53 * hash) + flag_;
+      }
+      if (hasLedgerId()) {
+        hash = (37 * hash) + LEDGERID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getLedgerId());
+      }
+      if (hasEntryId()) {
+        hash = (37 * hash) + ENTRYID_FIELD_NUMBER;
+        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+            getEntryId());
+      }
+      if (hasMasterKey()) {
+        hash = (37 * hash) + MASTERKEY_FIELD_NUMBER;
+        hash = (53 * hash) + getMasterKey().hashCode();
+      }
+      if (hasBody()) {
+        hash = (37 * hash) + BODY_FIELD_NUMBER;
+        hash = (53 * hash) + getBody().hashCode();
+      }
+      if (hasWriteFlags()) {
+        hash = (37 * hash) + WRITEFLAGS_FIELD_NUMBER;
+        hash = (53 * hash) + getWriteFlags();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code AddRequest}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:AddRequest)
+        org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_AddRequest_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_AddRequest_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.class, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder.class);
+      }
+
+      // Construct using org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        flag_ = 1;
+        bitField0_ = (bitField0_ & ~0x00000001);
+        ledgerId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        entryId_ = 0L;
+        bitField0_ = (bitField0_ & ~0x00000004);
+        masterKey_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000008);
+        body_ = com.google.protobuf.ByteString.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000010);
+        writeFlags_ = 0;
+        bitField0_ = (bitField0_ & ~0x00000020);
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_AddRequest_descriptor;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getDefaultInstanceForType() {
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest build() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest buildPartial() {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest result = new org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) != 0)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.flag_ = flag_;
+        if (((from_bitField0_ & 0x00000002) != 0)) {
+          result.ledgerId_ = ledgerId_;
+          to_bitField0_ |= 0x00000002;
+        }
+        if (((from_bitField0_ & 0x00000004) != 0)) {
+          result.entryId_ = entryId_;
+          to_bitField0_ |= 0x00000004;
+        }
+        if (((from_bitField0_ & 0x00000008) != 0)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.masterKey_ = masterKey_;
+        if (((from_bitField0_ & 0x00000010) != 0)) {
+          to_bitField0_ |= 0x00000010;
+        }
+        result.body_ = body_;
+        if (((from_bitField0_ & 0x00000020) != 0)) {
+          result.writeFlags_ = writeFlags_;
+          to_bitField0_ |= 0x00000020;
+        }
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest) {
+          return mergeFrom((org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest other) {
+        if (other == org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance()) return this;
+        if (other.hasFlag()) {
+          setFlag(other.getFlag());
+        }
+        if (other.hasLedgerId()) {
+          setLedgerId(other.getLedgerId());
+        }
+        if (other.hasEntryId()) {
+          setEntryId(other.getEntryId());
+        }
+        if (other.hasMasterKey()) {
+          setMasterKey(other.getMasterKey());
+        }
+        if (other.hasBody()) {
+          setBody(other.getBody());
+        }
+        if (other.hasWriteFlags()) {
+          setWriteFlags(other.getWriteFlags());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        if (!hasLedgerId()) {
+          return false;
+        }
+        if (!hasEntryId()) {
+          return false;
+        }
+        if (!hasMasterKey()) {
+          return false;
+        }
+        if (!hasBody()) {
+          return false;
+        }
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private int flag_ = 1;
+      /**
+       * <code>optional .AddRequest.Flag flag = 100;</code>
+       * @return Whether the flag field is set.
+       */
+      @java.lang.Override public boolean hasFlag() {
+        return ((bitField0_ & 0x00000001) != 0);
+      }
+      /**
+       * <code>optional .AddRequest.Flag flag = 100;</code>
+       * @return The flag.
+       */
+      @java.lang.Override
+      public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag getFlag() {
+        @SuppressWarnings("deprecation")
+        org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag result = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag.valueOf(flag_);
+        return result == null ? org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag.RECOVERY_ADD : result;
+      }
+      /**
+       * <code>optional .AddRequest.Flag flag = 100;</code>
+       * @param value The flag to set.
+       * @return This builder for chaining.
+       */
+      public Builder setFlag(org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Flag value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        bitField0_ |= 0x00000001;
+        flag_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional .AddRequest.Flag flag = 100;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearFlag() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        flag_ = 1;
+        onChanged();
+        return this;
+      }
+
+      private long ledgerId_ ;
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return Whether the ledgerId field is set.
+       */
+      @java.lang.Override
+      public boolean hasLedgerId() {
+        return ((bitField0_ & 0x00000002) != 0);
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return The ledgerId.
+       */
+      @java.lang.Override
+      public long getLedgerId() {
+        return ledgerId_;
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @param value The ledgerId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setLedgerId(long value) {
+        bitField0_ |= 0x00000002;
+        ledgerId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 ledgerId = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearLedgerId() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        ledgerId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private long entryId_ ;
+      /**
+       * <code>required int64 entryId = 2;</code>
+       * @return Whether the entryId field is set.
+       */
+      @java.lang.Override
+      public boolean hasEntryId() {
+        return ((bitField0_ & 0x00000004) != 0);
+      }
+      /**
+       * <code>required int64 entryId = 2;</code>
+       * @return The entryId.
+       */
+      @java.lang.Override
+      public long getEntryId() {
+        return entryId_;
+      }
+      /**
+       * <code>required int64 entryId = 2;</code>
+       * @param value The entryId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setEntryId(long value) {
+        bitField0_ |= 0x00000004;
+        entryId_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required int64 entryId = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearEntryId() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        entryId_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString masterKey_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return Whether the masterKey field is set.
+       */
+      @java.lang.Override
+      public boolean hasMasterKey() {
+        return ((bitField0_ & 0x00000008) != 0);
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return The masterKey.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getMasterKey() {
+        return masterKey_;
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @param value The masterKey to set.
+       * @return This builder for chaining.
+       */
+      public Builder setMasterKey(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        masterKey_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required bytes masterKey = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearMasterKey() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        masterKey_ = getDefaultInstance().getMasterKey();
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>required bytes body = 4;</code>
+       * @return Whether the body field is set.
+       */
+      @java.lang.Override
+      public boolean hasBody() {
+        return ((bitField0_ & 0x00000010) != 0);
+      }
+      /**
+       * <code>required bytes body = 4;</code>
+       * @return The body.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString getBody() {
+        return body_;
+      }
+      /**
+       * <code>required bytes body = 4;</code>
+       * @param value The body to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBody(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000010;
+        body_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required bytes body = 4;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearBody() {
+        bitField0_ = (bitField0_ & ~0x00000010);
+        body_ = getDefaultInstance().getBody();
+        onChanged();
+        return this;
+      }
+
+      private int writeFlags_ ;
+      /**
+       * <code>optional int32 writeFlags = 5;</code>
+       * @return Whether the writeFlags field is set.
+       */
+      @java.lang.Override
+      public boolean hasWriteFlags() {
+        return ((bitField0_ & 0x00000020) != 0);
+      }
+      /**
+       * <code>optional int32 writeFlags = 5;</code>
+       * @return The writeFlags.
+       */
+      @java.lang.Override
+      public int getWriteFlags() {
+        return writeFlags_;
+      }
+      /**
+       * <code>optional int32 writeFlags = 5;</code>
+       * @param value The writeFlags to set.
+       * @return This builder for chaining.
+       */
+      public Builder setWriteFlags(int value) {
+        bitField0_ |= 0x00000020;
+        writeFlags_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 writeFlags = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearWriteFlags() {
+        bitField0_ = (bitField0_ & ~0x00000020);
+        writeFlags_ = 0;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:AddRequest)
+    }
+
+    // @@protoc_insertion_point(class_scope:AddRequest)
+    private static final org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest();
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    @java.lang.Deprecated public static final com.google.protobuf.Parser<AddRequest>
+        PARSER = new com.google.protobuf.AbstractParser<AddRequest>() {
+      @java.lang.Override
+      public AddRequest parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new AddRequest(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<AddRequest> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<AddRequest> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface StartTLSRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:StartTLSRequest)
+      com.google.protobuf.MessageOrBuilder {
+  }
+  /**
+   * Protobuf type {@code StartTLSRequest}
+   */
+  public static final class StartTLSRequest extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:StartTLSRequest)
+      StartTLSRequestOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use StartTLSRequest.newBuilder() to construct.
+    private StartTLSRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private StartTLSRequest() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new StartTLSRequest();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private StartTLSRequest(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_StartTLSRequest_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_StartTLSRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.class, org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest.Builder.class);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest)) {
+        return super.equals(obj);
+      }
+      org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest other = (org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest) obj;
+
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.bookkeeper.proto.BookkeeperProtocol.StartTLSRequest parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
... 134528 lines suppressed ...


[bookkeeper] 19/22: WriteLacResponse should be processed in the same thread as other requ… (#3452)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 1fed2de6436b6fa0c8bd5bcae8b0705655a2e5ac
Author: karanmehta93 <k....@salesforce.com>
AuthorDate: Sat Aug 20 23:46:14 2022 -0700

    WriteLacResponse should be processed in the same thread as other requ… (#3452)
    
    * WriteLacResponse should be processed in the same thread as other requests for same ledgerId
    
    In PCBC code, the WriteLacCompletion object uses LAC as the key for selecting the thread in which the response
    will be processed. However, according to bookkeeper code guarantees, the thread should be decided based on hash of ledgerId.
    
    * Empty-Commit
---
 .../main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index aeef8f8e19..29ccb7e6f2 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -673,7 +673,7 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
         // writeLac is mostly like addEntry hence uses addEntryTimeout
         completionObjects.put(completionKey,
                               new WriteLacCompletion(completionKey, cb,
-                                                     ctx, lac));
+                                                     ctx, ledgerId));
 
         // Build the request
         BKPacketHeader.Builder headerBuilder = BKPacketHeader.newBuilder()


[bookkeeper] 01/22: Publish snapshots to DataStax repo

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch ds-4.14
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit abc82398fe222422b9252ca0c1783243392e08a3
Author: Enrico Olivelli <eo...@apache.org>
AuthorDate: Fri Jun 11 11:44:43 2021 +0200

    Publish snapshots to DataStax repo
    
    (cherry picked from commit 122386a86c94803ebd52ee3b12699585c9df4537)
    (cherry picked from commit ea9874d1f6e93e0415bf4ef0d9f6b214b4dde993)
---
 pom.xml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/pom.xml b/pom.xml
index 110bbeddac..45ba08654b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1131,4 +1131,16 @@
       </build>
     </profile>
   </profiles>
+  <distributionManagement>
+    <repository>
+      <id>datastax-releases</id>
+      <name>DataStax Local Releases</name>
+      <url>https://repo.sjc.dsinternal.org/artifactory/datastax-releases-local/</url>
+    </repository>
+    <snapshotRepository>
+      <id>datastax-snapshots-local</id>
+      <name>DataStax Local Snapshots</name>
+      <url>https://repo.sjc.dsinternal.org/artifactory/datastax-snapshots-local/</url>
+    </snapshotRepository>
+  </distributionManagement>
 </project>