You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2016/08/16 17:42:19 UTC

[1/4] bookkeeper git commit: BOOKKEEPER-937: Upgrade protobuf to 2.6

Repository: bookkeeper
Updated Branches:
  refs/heads/master 64f596f45 -> 28f23e80b


http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestDataFormats.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestDataFormats.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestDataFormats.java
index c3f675f..84e1a77 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestDataFormats.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/proto/TestDataFormats.java
@@ -9,20 +9,41 @@ public final class TestDataFormats {
       com.google.protobuf.ExtensionRegistry registry) {
     registry.add(org.apache.bookkeeper.proto.TestDataFormats.messageType);
   }
+  /**
+   * Protobuf enum {@code AuthMessageType}
+   */
   public enum AuthMessageType
       implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>SUCCESS_RESPONSE = 1;</code>
+     */
     SUCCESS_RESPONSE(0, 1),
+    /**
+     * <code>FAILURE_RESPONSE = 2;</code>
+     */
     FAILURE_RESPONSE(1, 2),
+    /**
+     * <code>PAYLOAD_MESSAGE = 3;</code>
+     */
     PAYLOAD_MESSAGE(2, 3),
     ;
-    
+
+    /**
+     * <code>SUCCESS_RESPONSE = 1;</code>
+     */
     public static final int SUCCESS_RESPONSE_VALUE = 1;
+    /**
+     * <code>FAILURE_RESPONSE = 2;</code>
+     */
     public static final int FAILURE_RESPONSE_VALUE = 2;
+    /**
+     * <code>PAYLOAD_MESSAGE = 3;</code>
+     */
     public static final int PAYLOAD_MESSAGE_VALUE = 3;
-    
-    
+
+
     public final int getNumber() { return value; }
