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/20 08:12:26 UTC

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

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