-    
+
     public static AuthMessageType valueOf(int value) {
       switch (value) {
         case 1: return SUCCESS_RESPONSE;
@@ -31,7 +52,7 @@ public final class TestDataFormats {
         default: return null;
       }
     }
-    
+
     public static com.google.protobuf.Internal.EnumLiteMap<AuthMessageType>
         internalGetValueMap() {
       return internalValueMap;
@@ -43,7 +64,7 @@ public final class TestDataFormats {
               return AuthMessageType.valueOf(number);
             }
           };
-    
+
     public final com.google.protobuf.Descriptors.EnumValueDescriptor
         getValueDescriptor() {
       return getDescriptor().getValues().get(index);
@@ -56,11 +77,9 @@ public final class TestDataFormats {
         getDescriptor() {
       return org.apache.bookkeeper.proto.TestDataFormats.getDescriptor().getEnumTypes().get(0);
     }
-    
-    private static final AuthMessageType[] VALUES = {
-      SUCCESS_RESPONSE, FAILURE_RESPONSE, PAYLOAD_MESSAGE, 
-    };
-    
+
+    private static final AuthMessageType[] VALUES = values();
+
     public static AuthMessageType valueOf(
         com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
       if (desc.getType() != getDescriptor()) {
@@ -69,19 +88,22 @@ public final class TestDataFormats {
       }
       return VALUES[desc.getIndex()];
     }
-    
+
     private final int index;
     private final int value;
-    
+
     private AuthMessageType(int index, int value) {
       this.index = index;
       this.value = value;
     }
-    
+
     // @@protoc_insertion_point(enum_scope:AuthMessageType)
   }
-  
+
   public static final int MESSAGETYPE_FIELD_NUMBER = 1000;
+  /**
+   * <code>extend .AuthMessage { ... }</code>
+   */
   public static final
     com.google.protobuf.GeneratedMessage.GeneratedExtension<
       org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage,
@@ -89,7 +111,7 @@ public final class TestDataFormats {
           .newFileScopedGeneratedExtension(
         org.apache.bookkeeper.proto.TestDataFormats.AuthMessageType.class,
         null);
-  
+
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
     return descriptor;
@@ -102,25 +124,26 @@ public final class TestDataFormats {
       "src/main/proto/BookkeeperProtocol.proto*" +
       "R\n\017AuthMessageType\022\024\n\020SUCCESS_RESPONSE\020\001" +
       "\022\024\n\020FAILURE_RESPONSE\020\002\022\023\n\017PAYLOAD_MESSAG" +
-      "E\020\003:4\n\013messageType\022\014.AuthMessage\030\350\007 \002(\0162" +
+      "E\020\003:4\n\013messageType\022\014.AuthMessage\030\350\007 \001(\0162" +
       "\020.AuthMessageTypeB\037\n\033org.apache.bookkeep" +
       "er.protoH\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
-      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
-        public com.google.protobuf.ExtensionRegistry assignDescriptors(
-            com.google.protobuf.Descriptors.FileDescriptor root) {
-          descriptor = root;
-          messageType.internalInit(descriptor.getExtensions().get(0));
-          return null;
-        }
-      };
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
     com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
           org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor(),
         }, assigner);
+    messageType.internalInit(descriptor.getExtensions().get(0));
+    org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor();
   }
-  
+
   // @@protoc_insertion_point(outer_class_scope)
 }

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/bookkeeper-server/src/test/proto/TestDataFormats.proto
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/test/proto/TestDataFormats.proto b/bookkeeper-server/src/test/proto/TestDataFormats.proto
index 0c616d7..be149ed 100644
--- a/bookkeeper-server/src/test/proto/TestDataFormats.proto
+++ b/bookkeeper-server/src/test/proto/TestDataFormats.proto
@@ -30,5 +30,5 @@ enum AuthMessageType {
  *
  */
 extend AuthMessage {
-    required AuthMessageType messageType = 1000;
+    optional AuthMessageType messageType = 1000;
 }

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/compat-deps/bookkeeper-server-compat-4.0.0/pom.xml
----------------------------------------------------------------------
diff --git a/compat-deps/bookkeeper-server-compat-4.0.0/pom.xml b/compat-deps/bookkeeper-server-compat-4.0.0/pom.xml
index d84c64e..3530174 100644
--- a/compat-deps/bookkeeper-server-compat-4.0.0/pom.xml
+++ b/compat-deps/bookkeeper-server-compat-4.0.0/pom.xml
@@ -33,6 +33,11 @@
   </properties>
   <dependencies>
     <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>2.4.1</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>4.0.0</version>
@@ -54,6 +59,7 @@
               <createDependencyReducedPom>false</createDependencyReducedPom>
               <artifactSet>
                 <includes>
+                  <include>com.google.protobuf:protobuf-java</include>
                   <include>org.apache.*:*</include>
                   <include>org.jboss.*:*</include>
                   <include>commons-*:*</include>
@@ -64,6 +70,10 @@
               </artifactSet>
               <relocations>
                 <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  <shadedPattern>bk-shade.com.google.proto_bk_v4_0_0</shadedPattern>
+                </relocation>
+                <relocation>
                   <pattern>org.apache</pattern>
                   <shadedPattern>org.apache.bk_v4_0_0</shadedPattern>
                   <excludes>

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/compat-deps/bookkeeper-server-compat-4.1.0/pom.xml
----------------------------------------------------------------------
diff --git a/compat-deps/bookkeeper-server-compat-4.1.0/pom.xml b/compat-deps/bookkeeper-server-compat-4.1.0/pom.xml
index 76b8b91..9b716e4 100644
--- a/compat-deps/bookkeeper-server-compat-4.1.0/pom.xml
+++ b/compat-deps/bookkeeper-server-compat-4.1.0/pom.xml
@@ -33,6 +33,11 @@
   </properties>
   <dependencies>
     <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>2.4.1</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>4.1.0</version>
@@ -54,6 +59,7 @@
               <createDependencyReducedPom>false</createDependencyReducedPom>
               <artifactSet>
                 <includes>
+                  <include>com.google.protobuf:protobuf-java</include>
                   <include>org.apache.*:*</include>
                   <include>org.jboss.*:*</include>
                   <include>commons-*:*</include>
@@ -64,6 +70,10 @@
               </artifactSet>
               <relocations>
                 <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  <shadedPattern>bk-shade.com.google.proto_bk_v4_1_0</shadedPattern>
+                </relocation>
+                <relocation>
                   <pattern>org.apache.commons</pattern>
                   <shadedPattern>org.apache.bk_v4_1_0.commons</shadedPattern>
                 </relocation>

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/compat-deps/bookkeeper-server-compat-4.2.0/pom.xml
----------------------------------------------------------------------
diff --git a/compat-deps/bookkeeper-server-compat-4.2.0/pom.xml b/compat-deps/bookkeeper-server-compat-4.2.0/pom.xml
index 8c3b44a..729d68b 100644
--- a/compat-deps/bookkeeper-server-compat-4.2.0/pom.xml
+++ b/compat-deps/bookkeeper-server-compat-4.2.0/pom.xml
@@ -33,6 +33,11 @@
   </properties>
   <dependencies>
     <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>2.4.1</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
       <version>4.2.0</version>
@@ -54,6 +59,7 @@
               <createDependencyReducedPom>false</createDependencyReducedPom>
               <artifactSet>
                 <includes>
+                  <include>com.google.protobuf:protobuf-java</include>
                   <include>org.apache.*:*</include>
                   <include>org.jboss.*:*</include>
                   <include>commons-*:*</include>
@@ -64,6 +70,10 @@
               </artifactSet>
               <relocations>
                 <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  <shadedPattern>bk-shade.com.google.proto_bk_v4_2_0</shadedPattern>
+                </relocation>
+                <relocation>
                   <pattern>org.apache.commons</pattern>
                   <shadedPattern>org.apache.bk_v4_2_0.commons</shadedPattern>
                 </relocation>

http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 27ffbf0..298520b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <protobuf.version>2.4.1</protobuf.version>
+    <protobuf.version>2.6.1</protobuf.version>
     <guava.version>13.0.1</guava.version>
     <netty.version>3.9.4.Final</netty.version>
     <zookeeper.version>3.4.6</zookeeper.version>


[4/4] bookkeeper git commit: BOOKKEEPER-937: Upgrade protobuf to 2.6

Posted by si...@apache.org.
BOOKKEEPER-937: Upgrade protobuf to 2.6

protobuf/protoc 2.4 cannot be installed with brew on mac and building it on mac always result is build errors hence leaves an option of switching to linux to run protoc.
I upgraded to 2.6 instead. It is compatible with 2.4 on the wire and shaded so should not create any problems. All tests passed.
Please ignore changes in java files in attached patch during review; these are auto-generated.

protobuf 2.4 in compat* dependencies is shaded now to not conflict with 2.6.

Author: Andrey Yegorov <ay...@salesforce.com>

Reviewers: eolivelli@gmail.com <eo...@gmail.com>, zhaijia03@gmail.com <zh...@gmail.com>, sijie@apache.org <si...@apache.org>

Closes #51 from dlg99/task/BOOKKEEPER-937


Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/28f23e80
Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/28f23e80
Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/28f23e80

Branch: refs/heads/master
Commit: 28f23e80bc1f64a22b45c52166cd51d526eacb5b
Parents: 64f596f
Author: Andrey Yegorov <ay...@salesforce.com>
Authored: Tue Aug 16 10:42:13 2016 -0700
Committer: Sijie Guo <si...@apache.org>
Committed: Tue Aug 16 10:42:13 2016 -0700

----------------------------------------------------------------------
 bookkeeper-server/pom.xml                       |    4 +
 .../bookkeeper/proto/BookkeeperProtocol.java    | 4257 ++++++++++++------
 .../apache/bookkeeper/proto/DataFormats.java    | 4124 +++++++++++------
 .../bookkeeper/proto/TestDataFormats.java       |   75 +-
 .../src/test/proto/TestDataFormats.proto        |    2 +-
 .../bookkeeper-server-compat-4.0.0/pom.xml      |   10 +
 .../bookkeeper-server-compat-4.1.0/pom.xml      |   10 +
 .../bookkeeper-server-compat-4.2.0/pom.xml      |   10 +
 pom.xml                                         |    2 +-
 9 files changed, 5765 insertions(+), 2729 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/bookkeeper-server/pom.xml
----------------------------------------------------------------------
diff --git a/bookkeeper-server/pom.xml b/bookkeeper-server/pom.xml
index 81e4532..e47d0d3 100644
--- a/bookkeeper-server/pom.xml
+++ b/bookkeeper-server/pom.xml
@@ -200,6 +200,10 @@
               <minimizeJar>true</minimizeJar>
               <relocations>
                 <relocation>
+                  <pattern>com.google.protobuf</pattern>
+                  <shadedPattern>bk-shade.com.google.proto_${protobuf.version}</shadedPattern>
+                </relocation>
+                <relocation>
                   <pattern>com.google</pattern>
                   <shadedPattern>bk-shade.com.google</shadedPattern>
                 </relocation>


[3/4] bookkeeper git commit: BOOKKEEPER-937: Upgrade protobuf to 2.6

Posted by si...@apache.org.
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
index 7fbb2cd..9156751 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookkeeperProtocol.java
@@ -8,20 +8,46 @@ public final class BookkeeperProtocol {
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistry registry) {
   }
+  /**
+   * Protobuf enum {@code ProtocolVersion}
+   *
+   * <pre>
+   **
+   * Protocol Versions.
+   * </pre>
+   */
   public enum ProtocolVersion
       implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>VERSION_ONE = 1;</code>
+     */
     VERSION_ONE(0, 1),
+    /**
+     * <code>VERSION_TWO = 2;</code>
+     */
     VERSION_TWO(1, 2),
+    /**
+     * <code>VERSION_THREE = 3;</code>
+     */
     VERSION_THREE(2, 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; }
-    
+
     public static ProtocolVersion valueOf(int value) {
       switch (value) {
         case 1: return VERSION_ONE;
@@ -30,7 +56,7 @@ public final class BookkeeperProtocol {
         default: return null;
       }
     }
-    
+
     public static com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>
         internalGetValueMap() {
       return internalValueMap;
@@ -42,7 +68,7 @@ public final class BookkeeperProtocol {
               return ProtocolVersion.valueOf(number);
             }
           };
-    
+
     public final com.google.protobuf.Descriptors.EnumValueDescriptor
         getValueDescriptor() {
       return getDescriptor().getValues().get(index);
@@ -55,11 +81,9 @@ public final class BookkeeperProtocol {
         getDescriptor() {
       return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(0);
     }
-    
-    private static final ProtocolVersion[] VALUES = {
-      VERSION_ONE, VERSION_TWO, VERSION_THREE, 
-    };
-    
+
+    private static final ProtocolVersion[] VALUES = values();
+
     public static ProtocolVersion valueOf(
         com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
       if (desc.getType() != getDescriptor()) {
@@ -68,44 +92,122 @@ public final class BookkeeperProtocol {
       }
       return VALUES[desc.getIndex()];
     }
-    
+
     private final int index;
     private final int value;
-    
+
     private ProtocolVersion(int index, int value) {
       this.index = index;
       this.value = value;
     }
-    
+
     // @@protoc_insertion_point(enum_scope:ProtocolVersion)
   }
-  
+
+  /**
+   * Protobuf enum {@code StatusCode}
+   *
+   * <pre>
+   **
+   * Status codes.
+   * </pre>
+   */
   public enum StatusCode
       implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>EOK = 0;</code>
+     */
     EOK(0, 0),
+    /**
+     * <code>ENOLEDGER = 402;</code>
+     *
+     * <pre>
+     * Server side Errors 4xx
+     * </pre>
+     */
     ENOLEDGER(1, 402),
+    /**
+     * <code>ENOENTRY = 403;</code>
+     */
     ENOENTRY(2, 403),
+    /**
+     * <code>EBADREQ = 404;</code>
+     */
     EBADREQ(3, 404),
+    /**
+     * <code>EIO = 501;</code>
+     *
+     * <pre>
+     * IO/access errors 5xx
+     * </pre>
+     */
     EIO(4, 501),
+    /**
+     * <code>EUA = 502;</code>
+     */
     EUA(5, 502),
+    /**
+     * <code>EBADVERSION = 503;</code>
+     */
     EBADVERSION(6, 503),
+    /**
+     * <code>EFENCED = 504;</code>
+     */
     EFENCED(7, 504),
+    /**
+     * <code>EREADONLY = 505;</code>
+     */
     EREADONLY(8, 505),
     ;
-    
+
+    /**
+     * <code>EOK = 0;</code>
+     */
     public static final int EOK_VALUE = 0;
+    /**
+     * <code>ENOLEDGER = 402;</code>
+     *
+     * <pre>
+     * Server side Errors 4xx
+     * </pre>
+     */
     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;
+    /**
+     * <code>EIO = 501;</code>
+     *
+     * <pre>
+     * IO/access errors 5xx
+     * </pre>
+     */
     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;
-    
-    
+
+
     public final int getNumber() { return value; }
-    
+
     public static StatusCode valueOf(int value) {
       switch (value) {
         case 0: return EOK;
@@ -120,7 +222,7 @@ public final class BookkeeperProtocol {
         default: return null;
       }
     }
-    
+
     public static com.google.protobuf.Internal.EnumLiteMap<StatusCode>
         internalGetValueMap() {
       return internalValueMap;
@@ -132,7 +234,7 @@ public final class BookkeeperProtocol {
               return StatusCode.valueOf(number);
             }
           };
-    
+
     public final com.google.protobuf.Descriptors.EnumValueDescriptor
         getValueDescriptor() {
       return getDescriptor().getValues().get(index);
@@ -145,11 +247,9 @@ public final class BookkeeperProtocol {
         getDescriptor() {
       return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(1);
     }
-    
-    private static final StatusCode[] VALUES = {
-      EOK, ENOLEDGER, ENOENTRY, EBADREQ, EIO, EUA, EBADVERSION, EFENCED, EREADONLY, 
-    };
-    
+
+    private static final StatusCode[] VALUES = values();
+
     public static StatusCode valueOf(
         com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
       if (desc.getType() != getDescriptor()) {
@@ -158,36 +258,82 @@ public final class BookkeeperProtocol {
       }
       return VALUES[desc.getIndex()];
     }
-    
+
     private final int index;
     private final int value;
-    
+
     private StatusCode(int index, int value) {
       this.index = index;
       this.value = value;
     }
-    
+
     // @@protoc_insertion_point(enum_scope:StatusCode)
   }
-  
+
+  /**
+   * Protobuf enum {@code OperationType}
+   *
+   * <pre>
+   **
+   * Supported operations by this protocol.
+   * </pre>
+   */
   public enum OperationType
       implements com.google.protobuf.ProtocolMessageEnum {
+    /**
+     * <code>READ_ENTRY = 1;</code>
+     */
     READ_ENTRY(0, 1),
+    /**
+     * <code>ADD_ENTRY = 2;</code>
+     */
     ADD_ENTRY(1, 2),
+    /**
+     * <code>RANGE_READ_ENTRY = 3;</code>
+     *
+     * <pre>
+     * Not supported yet.
+     * </pre>
+     */
     RANGE_READ_ENTRY(2, 3),
+    /**
+     * <code>RANGE_ADD_ENTRY = 4;</code>
+     */
     RANGE_ADD_ENTRY(3, 4),
+    /**
+     * <code>AUTH = 5;</code>
+     */
     AUTH(4, 5),
     ;
-    
+
+    /**
+     * <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;
+    /**
+     * <code>RANGE_READ_ENTRY = 3;</code>
+     *
+     * <pre>
+     * Not supported yet.
+     * </pre>
+     */
     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;
-    
-    
+
+
     public final int getNumber() { return value; }
-    
+
     public static OperationType valueOf(int value) {
       switch (value) {
         case 1: return READ_ENTRY;
@@ -198,7 +344,7 @@ public final class BookkeeperProtocol {
         default: return null;
       }
     }
-    
+
     public static com.google.protobuf.Internal.EnumLiteMap<OperationType>
         internalGetValueMap() {
       return internalValueMap;
@@ -210,7 +356,7 @@ public final class BookkeeperProtocol {
               return OperationType.valueOf(number);
             }
           };
-    
+
     public final com.google.protobuf.Descriptors.EnumValueDescriptor
         getValueDescriptor() {
       return getDescriptor().getValues().get(index);
@@ -223,11 +369,9 @@ public final class BookkeeperProtocol {
         getDescriptor() {
       return org.apache.bookkeeper.proto.BookkeeperProtocol.getDescriptor().getEnumTypes().get(2);
     }
-    
-    private static final OperationType[] VALUES = {
-      READ_ENTRY, ADD_ENTRY, RANGE_READ_ENTRY, RANGE_ADD_ENTRY, AUTH, 
-    };
-    
+
+    private static final OperationType[] VALUES = values();
+
     public static OperationType valueOf(
         com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
       if (desc.getType() != getDescriptor()) {
@@ -236,92 +380,218 @@ public final class BookkeeperProtocol {
       }
       return VALUES[desc.getIndex()];
     }
-    
+
     private final int index;
     private final int value;
-    
+
     private OperationType(int index, int value) {
       this.index = index;
       this.value = value;
     }
-    
+
     // @@protoc_insertion_point(enum_scope:OperationType)
   }
-  
-  public interface BKPacketHeaderOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-    
-    // required .ProtocolVersion version = 1;
+
+  public interface BKPacketHeaderOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:BKPacketHeader)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     */
     boolean hasVersion();
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion();
-    
-    // required .OperationType operation = 2;
+
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     */
     boolean hasOperation();
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation();
-    
-    // required uint64 txnId = 3;
+
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     */
     boolean hasTxnId();
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     */
     long getTxnId();
   }
+  /**
+   * Protobuf type {@code BKPacketHeader}
+   *
+   * <pre>
+   **
+   * Packet header for all requests.
+   * </pre>
+   */
   public static final class BKPacketHeader extends
-      com.google.protobuf.GeneratedMessage
-      implements BKPacketHeaderOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:BKPacketHeader)
+      BKPacketHeaderOrBuilder {
     // Use BKPacketHeader.newBuilder() to construct.
-    private BKPacketHeader(Builder builder) {
+    private BKPacketHeader(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private BKPacketHeader(boolean noInit) {}
-    
+    private BKPacketHeader(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final BKPacketHeader defaultInstance;
     public static BKPacketHeader getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public BKPacketHeader getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @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 {
+      initFields();
+      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;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              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_ = value;
+              }
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              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_ = value;
+              }
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              txnId_ = input.readUInt64();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).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;
     }
-    
+
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_fieldAccessorTable;
+      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);
+    }
+
+    public static com.google.protobuf.Parser<BKPacketHeader> PARSER =
+        new com.google.protobuf.AbstractParser<BKPacketHeader>() {
+      public BKPacketHeader parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new BKPacketHeader(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<BKPacketHeader> getParserForType() {
+      return PARSER;
     }
-    
+
     private int bitField0_;
-    // required .ProtocolVersion version = 1;
     public static final int VERSION_FIELD_NUMBER = 1;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion version_;
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     */
     public boolean hasVersion() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
+    /**
+     * <code>required .ProtocolVersion version = 1;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion() {
       return version_;
     }
-    
-    // required .OperationType operation = 2;
+
     public static final int OPERATION_FIELD_NUMBER = 2;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType operation_;
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     */
     public boolean hasOperation() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
+    /**
+     * <code>required .OperationType operation = 2;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation() {
       return operation_;
     }
-    
-    // required uint64 txnId = 3;
+
     public static final int TXNID_FIELD_NUMBER = 3;
     private long txnId_;
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     */
     public boolean hasTxnId() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
+    /**
+     * <code>required uint64 txnId = 3;</code>
+     */
     public long getTxnId() {
       return txnId_;
     }
-    
+
     private void initFields() {
       version_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE;
       operation_ = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.READ_ENTRY;
@@ -330,8 +600,9 @@ public final class BookkeeperProtocol {
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-      
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
       if (!hasVersion()) {
         memoizedIsInitialized = 0;
         return false;
@@ -347,7 +618,7 @@ public final class BookkeeperProtocol {
       memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -362,12 +633,12 @@ public final class BookkeeperProtocol {
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
@@ -385,113 +656,111 @@ public final class BookkeeperProtocol {
       memoizedSerializedSize = size;
       return size;
     }
-    
+
     private static final long serialVersionUID = 0L;
     @java.lang.Override
     protected java.lang.Object writeReplace()
         throws java.io.ObjectStreamException {
       return super.writeReplace();
     }
-    
+
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      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 newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      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 newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(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 newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
-    
+
     @java.lang.Override
     protected Builder newBuilderForType(
         com.google.protobuf.GeneratedMessage.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
+    /**
+     * Protobuf type {@code BKPacketHeader}
+     *
+     * <pre>
+     **
+     * Packet header for all requests.
+     * </pre>
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder {
+        com.google.protobuf.GeneratedMessage.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;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_fieldAccessorTable;
+        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(BuilderParent parent) {
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
@@ -502,7 +771,7 @@ public final class BookkeeperProtocol {
       private static Builder create() {
         return new Builder();
       }
-      
+
       public Builder clear() {
         super.clear();
         version_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE;
@@ -513,20 +782,20 @@ public final class BookkeeperProtocol {
         bitField0_ = (bitField0_ & ~0x00000004);
         return this;
       }
-      
+
       public Builder clone() {
         return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDescriptor();
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_BKPacketHeader_descriptor;
       }
-      
+
       public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getDefaultInstanceForType() {
         return org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance();
       }
-      
+
       public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader build() {
         org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader result = buildPartial();
         if (!result.isInitialized()) {
@@ -534,17 +803,7 @@ public final class BookkeeperProtocol {
         }
         return result;
       }
-      
-      private org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return result;
-      }
-      
+
       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_;
@@ -565,7 +824,7 @@ public final class BookkeeperProtocol {
         onBuilt();
         return result;
       }
-      
+
       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);
@@ -574,7 +833,7 @@ public final class BookkeeperProtocol {
           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()) {
@@ -589,7 +848,7 @@ public final class BookkeeperProtocol {
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
       public final boolean isInitialized() {
         if (!hasVersion()) {
           
@@ -605,71 +864,42 @@ public final class BookkeeperProtocol {
         }
         return true;
       }
-      
+
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              onChanged();
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                onChanged();
-                return this;
-              }
-              break;
-            }
-            case 8: {
-              int rawValue = input.readEnum();
-              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_ = value;
-              }
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-              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_ = value;
-              }
-              break;
-            }
-            case 24: {
-              bitField0_ |= 0x00000004;
-              txnId_ = input.readUInt64();
-              break;
-            }
+        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;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
       private int bitField0_;
-      
-      // required .ProtocolVersion version = 1;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion version_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE;
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       */
       public boolean hasVersion() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion getVersion() {
         return version_;
       }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       */
       public Builder setVersion(org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion value) {
         if (value == null) {
           throw new NullPointerException();
@@ -679,21 +909,32 @@ public final class BookkeeperProtocol {
         onChanged();
         return this;
       }
+      /**
+       * <code>required .ProtocolVersion version = 1;</code>
+       */
       public Builder clearVersion() {
         bitField0_ = (bitField0_ & ~0x00000001);
         version_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ProtocolVersion.VERSION_ONE;
         onChanged();
         return this;
       }
-      
-      // required .OperationType operation = 2;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType operation_ = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.READ_ENTRY;
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       */
       public boolean hasOperation() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType getOperation() {
         return operation_;
       }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       */
       public Builder setOperation(org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType value) {
         if (value == null) {
           throw new NullPointerException();
@@ -703,149 +944,367 @@ public final class BookkeeperProtocol {
         onChanged();
         return this;
       }
+      /**
+       * <code>required .OperationType operation = 2;</code>
+       */
       public Builder clearOperation() {
         bitField0_ = (bitField0_ & ~0x00000002);
         operation_ = org.apache.bookkeeper.proto.BookkeeperProtocol.OperationType.READ_ENTRY;
         onChanged();
         return this;
       }
-      
-      // required uint64 txnId = 3;
+
       private long txnId_ ;
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       */
       public boolean hasTxnId() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       */
       public long getTxnId() {
         return txnId_;
       }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       */
       public Builder setTxnId(long value) {
         bitField0_ |= 0x00000004;
         txnId_ = value;
         onChanged();
         return this;
       }
+      /**
+       * <code>required uint64 txnId = 3;</code>
+       */
       public Builder clearTxnId() {
         bitField0_ = (bitField0_ & ~0x00000004);
         txnId_ = 0L;
         onChanged();
         return this;
       }
-      
+
       // @@protoc_insertion_point(builder_scope:BKPacketHeader)
     }
-    
+
     static {
       defaultInstance = new BKPacketHeader(true);
       defaultInstance.initFields();
     }
-    
+
     // @@protoc_insertion_point(class_scope:BKPacketHeader)
   }
-  
-  public interface RequestOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-    
-    // required .BKPacketHeader header = 1;
+
+  public interface RequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:Request)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     boolean hasHeader();
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader();
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder getHeaderOrBuilder();
-    
-    // optional .ReadRequest readRequest = 100;
+
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     boolean hasReadRequest();
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest();
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder();
-    
-    // optional .AddRequest addRequest = 101;
+
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     boolean hasAddRequest();
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest();
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder getAddRequestOrBuilder();
-    
-    // optional .AuthMessage authRequest = 102;
+
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     boolean hasAuthRequest();
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest();
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder getAuthRequestOrBuilder();
   }
+  /**
+   * Protobuf type {@code Request}
+   */
   public static final class Request extends
-      com.google.protobuf.GeneratedMessage
-      implements RequestOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:Request)
+      RequestOrBuilder {
     // Use Request.newBuilder() to construct.
-    private Request(Builder builder) {
+    private Request(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private Request(boolean noInit) {}
-    
+    private Request(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final Request defaultInstance;
     public static Request getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public Request getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @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 {
+      initFields();
+      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;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000001) == 0x00000001)) {
+                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) == 0x00000002)) {
+                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) == 0x00000004)) {
+                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) == 0x00000008)) {
+                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;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).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_Request_descriptor;
     }
-    
+
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_fieldAccessorTable;
+      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);
+    }
+
+    public static com.google.protobuf.Parser<Request> PARSER =
+        new com.google.protobuf.AbstractParser<Request>() {
+      public Request parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new Request(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<Request> getParserForType() {
+      return PARSER;
     }
-    
+
     private int bitField0_;
-    // required .BKPacketHeader header = 1;
     public static final int HEADER_FIELD_NUMBER = 1;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader header_;
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     public boolean hasHeader() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader() {
       return header_;
     }
+    /**
+     * <code>required .BKPacketHeader header = 1;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder getHeaderOrBuilder() {
       return header_;
     }
-    
-    // optional .ReadRequest readRequest = 100;
+
     public static final int READREQUEST_FIELD_NUMBER = 100;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest readRequest_;
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     public boolean hasReadRequest() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest() {
       return readRequest_;
     }
+    /**
+     * <code>optional .ReadRequest readRequest = 100;</code>
+     *
+     * <pre>
+     * Requests
+     * </pre>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder() {
       return readRequest_;
     }
-    
-    // optional .AddRequest addRequest = 101;
+
     public static final int ADDREQUEST_FIELD_NUMBER = 101;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest addRequest_;
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     public boolean hasAddRequest() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest() {
       return addRequest_;
     }
+    /**
+     * <code>optional .AddRequest addRequest = 101;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder getAddRequestOrBuilder() {
       return addRequest_;
     }
-    
-    // optional .AuthMessage authRequest = 102;
+
     public static final int AUTHREQUEST_FIELD_NUMBER = 102;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage authRequest_;
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     public boolean hasAuthRequest() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest() {
       return authRequest_;
     }
+    /**
+     * <code>optional .AuthMessage authRequest = 102;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder getAuthRequestOrBuilder() {
       return authRequest_;
     }
-    
+
     private void initFields() {
       header_ = org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance();
       readRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance();
@@ -855,8 +1314,9 @@ public final class BookkeeperProtocol {
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-      
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
       if (!hasHeader()) {
         memoizedIsInitialized = 0;
         return false;
@@ -886,7 +1346,7 @@ public final class BookkeeperProtocol {
       memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -904,12 +1364,12 @@ public final class BookkeeperProtocol {
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
@@ -931,113 +1391,106 @@ public final class BookkeeperProtocol {
       memoizedSerializedSize = size;
       return size;
     }
-    
+
     private static final long serialVersionUID = 0L;
     @java.lang.Override
     protected java.lang.Object writeReplace()
         throws java.io.ObjectStreamException {
       return super.writeReplace();
     }
-    
+
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      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 newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      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 newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.BookkeeperProtocol.Request parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(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 newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder(org.apache.bookkeeper.proto.BookkeeperProtocol.Request prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
-    
+
     @java.lang.Override
     protected Builder newBuilderForType(
         com.google.protobuf.GeneratedMessage.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
+    /**
+     * Protobuf type {@code Request}
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.bookkeeper.proto.BookkeeperProtocol.RequestOrBuilder {
+        com.google.protobuf.GeneratedMessage.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;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_fieldAccessorTable;
+        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(BuilderParent parent) {
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
@@ -1052,7 +1505,7 @@ public final class BookkeeperProtocol {
       private static Builder create() {
         return new Builder();
       }
-      
+
       public Builder clear() {
         super.clear();
         if (headerBuilder_ == null) {
@@ -1081,20 +1534,20 @@ public final class BookkeeperProtocol {
         bitField0_ = (bitField0_ & ~0x00000008);
         return this;
       }
-      
+
       public Builder clone() {
         return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.bookkeeper.proto.BookkeeperProtocol.Request.getDescriptor();
+        return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_Request_descriptor;
       }
-      
+
       public org.apache.bookkeeper.proto.BookkeeperProtocol.Request getDefaultInstanceForType() {
         return org.apache.bookkeeper.proto.BookkeeperProtocol.Request.getDefaultInstance();
       }
-      
+
       public org.apache.bookkeeper.proto.BookkeeperProtocol.Request build() {
         org.apache.bookkeeper.proto.BookkeeperProtocol.Request result = buildPartial();
         if (!result.isInitialized()) {
@@ -1102,17 +1555,7 @@ public final class BookkeeperProtocol {
         }
         return result;
       }
-      
-      private org.apache.bookkeeper.proto.BookkeeperProtocol.Request buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        org.apache.bookkeeper.proto.BookkeeperProtocol.Request result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return result;
-      }
-      
+
       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_;
@@ -1153,7 +1596,7 @@ public final class BookkeeperProtocol {
         onBuilt();
         return result;
       }
-      
+
       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);
@@ -1162,7 +1605,7 @@ public final class BookkeeperProtocol {
           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()) {
@@ -1180,7 +1623,7 @@ public final class BookkeeperProtocol {
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
       public final boolean isInitialized() {
         if (!hasHeader()) {
           
@@ -1210,79 +1653,38 @@ public final class BookkeeperProtocol {
         }
         return true;
       }
-      
+
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              onChanged();
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-                this.setUnknownFields(unknownFields.build());
-                onChanged();
-                return this;
-              }
-              break;
-            }
-            case 10: {
-              org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder subBuilder = org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.newBuilder();
-              if (hasHeader()) {
-                subBuilder.mergeFrom(getHeader());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setHeader(subBuilder.buildPartial());
-              break;
-            }
-            case 802: {
-              org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder subBuilder = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.newBuilder();
-              if (hasReadRequest()) {
-                subBuilder.mergeFrom(getReadRequest());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setReadRequest(subBuilder.buildPartial());
-              break;
-            }
-            case 810: {
-              org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder subBuilder = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.newBuilder();
-              if (hasAddRequest()) {
-                subBuilder.mergeFrom(getAddRequest());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setAddRequest(subBuilder.buildPartial());
-              break;
-            }
-            case 818: {
-              org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder subBuilder = org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.newBuilder();
-              if (hasAuthRequest()) {
-                subBuilder.mergeFrom(getAuthRequest());
-              }
-              input.readMessage(subBuilder, extensionRegistry);
-              setAuthRequest(subBuilder.buildPartial());
-              break;
-            }
+        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;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
           }
         }
+        return this;
       }
-      
       private int bitField0_;
-      
-      // required .BKPacketHeader header = 1;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader header_ = org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
           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>
+       */
       public boolean hasHeader() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader getHeader() {
         if (headerBuilder_ == null) {
           return header_;
@@ -1290,6 +1692,9 @@ public final class BookkeeperProtocol {
           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) {
@@ -1303,6 +1708,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000001;
         return this;
       }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
       public Builder setHeader(
           org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder builderForValue) {
         if (headerBuilder_ == null) {
@@ -1314,6 +1722,9 @@ public final class BookkeeperProtocol {
         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) == 0x00000001) &&
@@ -1330,6 +1741,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000001;
         return this;
       }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
       public Builder clearHeader() {
         if (headerBuilder_ == null) {
           header_ = org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.getDefaultInstance();
@@ -1340,11 +1754,17 @@ public final class BookkeeperProtocol {
         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();
@@ -1352,27 +1772,43 @@ public final class BookkeeperProtocol {
           return header_;
         }
       }
+      /**
+       * <code>required .BKPacketHeader header = 1;</code>
+       */
       private com.google.protobuf.SingleFieldBuilder<
           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.SingleFieldBuilder<
               org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeader.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.BKPacketHeaderOrBuilder>(
-                  header_,
+                  getHeader(),
                   getParentForChildren(),
                   isClean());
           header_ = null;
         }
         return headerBuilder_;
       }
-      
-      // optional .ReadRequest readRequest = 100;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest readRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
           org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder> readRequestBuilder_;
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public boolean hasReadRequest() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest getReadRequest() {
         if (readRequestBuilder_ == null) {
           return readRequest_;
@@ -1380,6 +1816,13 @@ public final class BookkeeperProtocol {
           return readRequestBuilder_.getMessage();
         }
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public Builder setReadRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest value) {
         if (readRequestBuilder_ == null) {
           if (value == null) {
@@ -1393,6 +1836,13 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000002;
         return this;
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public Builder setReadRequest(
           org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder builderForValue) {
         if (readRequestBuilder_ == null) {
@@ -1404,6 +1854,13 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000002;
         return this;
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public Builder mergeReadRequest(org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest value) {
         if (readRequestBuilder_ == null) {
           if (((bitField0_ & 0x00000002) == 0x00000002) &&
@@ -1420,6 +1877,13 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000002;
         return this;
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public Builder clearReadRequest() {
         if (readRequestBuilder_ == null) {
           readRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDefaultInstance();
@@ -1430,11 +1894,25 @@ public final class BookkeeperProtocol {
         bitField0_ = (bitField0_ & ~0x00000002);
         return this;
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder getReadRequestBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
         return getReadRequestFieldBuilder().getBuilder();
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder getReadRequestOrBuilder() {
         if (readRequestBuilder_ != null) {
           return readRequestBuilder_.getMessageOrBuilder();
@@ -1442,27 +1920,39 @@ public final class BookkeeperProtocol {
           return readRequest_;
         }
       }
+      /**
+       * <code>optional .ReadRequest readRequest = 100;</code>
+       *
+       * <pre>
+       * Requests
+       * </pre>
+       */
       private com.google.protobuf.SingleFieldBuilder<
           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.SingleFieldBuilder<
               org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequestOrBuilder>(
-                  readRequest_,
+                  getReadRequest(),
                   getParentForChildren(),
                   isClean());
           readRequest_ = null;
         }
         return readRequestBuilder_;
       }
-      
-      // optional .AddRequest addRequest = 101;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest addRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
           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>
+       */
       public boolean hasAddRequest() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest getAddRequest() {
         if (addRequestBuilder_ == null) {
           return addRequest_;
@@ -1470,6 +1960,9 @@ public final class BookkeeperProtocol {
           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) {
@@ -1483,6 +1976,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000004;
         return this;
       }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
       public Builder setAddRequest(
           org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder builderForValue) {
         if (addRequestBuilder_ == null) {
@@ -1494,6 +1990,9 @@ public final class BookkeeperProtocol {
         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) == 0x00000004) &&
@@ -1510,6 +2009,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000004;
         return this;
       }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
       public Builder clearAddRequest() {
         if (addRequestBuilder_ == null) {
           addRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.getDefaultInstance();
@@ -1520,11 +2022,17 @@ public final class BookkeeperProtocol {
         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();
@@ -1532,27 +2040,35 @@ public final class BookkeeperProtocol {
           return addRequest_;
         }
       }
+      /**
+       * <code>optional .AddRequest addRequest = 101;</code>
+       */
       private com.google.protobuf.SingleFieldBuilder<
           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.SingleFieldBuilder<
               org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequest.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AddRequestOrBuilder>(
-                  addRequest_,
+                  getAddRequest(),
                   getParentForChildren(),
                   isClean());
           addRequest_ = null;
         }
         return addRequestBuilder_;
       }
-      
-      // optional .AuthMessage authRequest = 102;
+
       private org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage authRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance();
       private com.google.protobuf.SingleFieldBuilder<
           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>
+       */
       public boolean hasAuthRequest() {
         return ((bitField0_ & 0x00000008) == 0x00000008);
       }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
       public org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage getAuthRequest() {
         if (authRequestBuilder_ == null) {
           return authRequest_;
@@ -1560,6 +2076,9 @@ public final class BookkeeperProtocol {
           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) {
@@ -1573,6 +2092,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000008;
         return this;
       }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
       public Builder setAuthRequest(
           org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder builderForValue) {
         if (authRequestBuilder_ == null) {
@@ -1584,6 +2106,9 @@ public final class BookkeeperProtocol {
         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) == 0x00000008) &&
@@ -1600,6 +2125,9 @@ public final class BookkeeperProtocol {
         bitField0_ |= 0x00000008;
         return this;
       }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
       public Builder clearAuthRequest() {
         if (authRequestBuilder_ == null) {
           authRequest_ = org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.getDefaultInstance();
@@ -1610,11 +2138,17 @@ public final class BookkeeperProtocol {
         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();
@@ -1622,95 +2156,233 @@ public final class BookkeeperProtocol {
           return authRequest_;
         }
       }
+      /**
+       * <code>optional .AuthMessage authRequest = 102;</code>
+       */
       private com.google.protobuf.SingleFieldBuilder<
           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.SingleFieldBuilder<
               org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessage.Builder, org.apache.bookkeeper.proto.BookkeeperProtocol.AuthMessageOrBuilder>(
-                  authRequest_,
+                  getAuthRequest(),
                   getParentForChildren(),
                   isClean());
           authRequest_ = null;
         }
         return authRequestBuilder_;
       }
-      
+
       // @@protoc_insertion_point(builder_scope:Request)
     }
-    
+
     static {
       defaultInstance = new Request(true);
       defaultInstance.initFields();
     }
-    
+
     // @@protoc_insertion_point(class_scope:Request)
   }
-  
-  public interface ReadRequestOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-    
-    // optional .ReadRequest.Flag flag = 100;
+
+  public interface ReadRequestOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:ReadRequest)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     */
     boolean hasFlag();
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     */
     org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag getFlag();
-    
-    // required int64 ledgerId = 1;
+
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     */
     boolean hasLedgerId();
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     */
     long getLedgerId();
-    
-    // required int64 entryId = 2;
+
+    /**
+     * <code>required int64 entryId = 2;</code>
+     *
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     */
     boolean hasEntryId();
+    /**
+     * <code>required int64 entryId = 2;</code>
+     *
+     * <pre>
+     * entryId will be -1 for reading the LAST_ADD_CONFIRMED entry.
+     * </pre>
+     */
     long getEntryId();
-    
-    // optional bytes masterKey = 3;
+
+    /**
+     * <code>optional bytes masterKey = 3;</code>
+     *
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     */
     boolean hasMasterKey();
+    /**
+     * <code>optional bytes masterKey = 3;</code>
+     *
+     * <pre>
+     * Used while fencing a ledger.
+     * </pre>
+     */
     com.google.protobuf.ByteString getMasterKey();
   }
+  /**
+   * Protobuf type {@code ReadRequest}
+   */
   public static final class ReadRequest extends
-      com.google.protobuf.GeneratedMessage
-      implements ReadRequestOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:ReadRequest)
+      ReadRequestOrBuilder {
     // Use ReadRequest.newBuilder() to construct.
-    private ReadRequest(Builder builder) {
+    private ReadRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private ReadRequest(boolean noInit) {}
-    
+    private ReadRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final ReadRequest defaultInstance;
     public static ReadRequest getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public ReadRequest getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @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 {
+      initFields();
+      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;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                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 800: {
+              int rawValue = input.readEnum();
+              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_ = value;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).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;
     }
-    
+
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.bookkeeper.proto.BookkeeperProtocol.internal_static_ReadRequest_fieldAccessorTable;
+      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);
+    }
+
+    public static com.google.protobuf.Parser<ReadRequest> PARSER =
+        new com.google.protobuf.AbstractParser<ReadRequest>() {
+      public ReadRequest parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ReadRequest(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<ReadRequest> getParserForType() {
+      return PARSER;
     }
-    
+
+    /**
+     * Protobuf enum {@code ReadRequest.Flag}
+     */
     public enum Flag
         implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>FENCE_LEDGER = 1;</code>
+       */
       FENCE_LEDGER(0, 1),
       ;
-      
+
+      /**
+       * <code>FENCE_LEDGER = 1;</code>
+       */
       public static final int FENCE_LEDGER_VALUE = 1;
-      
-      
+
+
       public final int getNumber() { return value; }
-      
+
       public static Flag valueOf(int value) {
         switch (value) {
           case 1: return FENCE_LEDGER;
           default: return null;
         }
       }
-      
+
       public static com.google.protobuf.Internal.EnumLiteMap<Flag>
           internalGetValueMap() {
         return internalValueMap;
@@ -1722,7 +2394,7 @@ public final class BookkeeperProtocol {
                 return Flag.valueOf(number);
               }
             };
-      
+
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(index);
@@ -1735,11 +2407,9 @@ public final class BookkeeperProtocol {
           getDescriptor() {
         return org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.getDescriptor().getEnumTypes().get(0);
       }
-      
-      private static final Flag[] VALUES = {
-        FENCE_LEDGER, 
-      };
-      
+
+      private static final Flag[] VALUES = values();
+
       public static Flag valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -1748,59 +2418,95 @@ public final class BookkeeperProtocol {
         }
         return VALUES[desc.getIndex()];
       }
-      
+
       private final int index;
       private final int value;
-      
+
       private Flag(int index, int value) {
         this.index = index;
         this.value = value;
       }
-      
+
       // @@protoc_insertion_point(enum_scope:ReadRequest.Flag)
     }
-    
+
     private int bitField0_;
-    // optional .ReadRequest.Flag flag = 100;
     public static final int FLAG_FIELD_NUMBER = 100;
     private org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag flag_;
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     */
     public boolean hasFlag() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
+    /**
+     * <code>optional .ReadRequest.Flag flag = 100;</code>
+     */
     public org.apache.bookkeeper.proto.BookkeeperProtocol.ReadRequest.Flag getFlag() {
       return flag_;
     }
-    
-    // required int64 ledgerId = 1;
+
     public static final int LEDGERID_FIELD_NUMBER = 1;
     private long ledgerId_;
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     */
     public boolean hasLedgerId() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
+    /**
+     * <code>required int64 ledgerId = 1;</code>
+     */
     public long getLedgerId() {

<TRUNCATED>

[2/4] bookkeeper git commit: BOOKKEEPER-937: Upgrade protobuf to 2.6

Posted by si...@apache.org.
http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/28f23e80/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
index 98f4764..47c7671 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
@@ -8,107 +8,349 @@ public final class DataFormats {
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistry registry) {
   }
-  public interface LedgerMetadataFormatOrBuilder
-      extends com.google.protobuf.MessageOrBuilder {
-    
-    // required int32 quorumSize = 1;
+  public interface LedgerMetadataFormatOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:LedgerMetadataFormat)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>required int32 quorumSize = 1;</code>
+     */
     boolean hasQuorumSize();
+    /**
+     * <code>required int32 quorumSize = 1;</code>
+     */
     int getQuorumSize();
-    
-    // required int32 ensembleSize = 2;
+
+    /**
+     * <code>required int32 ensembleSize = 2;</code>
+     */
     boolean hasEnsembleSize();
+    /**
+     * <code>required int32 ensembleSize = 2;</code>
+     */
     int getEnsembleSize();
-    
-    // required int64 length = 3;
+
+    /**
+     * <code>required int64 length = 3;</code>
+     */
     boolean hasLength();
+    /**
+     * <code>required int64 length = 3;</code>
+     */
     long getLength();
-    
-    // optional int64 lastEntryId = 4;
+
+    /**
+     * <code>optional int64 lastEntryId = 4;</code>
+     */
     boolean hasLastEntryId();
+    /**
+     * <code>optional int64 lastEntryId = 4;</code>
+     */
     long getLastEntryId();
-    
-    // required .LedgerMetadataFormat.State state = 5 [default = OPEN];
+
+    /**
+     * <code>required .LedgerMetadataFormat.State state = 5 [default = OPEN];</code>
+     */
     boolean hasState();
+    /**
+     * <code>required .LedgerMetadataFormat.State state = 5 [default = OPEN];</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State getState();
-    
-    // repeated .LedgerMetadataFormat.Segment segment = 6;
+
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> 
         getSegmentList();
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getSegment(int index);
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     int getSegmentCount();
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder> 
         getSegmentOrBuilderList();
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder getSegmentOrBuilder(
         int index);
-    
-    // optional .LedgerMetadataFormat.DigestType digestType = 7;
+
+    /**
+     * <code>optional .LedgerMetadataFormat.DigestType digestType = 7;</code>
+     */
     boolean hasDigestType();
+    /**
+     * <code>optional .LedgerMetadataFormat.DigestType digestType = 7;</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.DigestType getDigestType();
-    
-    // optional bytes password = 8;
+
+    /**
+     * <code>optional bytes password = 8;</code>
+     */
     boolean hasPassword();
+    /**
+     * <code>optional bytes password = 8;</code>
+     */
     com.google.protobuf.ByteString getPassword();
-    
-    // optional int32 ackQuorumSize = 9;
+
+    /**
+     * <code>optional int32 ackQuorumSize = 9;</code>
+     */
     boolean hasAckQuorumSize();
+    /**
+     * <code>optional int32 ackQuorumSize = 9;</code>
+     */
     int getAckQuorumSize();
-    
-    // optional int64 ctime = 10;
+
+    /**
+     * <code>optional int64 ctime = 10;</code>
+     */
     boolean hasCtime();
+    /**
+     * <code>optional int64 ctime = 10;</code>
+     */
     long getCtime();
-    
-    // repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;
+
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry> 
         getCustomMetadataList();
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry getCustomMetadata(int index);
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     int getCustomMetadataCount();
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder> 
         getCustomMetadataOrBuilderList();
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder getCustomMetadataOrBuilder(
         int index);
   }
+  /**
+   * Protobuf type {@code LedgerMetadataFormat}
+   *
+   * <pre>
+   **
+   * Metadata format for storing ledger information
+   * </pre>
+   */
   public static final class LedgerMetadataFormat extends
-      com.google.protobuf.GeneratedMessage
-      implements LedgerMetadataFormatOrBuilder {
+      com.google.protobuf.GeneratedMessage implements
+      // @@protoc_insertion_point(message_implements:LedgerMetadataFormat)
+      LedgerMetadataFormatOrBuilder {
     // Use LedgerMetadataFormat.newBuilder() to construct.
-    private LedgerMetadataFormat(Builder builder) {
+    private LedgerMetadataFormat(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
+      this.unknownFields = builder.getUnknownFields();
     }
-    private LedgerMetadataFormat(boolean noInit) {}
-    
+    private LedgerMetadataFormat(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
     private static final LedgerMetadataFormat defaultInstance;
     public static LedgerMetadataFormat getDefaultInstance() {
       return defaultInstance;
     }
-    
+
     public LedgerMetadataFormat getDefaultInstanceForType() {
       return defaultInstance;
     }
-    
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LedgerMetadataFormat(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      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;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 8: {
+              bitField0_ |= 0x00000001;
+              quorumSize_ = input.readInt32();
+              break;
+            }
+            case 16: {
+              bitField0_ |= 0x00000002;
+              ensembleSize_ = input.readInt32();
+              break;
+            }
+            case 24: {
+              bitField0_ |= 0x00000004;
+              length_ = input.readInt64();
+              break;
+            }
+            case 32: {
+              bitField0_ |= 0x00000008;
+              lastEntryId_ = input.readInt64();
+              break;
+            }
+            case 40: {
+              int rawValue = input.readEnum();
+              org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State value = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(5, rawValue);
+              } else {
+                bitField0_ |= 0x00000010;
+                state_ = value;
+              }
+              break;
+            }
+            case 50: {
+              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+                segment_ = new java.util.ArrayList<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment>();
+                mutable_bitField0_ |= 0x00000020;
+              }
+              segment_.add(input.readMessage(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.PARSER, extensionRegistry));
+              break;
+            }
+            case 56: {
+              int rawValue = input.readEnum();
+              org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.DigestType value = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.DigestType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(7, rawValue);
+              } else {
+                bitField0_ |= 0x00000020;
+                digestType_ = value;
+              }
+              break;
+            }
+            case 66: {
+              bitField0_ |= 0x00000040;
+              password_ = input.readBytes();
+              break;
+            }
+            case 72: {
+              bitField0_ |= 0x00000080;
+              ackQuorumSize_ = input.readInt32();
+              break;
+            }
+            case 80: {
+              bitField0_ |= 0x00000100;
+              ctime_ = input.readInt64();
+              break;
+            }
+            case 90: {
+              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+                customMetadata_ = new java.util.ArrayList<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry>();
+                mutable_bitField0_ |= 0x00000400;
+              }
+              customMetadata_.add(input.readMessage(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.PARSER, extensionRegistry));
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
+          segment_ = java.util.Collections.unmodifiableList(segment_);
+        }
+        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
+          customMetadata_ = java.util.Collections.unmodifiableList(customMetadata_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_descriptor;
     }
-    
+
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_fieldAccessorTable;
+      return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<LedgerMetadataFormat> PARSER =
+        new com.google.protobuf.AbstractParser<LedgerMetadataFormat>() {
+      public LedgerMetadataFormat parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LedgerMetadataFormat(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LedgerMetadataFormat> getParserForType() {
+      return PARSER;
     }
-    
+
+    /**
+     * Protobuf enum {@code LedgerMetadataFormat.State}
+     */
     public enum State
         implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>OPEN = 1;</code>
+       */
       OPEN(0, 1),
+      /**
+       * <code>IN_RECOVERY = 2;</code>
+       */
       IN_RECOVERY(1, 2),
+      /**
+       * <code>CLOSED = 3;</code>
+       */
       CLOSED(2, 3),
       ;
-      
+
+      /**
+       * <code>OPEN = 1;</code>
+       */
       public static final int OPEN_VALUE = 1;
+      /**
+       * <code>IN_RECOVERY = 2;</code>
+       */
       public static final int IN_RECOVERY_VALUE = 2;
+      /**
+       * <code>CLOSED = 3;</code>
+       */
       public static final int CLOSED_VALUE = 3;
-      
-      
+
+
       public final int getNumber() { return value; }
-      
+
       public static State valueOf(int value) {
         switch (value) {
           case 1: return OPEN;
@@ -117,7 +359,7 @@ public final class DataFormats {
           default: return null;
         }
       }
-      
+
       public static com.google.protobuf.Internal.EnumLiteMap<State>
           internalGetValueMap() {
         return internalValueMap;
@@ -129,7 +371,7 @@ public final class DataFormats {
                 return State.valueOf(number);
               }
             };
-      
+
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(index);
@@ -142,11 +384,9 @@ public final class DataFormats {
           getDescriptor() {
         return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDescriptor().getEnumTypes().get(0);
       }
-      
-      private static final State[] VALUES = {
-        OPEN, IN_RECOVERY, CLOSED, 
-      };
-      
+
+      private static final State[] VALUES = values();
+
       public static State valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -155,30 +395,45 @@ public final class DataFormats {
         }
         return VALUES[desc.getIndex()];
       }
-      
+
       private final int index;
       private final int value;
-      
+
       private State(int index, int value) {
         this.index = index;
         this.value = value;
       }
-      
+
       // @@protoc_insertion_point(enum_scope:LedgerMetadataFormat.State)
     }
-    
+
+    /**
+     * Protobuf enum {@code LedgerMetadataFormat.DigestType}
+     */
     public enum DigestType
         implements com.google.protobuf.ProtocolMessageEnum {
+      /**
+       * <code>CRC32 = 1;</code>
+       */
       CRC32(0, 1),
+      /**
+       * <code>HMAC = 2;</code>
+       */
       HMAC(1, 2),
       ;
-      
+
+      /**
+       * <code>CRC32 = 1;</code>
+       */
       public static final int CRC32_VALUE = 1;
+      /**
+       * <code>HMAC = 2;</code>
+       */
       public static final int HMAC_VALUE = 2;
-      
-      
+
+
       public final int getNumber() { return value; }
-      
+
       public static DigestType valueOf(int value) {
         switch (value) {
           case 1: return CRC32;
@@ -186,7 +441,7 @@ public final class DataFormats {
           default: return null;
         }
       }
-      
+
       public static com.google.protobuf.Internal.EnumLiteMap<DigestType>
           internalGetValueMap() {
         return internalValueMap;
@@ -198,7 +453,7 @@ public final class DataFormats {
                 return DigestType.valueOf(number);
               }
             };
-      
+
       public final com.google.protobuf.Descriptors.EnumValueDescriptor
           getValueDescriptor() {
         return getDescriptor().getValues().get(index);
@@ -211,11 +466,9 @@ public final class DataFormats {
           getDescriptor() {
         return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDescriptor().getEnumTypes().get(1);
       }
-      
-      private static final DigestType[] VALUES = {
-        CRC32, HMAC, 
-      };
-      
+
+      private static final DigestType[] VALUES = values();
+
       public static DigestType valueOf(
           com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
         if (desc.getType() != getDescriptor()) {
@@ -224,83 +477,203 @@ public final class DataFormats {
         }
         return VALUES[desc.getIndex()];
       }
-      
+
       private final int index;
       private final int value;
-      
+
       private DigestType(int index, int value) {
         this.index = index;
         this.value = value;
       }
-      
+
       // @@protoc_insertion_point(enum_scope:LedgerMetadataFormat.DigestType)
     }
-    
-    public interface SegmentOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-      
-      // repeated string ensembleMember = 1;
-      java.util.List<String> getEnsembleMemberList();
+
+    public interface SegmentOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:LedgerMetadataFormat.Segment)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      com.google.protobuf.ProtocolStringList
+          getEnsembleMemberList();
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
       int getEnsembleMemberCount();
-      String getEnsembleMember(int index);
-      
-      // required int64 firstEntryId = 2;
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      java.lang.String getEnsembleMember(int index);
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getEnsembleMemberBytes(int index);
+
+      /**
+       * <code>required int64 firstEntryId = 2;</code>
+       */
       boolean hasFirstEntryId();
+      /**
+       * <code>required int64 firstEntryId = 2;</code>
+       */
       long getFirstEntryId();
     }
+    /**
+     * Protobuf type {@code LedgerMetadataFormat.Segment}
+     */
     public static final class Segment extends
-        com.google.protobuf.GeneratedMessage
-        implements SegmentOrBuilder {
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:LedgerMetadataFormat.Segment)
+        SegmentOrBuilder {
       // Use Segment.newBuilder() to construct.
-      private Segment(Builder builder) {
+      private Segment(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
         super(builder);
+        this.unknownFields = builder.getUnknownFields();
       }
-      private Segment(boolean noInit) {}
-      
+      private Segment(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
       private static final Segment defaultInstance;
       public static Segment getDefaultInstance() {
         return defaultInstance;
       }
-      
+
       public Segment getDefaultInstanceForType() {
         return defaultInstance;
       }
-      
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private Segment(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        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;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+                  ensembleMember_ = new com.google.protobuf.LazyStringArrayList();
+                  mutable_bitField0_ |= 0x00000001;
+                }
+                ensembleMember_.add(bs);
+                break;
+              }
+              case 16: {
+                bitField0_ |= 0x00000001;
+                firstEntryId_ = input.readInt64();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+            ensembleMember_ = ensembleMember_.getUnmodifiableView();
+          }
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_descriptor;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable;
+        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<Segment> PARSER =
+          new com.google.protobuf.AbstractParser<Segment>() {
+        public Segment parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new Segment(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<Segment> getParserForType() {
+        return PARSER;
       }
-      
+
       private int bitField0_;
-      // repeated string ensembleMember = 1;
       public static final int ENSEMBLEMEMBER_FIELD_NUMBER = 1;
       private com.google.protobuf.LazyStringList ensembleMember_;
-      public java.util.List<String>
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      public com.google.protobuf.ProtocolStringList
           getEnsembleMemberList() {
         return ensembleMember_;
       }
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
       public int getEnsembleMemberCount() {
         return ensembleMember_.size();
       }
-      public String getEnsembleMember(int index) {
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      public java.lang.String getEnsembleMember(int index) {
         return ensembleMember_.get(index);
       }
-      
-      // required int64 firstEntryId = 2;
+      /**
+       * <code>repeated string ensembleMember = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getEnsembleMemberBytes(int index) {
+        return ensembleMember_.getByteString(index);
+      }
+
       public static final int FIRSTENTRYID_FIELD_NUMBER = 2;
       private long firstEntryId_;
+      /**
+       * <code>required int64 firstEntryId = 2;</code>
+       */
       public boolean hasFirstEntryId() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
+      /**
+       * <code>required int64 firstEntryId = 2;</code>
+       */
       public long getFirstEntryId() {
         return firstEntryId_;
       }
-      
+
       private void initFields() {
         ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
         firstEntryId_ = 0L;
@@ -308,8 +681,9 @@ public final class DataFormats {
       private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
-        
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
+
         if (!hasFirstEntryId()) {
           memoizedIsInitialized = 0;
           return false;
@@ -317,7 +691,7 @@ public final class DataFormats {
         memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         getSerializedSize();
@@ -329,12 +703,12 @@ public final class DataFormats {
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
         {
           int dataSize = 0;
@@ -353,113 +727,106 @@ public final class DataFormats {
         memoizedSerializedSize = size;
         return size;
       }
-      
+
       private static final long serialVersionUID = 0L;
       @java.lang.Override
       protected java.lang.Object writeReplace()
           throws java.io.ObjectStreamException {
         return super.writeReplace();
       }
-      
+
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           com.google.protobuf.ByteString data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           com.google.protobuf.ByteString data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(byte[] data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           byte[] data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseDelimitedFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
       @java.lang.Override
       protected Builder newBuilderForType(
           com.google.protobuf.GeneratedMessage.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
       }
+      /**
+       * Protobuf type {@code LedgerMetadataFormat.Segment}
+       */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder {
+          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:LedgerMetadataFormat.Segment)
+          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_descriptor;
         }
-        
+
         protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable;
+          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder.class);
         }
-        
+
         // Construct using org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.newBuilder()
         private Builder() {
           maybeForceBuilderInitialization();
         }
-        
-        private Builder(BuilderParent parent) {
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
           super(parent);
           maybeForceBuilderInitialization();
         }
@@ -470,7 +837,7 @@ public final class DataFormats {
         private static Builder create() {
           return new Builder();
         }
-        
+
         public Builder clear() {
           super.clear();
           ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
@@ -479,20 +846,20 @@ public final class DataFormats {
           bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
-        
+
         public Builder clone() {
           return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.getDescriptor();
+          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_Segment_descriptor;
         }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getDefaultInstanceForType() {
           return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.getDefaultInstance();
         }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment build() {
           org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment result = buildPartial();
           if (!result.isInitialized()) {
@@ -500,24 +867,13 @@ public final class DataFormats {
           }
           return result;
         }
-        
-        private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment buildParsed()
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment result = buildPartial();
-          if (!result.isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return result;
-        }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment buildPartial() {
           org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment result = new org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment(this);
           int from_bitField0_ = bitField0_;
           int to_bitField0_ = 0;
           if (((bitField0_ & 0x00000001) == 0x00000001)) {
-            ensembleMember_ = new com.google.protobuf.UnmodifiableLazyStringList(
-                ensembleMember_);
+            ensembleMember_ = ensembleMember_.getUnmodifiableView();
             bitField0_ = (bitField0_ & ~0x00000001);
           }
           result.ensembleMember_ = ensembleMember_;
@@ -529,7 +885,7 @@ public final class DataFormats {
           onBuilt();
           return result;
         }
-        
+
         public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment) {
             return mergeFrom((org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment)other);
@@ -538,7 +894,7 @@ public final class DataFormats {
             return this;
           }
         }
-        
+
         public Builder mergeFrom(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment other) {
           if (other == org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.getDefaultInstance()) return this;
           if (!other.ensembleMember_.isEmpty()) {
@@ -557,7 +913,7 @@ public final class DataFormats {
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
         public final boolean isInitialized() {
           if (!hasFirstEntryId()) {
             
@@ -565,47 +921,26 @@ public final class DataFormats {
           }
           return true;
         }
-        
+
         public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                onChanged();
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  onChanged();
-                  return this;
-                }
-                break;
-              }
-              case 10: {
-                ensureEnsembleMemberIsMutable();
-                ensembleMember_.add(input.readBytes());
-                break;
-              }
-              case 16: {
-                bitField0_ |= 0x00000002;
-                firstEntryId_ = input.readInt64();
-                break;
-              }
+          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-        
         private int bitField0_;
-        
-        // repeated string ensembleMember = 1;
+
         private com.google.protobuf.LazyStringList ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
         private void ensureEnsembleMemberIsMutable() {
           if (!((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -613,18 +948,37 @@ public final class DataFormats {
             bitField0_ |= 0x00000001;
            }
         }
-        public java.util.List<String>
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
+        public com.google.protobuf.ProtocolStringList
             getEnsembleMemberList() {
-          return java.util.Collections.unmodifiableList(ensembleMember_);
+          return ensembleMember_.getUnmodifiableView();
         }
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
         public int getEnsembleMemberCount() {
           return ensembleMember_.size();
         }
-        public String getEnsembleMember(int index) {
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
+        public java.lang.String getEnsembleMember(int index) {
           return ensembleMember_.get(index);
         }
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
+        public com.google.protobuf.ByteString
+            getEnsembleMemberBytes(int index) {
+          return ensembleMember_.getByteString(index);
+        }
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
         public Builder setEnsembleMember(
-            int index, String value) {
+            int index, java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
@@ -633,7 +987,11 @@ public final class DataFormats {
           onChanged();
           return this;
         }
-        public Builder addEnsembleMember(String value) {
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
+        public Builder addEnsembleMember(
+            java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
@@ -642,139 +1000,270 @@ public final class DataFormats {
           onChanged();
           return this;
         }
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
         public Builder addAllEnsembleMember(
-            java.lang.Iterable<String> values) {
+            java.lang.Iterable<java.lang.String> values) {
           ensureEnsembleMemberIsMutable();
-          super.addAll(values, ensembleMember_);
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, ensembleMember_);
           onChanged();
           return this;
         }
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
         public Builder clearEnsembleMember() {
           ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
           bitField0_ = (bitField0_ & ~0x00000001);
           onChanged();
           return this;
         }
-        void addEnsembleMember(com.google.protobuf.ByteString value) {
-          ensureEnsembleMemberIsMutable();
+        /**
+         * <code>repeated string ensembleMember = 1;</code>
+         */
+        public Builder addEnsembleMemberBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureEnsembleMemberIsMutable();
           ensembleMember_.add(value);
           onChanged();
+          return this;
         }
-        
-        // required int64 firstEntryId = 2;
+
         private long firstEntryId_ ;
+        /**
+         * <code>required int64 firstEntryId = 2;</code>
+         */
         public boolean hasFirstEntryId() {
           return ((bitField0_ & 0x00000002) == 0x00000002);
         }
+        /**
+         * <code>required int64 firstEntryId = 2;</code>
+         */
         public long getFirstEntryId() {
           return firstEntryId_;
         }
+        /**
+         * <code>required int64 firstEntryId = 2;</code>
+         */
         public Builder setFirstEntryId(long value) {
           bitField0_ |= 0x00000002;
           firstEntryId_ = value;
           onChanged();
           return this;
         }
+        /**
+         * <code>required int64 firstEntryId = 2;</code>
+         */
         public Builder clearFirstEntryId() {
           bitField0_ = (bitField0_ & ~0x00000002);
           firstEntryId_ = 0L;
           onChanged();
           return this;
         }
-        
+
         // @@protoc_insertion_point(builder_scope:LedgerMetadataFormat.Segment)
       }
-      
+
       static {
         defaultInstance = new Segment(true);
         defaultInstance.initFields();
       }
-      
+
       // @@protoc_insertion_point(class_scope:LedgerMetadataFormat.Segment)
     }
-    
-    public interface cMetadataMapEntryOrBuilder
-        extends com.google.protobuf.MessageOrBuilder {
-      
-      // optional string key = 1;
+
+    public interface cMetadataMapEntryOrBuilder extends
+        // @@protoc_insertion_point(interface_extends:LedgerMetadataFormat.cMetadataMapEntry)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       * <code>optional string key = 1;</code>
+       */
       boolean hasKey();
-      String getKey();
-      
-      // optional bytes value = 2;
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      java.lang.String getKey();
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      com.google.protobuf.ByteString
+          getKeyBytes();
+
+      /**
+       * <code>optional bytes value = 2;</code>
+       */
       boolean hasValue();
+      /**
+       * <code>optional bytes value = 2;</code>
+       */
       com.google.protobuf.ByteString getValue();
     }
+    /**
+     * Protobuf type {@code LedgerMetadataFormat.cMetadataMapEntry}
+     */
     public static final class cMetadataMapEntry extends
-        com.google.protobuf.GeneratedMessage
-        implements cMetadataMapEntryOrBuilder {
+        com.google.protobuf.GeneratedMessage implements
+        // @@protoc_insertion_point(message_implements:LedgerMetadataFormat.cMetadataMapEntry)
+        cMetadataMapEntryOrBuilder {
       // Use cMetadataMapEntry.newBuilder() to construct.
-      private cMetadataMapEntry(Builder builder) {
+      private cMetadataMapEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
         super(builder);
+        this.unknownFields = builder.getUnknownFields();
       }
-      private cMetadataMapEntry(boolean noInit) {}
-      
+      private cMetadataMapEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
       private static final cMetadataMapEntry defaultInstance;
       public static cMetadataMapEntry getDefaultInstance() {
         return defaultInstance;
       }
-      
+
       public cMetadataMapEntry getDefaultInstanceForType() {
         return defaultInstance;
       }
-      
+
+      private final com.google.protobuf.UnknownFieldSet unknownFields;
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+          getUnknownFields() {
+        return this.unknownFields;
+      }
+      private cMetadataMapEntry(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        initFields();
+        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;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+              case 10: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000001;
+                key_ = bs;
+                break;
+              }
+              case 18: {
+                bitField0_ |= 0x00000002;
+                value_ = input.readBytes();
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e.getMessage()).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_descriptor;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_fieldAccessorTable;
+        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.Builder.class);
+      }
+
+      public static com.google.protobuf.Parser<cMetadataMapEntry> PARSER =
+          new com.google.protobuf.AbstractParser<cMetadataMapEntry>() {
+        public cMetadataMapEntry parsePartialFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          return new cMetadataMapEntry(input, extensionRegistry);
+        }
+      };
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<cMetadataMapEntry> getParserForType() {
+        return PARSER;
       }
-      
+
       private int bitField0_;
-      // optional string key = 1;
       public static final int KEY_FIELD_NUMBER = 1;
       private java.lang.Object key_;
+      /**
+       * <code>optional string key = 1;</code>
+       */
       public boolean hasKey() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
-      public String getKey() {
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public java.lang.String getKey() {
         java.lang.Object ref = key_;
-        if (ref instanceof String) {
-          return (String) ref;
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
         } else {
           com.google.protobuf.ByteString bs = 
               (com.google.protobuf.ByteString) ref;
-          String s = bs.toStringUtf8();
-          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
+          java.lang.String s = bs.toStringUtf8();
+          if (bs.isValidUtf8()) {
             key_ = s;
           }
           return s;
         }
       }
-      private com.google.protobuf.ByteString getKeyBytes() {
+      /**
+       * <code>optional string key = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getKeyBytes() {
         java.lang.Object ref = key_;
-        if (ref instanceof String) {
+        if (ref instanceof java.lang.String) {
           com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
           key_ = b;
           return b;
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
       }
-      
-      // optional bytes value = 2;
+
       public static final int VALUE_FIELD_NUMBER = 2;
       private com.google.protobuf.ByteString value_;
+      /**
+       * <code>optional bytes value = 2;</code>
+       */
       public boolean hasValue() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
+      /**
+       * <code>optional bytes value = 2;</code>
+       */
       public com.google.protobuf.ByteString getValue() {
         return value_;
       }
-      
+
       private void initFields() {
         key_ = "";
         value_ = com.google.protobuf.ByteString.EMPTY;
@@ -782,12 +1271,13 @@ public final class DataFormats {
       private byte memoizedIsInitialized = -1;
       public final boolean isInitialized() {
         byte isInitialized = memoizedIsInitialized;
-        if (isInitialized != -1) return isInitialized == 1;
-        
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
+
         memoizedIsInitialized = 1;
         return true;
       }
-      
+
       public void writeTo(com.google.protobuf.CodedOutputStream output)
                           throws java.io.IOException {
         getSerializedSize();
@@ -799,12 +1289,12 @@ public final class DataFormats {
         }
         getUnknownFields().writeTo(output);
       }
-      
+
       private int memoizedSerializedSize = -1;
       public int getSerializedSize() {
         int size = memoizedSerializedSize;
         if (size != -1) return size;
-      
+
         size = 0;
         if (((bitField0_ & 0x00000001) == 0x00000001)) {
           size += com.google.protobuf.CodedOutputStream
@@ -818,113 +1308,106 @@ public final class DataFormats {
         memoizedSerializedSize = size;
         return size;
       }
-      
+
       private static final long serialVersionUID = 0L;
       @java.lang.Override
       protected java.lang.Object writeReplace()
           throws java.io.ObjectStreamException {
         return super.writeReplace();
       }
-      
+
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           com.google.protobuf.ByteString data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           com.google.protobuf.ByteString data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(byte[] data)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data).buildParsed();
+        return PARSER.parseFrom(data);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           byte[] data,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return newBuilder().mergeFrom(data, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(data, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(java.io.InputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseDelimitedFrom(java.io.InputStream input)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseDelimitedFrom(
           java.io.InputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        Builder builder = newBuilder();
-        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-          return builder.buildParsed();
-        } else {
-          return null;
-        }
+        return PARSER.parseDelimitedFrom(input, extensionRegistry);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           com.google.protobuf.CodedInputStream input)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input).buildParsed();
+        return PARSER.parseFrom(input);
       }
       public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parseFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        return newBuilder().mergeFrom(input, extensionRegistry)
-                 .buildParsed();
+        return PARSER.parseFrom(input, extensionRegistry);
       }
-      
+
       public static Builder newBuilder() { return Builder.create(); }
       public Builder newBuilderForType() { return newBuilder(); }
       public static Builder newBuilder(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry prototype) {
         return newBuilder().mergeFrom(prototype);
       }
       public Builder toBuilder() { return newBuilder(this); }
-      
+
       @java.lang.Override
       protected Builder newBuilderForType(
           com.google.protobuf.GeneratedMessage.BuilderParent parent) {
         Builder builder = new Builder(parent);
         return builder;
       }
+      /**
+       * Protobuf type {@code LedgerMetadataFormat.cMetadataMapEntry}
+       */
       public static final class Builder extends
-          com.google.protobuf.GeneratedMessage.Builder<Builder>
-         implements org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder {
+          com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+          // @@protoc_insertion_point(builder_implements:LedgerMetadataFormat.cMetadataMapEntry)
+          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder {
         public static final com.google.protobuf.Descriptors.Descriptor
             getDescriptor() {
           return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_descriptor;
         }
-        
+
         protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
             internalGetFieldAccessorTable() {
-          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_fieldAccessorTable;
+          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.Builder.class);
         }
-        
+
         // Construct using org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.newBuilder()
         private Builder() {
           maybeForceBuilderInitialization();
         }
-        
-        private Builder(BuilderParent parent) {
+
+        private Builder(
+            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
           super(parent);
           maybeForceBuilderInitialization();
         }
@@ -935,7 +1418,7 @@ public final class DataFormats {
         private static Builder create() {
           return new Builder();
         }
-        
+
         public Builder clear() {
           super.clear();
           key_ = "";
@@ -944,20 +1427,20 @@ public final class DataFormats {
           bitField0_ = (bitField0_ & ~0x00000002);
           return this;
         }
-        
+
         public Builder clone() {
           return create().mergeFrom(buildPartial());
         }
-        
+
         public com.google.protobuf.Descriptors.Descriptor
             getDescriptorForType() {
-          return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.getDescriptor();
+          return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_cMetadataMapEntry_descriptor;
         }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry getDefaultInstanceForType() {
           return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.getDefaultInstance();
         }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry build() {
           org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry result = buildPartial();
           if (!result.isInitialized()) {
@@ -965,17 +1448,7 @@ public final class DataFormats {
           }
           return result;
         }
-        
-        private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry buildParsed()
-            throws com.google.protobuf.InvalidProtocolBufferException {
-          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry result = buildPartial();
-          if (!result.isInitialized()) {
-            throw newUninitializedMessageException(
-              result).asInvalidProtocolBufferException();
-          }
-          return result;
-        }
-        
+
         public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry buildPartial() {
           org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry result = new org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry(this);
           int from_bitField0_ = bitField0_;
@@ -992,7 +1465,7 @@ public final class DataFormats {
           onBuilt();
           return result;
         }
-        
+
         public Builder mergeFrom(com.google.protobuf.Message other) {
           if (other instanceof org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry) {
             return mergeFrom((org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry)other);
@@ -1001,11 +1474,13 @@ public final class DataFormats {
             return this;
           }
         }
-        
+
         public Builder mergeFrom(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry other) {
           if (other == org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry.getDefaultInstance()) return this;
           if (other.hasKey()) {
-            setKey(other.getKey());
+            bitField0_ |= 0x00000001;
+            key_ = other.key_;
+            onChanged();
           }
           if (other.hasValue()) {
             setValue(other.getValue());
@@ -1013,66 +1488,75 @@ public final class DataFormats {
           this.mergeUnknownFields(other.getUnknownFields());
           return this;
         }
-        
+
         public final boolean isInitialized() {
           return true;
         }
-        
+
         public Builder mergeFrom(
             com.google.protobuf.CodedInputStream input,
             com.google.protobuf.ExtensionRegistryLite extensionRegistry)
             throws java.io.IOException {
-          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-            com.google.protobuf.UnknownFieldSet.newBuilder(
-              this.getUnknownFields());
-          while (true) {
-            int tag = input.readTag();
-            switch (tag) {
-              case 0:
-                this.setUnknownFields(unknownFields.build());
-                onChanged();
-                return this;
-              default: {
-                if (!parseUnknownField(input, unknownFields,
-                                       extensionRegistry, tag)) {
-                  this.setUnknownFields(unknownFields.build());
-                  onChanged();
-                  return this;
-                }
-                break;
-              }
-              case 10: {
-                bitField0_ |= 0x00000001;
-                key_ = input.readBytes();
-                break;
-              }
-              case 18: {
-                bitField0_ |= 0x00000002;
-                value_ = input.readBytes();
-                break;
-              }
+          org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry parsedMessage = null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage = (org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry) e.getUnfinishedMessage();
+            throw e;
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
             }
           }
+          return this;
         }
-        
         private int bitField0_;
-        
-        // optional string key = 1;
+
         private java.lang.Object key_ = "";
+        /**
+         * <code>optional string key = 1;</code>
+         */
         public boolean hasKey() {
           return ((bitField0_ & 0x00000001) == 0x00000001);
         }
-        public String getKey() {
+        /**
+         * <code>optional string key = 1;</code>
+         */
+        public java.lang.String getKey() {
           java.lang.Object ref = key_;
-          if (!(ref instanceof String)) {
-            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
-            key_ = s;
+          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 (String) ref;
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         * <code>optional string key = 1;</code>
+         */
+        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;
           }
         }
-        public Builder setKey(String value) {
+        /**
+         * <code>optional string key = 1;</code>
+         */
+        public Builder setKey(
+            java.lang.String value) {
           if (value == null) {
     throw new NullPointerException();
   }
@@ -1081,26 +1565,45 @@ public final class DataFormats {
           onChanged();
           return this;
         }
+        /**
+         * <code>optional string key = 1;</code>
+         */
         public Builder clearKey() {
           bitField0_ = (bitField0_ & ~0x00000001);
           key_ = getDefaultInstance().getKey();
           onChanged();
           return this;
         }
-        void setKey(com.google.protobuf.ByteString value) {
-          bitField0_ |= 0x00000001;
+        /**
+         * <code>optional string key = 1;</code>
+         */
+        public Builder setKeyBytes(
+            com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
           key_ = value;
           onChanged();
+          return this;
         }
-        
-        // optional bytes value = 2;
+
         private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
+        /**
+         * <code>optional bytes value = 2;</code>
+         */
         public boolean hasValue() {
           return ((bitField0_ & 0x00000002) == 0x00000002);
         }
+        /**
+         * <code>optional bytes value = 2;</code>
+         */
         public com.google.protobuf.ByteString getValue() {
           return value_;
         }
+        /**
+         * <code>optional bytes value = 2;</code>
+         */
         public Builder setValue(com.google.protobuf.ByteString value) {
           if (value == null) {
     throw new NullPointerException();
@@ -1110,157 +1613,233 @@ public final class DataFormats {
           onChanged();
           return this;
         }
+        /**
+         * <code>optional bytes value = 2;</code>
+         */
         public Builder clearValue() {
           bitField0_ = (bitField0_ & ~0x00000002);
           value_ = getDefaultInstance().getValue();
           onChanged();
           return this;
         }
-        
+
         // @@protoc_insertion_point(builder_scope:LedgerMetadataFormat.cMetadataMapEntry)
       }
-      
+
       static {
         defaultInstance = new cMetadataMapEntry(true);
         defaultInstance.initFields();
       }
-      
+
       // @@protoc_insertion_point(class_scope:LedgerMetadataFormat.cMetadataMapEntry)
     }
-    
+
     private int bitField0_;
-    // required int32 quorumSize = 1;
     public static final int QUORUMSIZE_FIELD_NUMBER = 1;
     private int quorumSize_;
+    /**
+     * <code>required int32 quorumSize = 1;</code>
+     */
     public boolean hasQuorumSize() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
+    /**
+     * <code>required int32 quorumSize = 1;</code>
+     */
     public int getQuorumSize() {
       return quorumSize_;
     }
-    
-    // required int32 ensembleSize = 2;
+
     public static final int ENSEMBLESIZE_FIELD_NUMBER = 2;
     private int ensembleSize_;
+    /**
+     * <code>required int32 ensembleSize = 2;</code>
+     */
     public boolean hasEnsembleSize() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
+    /**
+     * <code>required int32 ensembleSize = 2;</code>
+     */
     public int getEnsembleSize() {
       return ensembleSize_;
     }
-    
-    // required int64 length = 3;
+
     public static final int LENGTH_FIELD_NUMBER = 3;
     private long length_;
+    /**
+     * <code>required int64 length = 3;</code>
+     */
     public boolean hasLength() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
+    /**
+     * <code>required int64 length = 3;</code>
+     */
     public long getLength() {
       return length_;
     }
-    
-    // optional int64 lastEntryId = 4;
+
     public static final int LASTENTRYID_FIELD_NUMBER = 4;
     private long lastEntryId_;
+    /**
+     * <code>optional int64 lastEntryId = 4;</code>
+     */
     public boolean hasLastEntryId() {
       return ((bitField0_ & 0x00000008) == 0x00000008);
     }
+    /**
+     * <code>optional int64 lastEntryId = 4;</code>
+     */
     public long getLastEntryId() {
       return lastEntryId_;
     }
-    
-    // required .LedgerMetadataFormat.State state = 5 [default = OPEN];
+
     public static final int STATE_FIELD_NUMBER = 5;
     private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State state_;
+    /**
+     * <code>required .LedgerMetadataFormat.State state = 5 [default = OPEN];</code>
+     */
     public boolean hasState() {
       return ((bitField0_ & 0x00000010) == 0x00000010);
     }
+    /**
+     * <code>required .LedgerMetadataFormat.State state = 5 [default = OPEN];</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State getState() {
       return state_;
     }
-    
-    // repeated .LedgerMetadataFormat.Segment segment = 6;
+
     public static final int SEGMENT_FIELD_NUMBER = 6;
     private java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> segment_;
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     public java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> getSegmentList() {
       return segment_;
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     public java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder> 
         getSegmentOrBuilderList() {
       return segment_;
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     public int getSegmentCount() {
       return segment_.size();
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getSegment(int index) {
       return segment_.get(index);
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.Segment segment = 6;</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder getSegmentOrBuilder(
         int index) {
       return segment_.get(index);
     }
-    
-    // optional .LedgerMetadataFormat.DigestType digestType = 7;
+
     public static final int DIGESTTYPE_FIELD_NUMBER = 7;
     private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.DigestType digestType_;
+    /**
+     * <code>optional .LedgerMetadataFormat.DigestType digestType = 7;</code>
+     */
     public boolean hasDigestType() {
       return ((bitField0_ & 0x00000020) == 0x00000020);
     }
+    /**
+     * <code>optional .LedgerMetadataFormat.DigestType digestType = 7;</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.DigestType getDigestType() {
       return digestType_;
     }
-    
-    // optional bytes password = 8;
+
     public static final int PASSWORD_FIELD_NUMBER = 8;
     private com.google.protobuf.ByteString password_;
+    /**
+     * <code>optional bytes password = 8;</code>
+     */
     public boolean hasPassword() {
       return ((bitField0_ & 0x00000040) == 0x00000040);
     }
+    /**
+     * <code>optional bytes password = 8;</code>
+     */
     public com.google.protobuf.ByteString getPassword() {
       return password_;
     }
-    
-    // optional int32 ackQuorumSize = 9;
+
     public static final int ACKQUORUMSIZE_FIELD_NUMBER = 9;
     private int ackQuorumSize_;
+    /**
+     * <code>optional int32 ackQuorumSize = 9;</code>
+     */
     public boolean hasAckQuorumSize() {
       return ((bitField0_ & 0x00000080) == 0x00000080);
     }
+    /**
+     * <code>optional int32 ackQuorumSize = 9;</code>
+     */
     public int getAckQuorumSize() {
       return ackQuorumSize_;
     }
-    
-    // optional int64 ctime = 10;
+
     public static final int CTIME_FIELD_NUMBER = 10;
     private long ctime_;
+    /**
+     * <code>optional int64 ctime = 10;</code>
+     */
     public boolean hasCtime() {
       return ((bitField0_ & 0x00000100) == 0x00000100);
     }
+    /**
+     * <code>optional int64 ctime = 10;</code>
+     */
     public long getCtime() {
       return ctime_;
     }
-    
-    // repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;
+
     public static final int CUSTOMMETADATA_FIELD_NUMBER = 11;
     private java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry> customMetadata_;
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     public java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry> getCustomMetadataList() {
       return customMetadata_;
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     public java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder> 
         getCustomMetadataOrBuilderList() {
       return customMetadata_;
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     public int getCustomMetadataCount() {
       return customMetadata_.size();
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntry getCustomMetadata(int index) {
       return customMetadata_.get(index);
     }
+    /**
+     * <code>repeated .LedgerMetadataFormat.cMetadataMapEntry customMetadata = 11;</code>
+     */
     public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.cMetadataMapEntryOrBuilder getCustomMetadataOrBuilder(
         int index) {
       return customMetadata_.get(index);
     }
-    
+
     private void initFields() {
       quorumSize_ = 0;
       ensembleSize_ = 0;
@@ -1277,8 +1856,9 @@ public final class DataFormats {
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
-      if (isInitialized != -1) return isInitialized == 1;
-      
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
       if (!hasQuorumSize()) {
         memoizedIsInitialized = 0;
         return false;
@@ -1304,7 +1884,7 @@ public final class DataFormats {
       memoizedIsInitialized = 1;
       return true;
     }
-    
+
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       getSerializedSize();
@@ -1343,12 +1923,12 @@ public final class DataFormats {
       }
       getUnknownFields().writeTo(output);
     }
-    
+
     private int memoizedSerializedSize = -1;
     public int getSerializedSize() {
       int size = memoizedSerializedSize;
       if (size != -1) return size;
-    
+
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
@@ -1398,113 +1978,111 @@ public final class DataFormats {
       memoizedSerializedSize = size;
       return size;
     }
-    
+
     private static final long serialVersionUID = 0L;
     @java.lang.Override
     protected java.lang.Object writeReplace()
         throws java.io.ObjectStreamException {
       return super.writeReplace();
     }
-    
+
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
+      return PARSER.parseFrom(data);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(data, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(java.io.InputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
+      return PARSER.parseFrom(input);
     }
     public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
+      return PARSER.parseFrom(input, extensionRegistry);
     }
-    
+
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
-    
+
     @java.lang.Override
     protected Builder newBuilderForType(
         com.google.protobuf.GeneratedMessage.BuilderParent parent) {
       Builder builder = new Builder(parent);
       return builder;
     }
+    /**
+     * Protobuf type {@code LedgerMetadataFormat}
+     *
+     * <pre>
+     **
+     * Metadata format for storing ledger information
+     * </pre>
+     */
     public static final class Builder extends
-        com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormatOrBuilder {
+        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:LedgerMetadataFormat)
+        org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormatOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
         return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_descriptor;
       }
-      
+
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_fieldAccessorTable;
+        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.class, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Builder.class);
       }
-      
+
       // Construct using org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
-      
-      private Builder(BuilderParent parent) {
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
         super(parent);
         maybeForceBuilderInitialization();
       }
@@ -1517,7 +2095,7 @@ public final class DataFormats {
       private static Builder create() {
         return new Builder();
       }
-      
+
       public Builder clear() {
         super.clear();
         quorumSize_ = 0;
@@ -1552,20 +2130,20 @@ public final class DataFormats {
         }
         return this;
       }
-      
+
       public Builder clone() {
         return create().mergeFrom(buildPartial());
       }
-      
+
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDescriptor();
+        return org.apache.bookkeeper.proto.DataFormats.internal_static_LedgerMetadataFormat_descriptor;
       }
-      
+
       public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat getDefaultInstanceForType() {
         return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDefaultInstance();
       }
-      
+
       public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat build() {
         org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat result = buildPartial();
         if (!result.isInitialized()) {
@@ -1573,17 +2151,7 @@ public final class DataFormats {
         }
         return result;
       }
-      
-      private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return result;
-      }
-      
+
       public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat buildPartial() {
         org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat result = new org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat(this);
         int from_bitField0_ = bitField0_;
@@ -1646,7 +2214,7 @@ public final class DataFormats {
         onBuilt();
         return result;
       }
-      
+
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat) {
           return mergeFrom((org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat)other);
@@ -1655,7 +2223,7 @@ public final class DataFormats {
           return this;
         }
       }
-      
+
       public Builder mergeFrom(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat other) {
         if (other == org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDefaultInstance()) return this;
         if (other.hasQuorumSize()) {
@@ -1740,7 +2308,7 @@ public final class DataFormats {
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
-      
+
       public final boolean isInitialized() {
         if (!hasQuorumSize()) {
           
@@ -1766,197 +2334,170 @@ public final class DataFormats {
         }
         return true;
       }
-      
+
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder(
-            this.getUnknownFields());
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              this.setUnknownFields(unknownFields.build());
-              onChanged();
-              return this;
-            default: {
-              if (!parseUnknownField(input, unknownFields,
-                                     extensionRegistry, tag)) {
-               

<TRUNCATED>