distributedlog-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From si...@apache.org
Subject [2/2] incubator-distributedlog git commit: DL-204: Bump libthrift to latest version for distributedlog-core
Date Mon, 12 Jun 2017 21:12:19 GMT
DL-204: Bump libthrift to latest version for distributedlog-core

Currently finagle heavily depends on an out-of-dated version - libthrift 5.0. Proxy modules (client, server) depend on this version, however the core library doesn't really depend on libthrift.

This change is to change libthrift to 0.9.* in distributedlog-core and shade it to avoid it conflict with the version used by finagle.

This change is based on #131 . The main change is at gitsha [6e58786](https://github.com/apache/incubator-distributedlog/commit/6e587869f87cdce50ae93ba3d52767719d1ab5a6)

Author: Sijie Guo <sijie@apache.org>

Reviewers: Jia Zhai <None>, Leigh Stewart <lstewart@apache.org>

Closes #132 from sijie/change_thrift_for_core_module


Project: http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/commit/0cb775c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/tree/0cb775c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/diff/0cb775c9

Branch: refs/heads/master
Commit: 0cb775c931c7b92a0dda58bb59b4145ff9fdd255
Parents: 9c6c9c4
Author: Sijie Guo <sijie@apache.org>
Authored: Mon Jun 12 14:12:13 2017 -0700
Committer: Sijie Guo <sijie@apache.org>
Committed: Mon Jun 12 14:12:13 2017 -0700

----------------------------------------------------------------------
 .gitignore                                      |    3 +
 distributedlog-benchmark/pom.xml                |    2 +-
 distributedlog-core/pom.xml                     |   55 +-
 .../thrift/AccessControlEntry.java              |  793 +++++++++++
 .../distributedlog/thrift/BKDLConfigFormat.java | 1335 ++++++++++++++++++
 .../distributedlog/thrift/package-info.java     |   21 +
 distributedlog-proxy-server/bin/dlog-env.sh     |    2 +-
 .../distributedlog-basic/basic-2.md             |    2 +-
 .../distributedlog-basic/basic-3.md             |    2 +-
 .../distributedlog-basic/basic-4.md             |    2 +-
 .../distributedlog-basic/basic-5.md             |    2 +-
 .../distributedlog-basic/basic-6.md             |    2 +-
 .../distributedlog-messaging/messaging-1.md     |    2 +-
 .../distributedlog-messaging/messaging-2.md     |    2 +-
 docs/admin_guide/bookkeeper.rst                 |   14 +-
 docs/admin_guide/operations.rst                 |    2 +-
 docs/admin_guide/zookeeper.rst                  |   14 +-
 docs/deployment/cluster.rst                     |   64 +-
 docs/start/download.rst                         |   35 +
 docs/start/quickstart.rst                       |   14 +-
 docs/tutorials/basic-2.rst                      |    2 +-
 docs/tutorials/basic-3.rst                      |    2 +-
 docs/tutorials/basic-4.rst                      |    2 +-
 docs/tutorials/basic-5.rst                      |    2 +-
 docs/tutorials/basic-6.rst                      |    2 +-
 docs/tutorials/messaging-1.rst                  |    2 +-
 docs/tutorials/messaging-2.rst                  |    2 +-
 pom.xml                                         |    1 +
 scripts/dev/repackage.sh                        |    2 +-
 scripts/integration/smoketest.sh                |   10 +-
 scripts/snapshot                                |   16 +-
 vagrant/bk.sh                                   |   24 +-
 vagrant/zk.sh                                   |   18 +-
 33 files changed, 2325 insertions(+), 128 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 914de41..e895020 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,6 @@ logs/
 
 # vagrant
 .vagrant
+
+# shade plugins
+*dependency-reduced-pom.xml

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/distributedlog-benchmark/pom.xml b/distributedlog-benchmark/pom.xml
index 26651ad..bd9889c 100644
--- a/distributedlog-benchmark/pom.xml
+++ b/distributedlog-benchmark/pom.xml
@@ -32,7 +32,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.distributedlog</groupId>
-      <artifactId>distributedlog-service</artifactId>
+      <artifactId>distributedlog-proxy-server</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-core/pom.xml
----------------------------------------------------------------------
diff --git a/distributedlog-core/pom.xml b/distributedlog-core/pom.xml
index 9c7afc7..a4f7568 100644
--- a/distributedlog-core/pom.xml
+++ b/distributedlog-core/pom.xml
@@ -87,12 +87,7 @@
     <dependency>
       <groupId>org.apache.thrift</groupId>
       <artifactId>libthrift</artifactId>
-      <version>${libthrift.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.twitter</groupId>
-      <artifactId>scrooge-core_2.11</artifactId>
-      <version>${scrooge.version}</version>
+      <version>0.9.3</version>
     </dependency>
     <dependency>
       <groupId>org.apache.bookkeeper</groupId>
@@ -150,23 +145,6 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>com.twitter</groupId>
-        <artifactId>scrooge-maven-plugin</artifactId>
-        <version>${scrooge-maven-plugin.version}</version>
-        <configuration>
-          <language>java</language>
-        </configuration>
-        <executions>
-          <execution>
-            <id>thrift-sources</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>${maven-compiler-plugin.version}</version>
       </plugin>
@@ -206,6 +184,37 @@
           <excludeFilterFile>${basedir}/src/main/resources/findbugsExclude.xml</excludeFilterFile>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>${maven-shade-plugin.version}</version>
+        <configuration>
+          <!-- put your configurations here -->
+        </configuration>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createDependencyReducedPom>true</createDependencyReducedPom>
+              <artifactSet>
+                <includes>
+                  <include>org.apache.thrift:libthrift</include>
+                </includes>
+              </artifactSet>
+              <minimizeJar>true</minimizeJar>
+              <relocations>
+                <relocation>
+                  <pattern>org.apache.thrift</pattern>
+                  <shadedPattern>dl-shade.org.apache.thrift</shadedPattern>
+                </relocation>
+              </relocations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
   <profiles>

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/AccessControlEntry.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/AccessControlEntry.java b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/AccessControlEntry.java
new file mode 100644
index 0000000..35056d9
--- /dev/null
+++ b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/AccessControlEntry.java
@@ -0,0 +1,793 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.distributedlog.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2017-05-27")
+public class AccessControlEntry implements org.apache.thrift.TBase<AccessControlEntry, AccessControlEntry._Fields>, java.io.Serializable, Cloneable, Comparable<AccessControlEntry> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AccessControlEntry");
+
+  private static final org.apache.thrift.protocol.TField DENY_WRITE_FIELD_DESC = new org.apache.thrift.protocol.TField("denyWrite", org.apache.thrift.protocol.TType.BOOL, (short)1);
+  private static final org.apache.thrift.protocol.TField DENY_TRUNCATE_FIELD_DESC = new org.apache.thrift.protocol.TField("denyTruncate", org.apache.thrift.protocol.TType.BOOL, (short)2);
+  private static final org.apache.thrift.protocol.TField DENY_DELETE_FIELD_DESC = new org.apache.thrift.protocol.TField("denyDelete", org.apache.thrift.protocol.TType.BOOL, (short)3);
+  private static final org.apache.thrift.protocol.TField DENY_ACQUIRE_FIELD_DESC = new org.apache.thrift.protocol.TField("denyAcquire", org.apache.thrift.protocol.TType.BOOL, (short)4);
+  private static final org.apache.thrift.protocol.TField DENY_RELEASE_FIELD_DESC = new org.apache.thrift.protocol.TField("denyRelease", org.apache.thrift.protocol.TType.BOOL, (short)5);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new AccessControlEntryStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new AccessControlEntryTupleSchemeFactory());
+  }
+
+  public boolean denyWrite; // optional
+  public boolean denyTruncate; // optional
+  public boolean denyDelete; // optional
+  public boolean denyAcquire; // optional
+  public boolean denyRelease; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    DENY_WRITE((short)1, "denyWrite"),
+    DENY_TRUNCATE((short)2, "denyTruncate"),
+    DENY_DELETE((short)3, "denyDelete"),
+    DENY_ACQUIRE((short)4, "denyAcquire"),
+    DENY_RELEASE((short)5, "denyRelease");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // DENY_WRITE
+          return DENY_WRITE;
+        case 2: // DENY_TRUNCATE
+          return DENY_TRUNCATE;
+        case 3: // DENY_DELETE
+          return DENY_DELETE;
+        case 4: // DENY_ACQUIRE
+          return DENY_ACQUIRE;
+        case 5: // DENY_RELEASE
+          return DENY_RELEASE;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __DENYWRITE_ISSET_ID = 0;
+  private static final int __DENYTRUNCATE_ISSET_ID = 1;
+  private static final int __DENYDELETE_ISSET_ID = 2;
+  private static final int __DENYACQUIRE_ISSET_ID = 3;
+  private static final int __DENYRELEASE_ISSET_ID = 4;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.DENY_WRITE,_Fields.DENY_TRUNCATE,_Fields.DENY_DELETE,_Fields.DENY_ACQUIRE,_Fields.DENY_RELEASE};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.DENY_WRITE, new org.apache.thrift.meta_data.FieldMetaData("denyWrite", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.DENY_TRUNCATE, new org.apache.thrift.meta_data.FieldMetaData("denyTruncate", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.DENY_DELETE, new org.apache.thrift.meta_data.FieldMetaData("denyDelete", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.DENY_ACQUIRE, new org.apache.thrift.meta_data.FieldMetaData("denyAcquire", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.DENY_RELEASE, new org.apache.thrift.meta_data.FieldMetaData("denyRelease", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(AccessControlEntry.class, metaDataMap);
+  }
+
+  public AccessControlEntry() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public AccessControlEntry(AccessControlEntry other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.denyWrite = other.denyWrite;
+    this.denyTruncate = other.denyTruncate;
+    this.denyDelete = other.denyDelete;
+    this.denyAcquire = other.denyAcquire;
+    this.denyRelease = other.denyRelease;
+  }
+
+  public AccessControlEntry deepCopy() {
+    return new AccessControlEntry(this);
+  }
+
+  @Override
+  public void clear() {
+    setDenyWriteIsSet(false);
+    this.denyWrite = false;
+    setDenyTruncateIsSet(false);
+    this.denyTruncate = false;
+    setDenyDeleteIsSet(false);
+    this.denyDelete = false;
+    setDenyAcquireIsSet(false);
+    this.denyAcquire = false;
+    setDenyReleaseIsSet(false);
+    this.denyRelease = false;
+  }
+
+  public boolean isDenyWrite() {
+    return this.denyWrite;
+  }
+
+  public AccessControlEntry setDenyWrite(boolean denyWrite) {
+    this.denyWrite = denyWrite;
+    setDenyWriteIsSet(true);
+    return this;
+  }
+
+  public void unsetDenyWrite() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DENYWRITE_ISSET_ID);
+  }
+
+  /** Returns true if field denyWrite is set (has been assigned a value) and false otherwise */
+  public boolean isSetDenyWrite() {
+    return EncodingUtils.testBit(__isset_bitfield, __DENYWRITE_ISSET_ID);
+  }
+
+  public void setDenyWriteIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DENYWRITE_ISSET_ID, value);
+  }
+
+  public boolean isDenyTruncate() {
+    return this.denyTruncate;
+  }
+
+  public AccessControlEntry setDenyTruncate(boolean denyTruncate) {
+    this.denyTruncate = denyTruncate;
+    setDenyTruncateIsSet(true);
+    return this;
+  }
+
+  public void unsetDenyTruncate() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DENYTRUNCATE_ISSET_ID);
+  }
+
+  /** Returns true if field denyTruncate is set (has been assigned a value) and false otherwise */
+  public boolean isSetDenyTruncate() {
+    return EncodingUtils.testBit(__isset_bitfield, __DENYTRUNCATE_ISSET_ID);
+  }
+
+  public void setDenyTruncateIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DENYTRUNCATE_ISSET_ID, value);
+  }
+
+  public boolean isDenyDelete() {
+    return this.denyDelete;
+  }
+
+  public AccessControlEntry setDenyDelete(boolean denyDelete) {
+    this.denyDelete = denyDelete;
+    setDenyDeleteIsSet(true);
+    return this;
+  }
+
+  public void unsetDenyDelete() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DENYDELETE_ISSET_ID);
+  }
+
+  /** Returns true if field denyDelete is set (has been assigned a value) and false otherwise */
+  public boolean isSetDenyDelete() {
+    return EncodingUtils.testBit(__isset_bitfield, __DENYDELETE_ISSET_ID);
+  }
+
+  public void setDenyDeleteIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DENYDELETE_ISSET_ID, value);
+  }
+
+  public boolean isDenyAcquire() {
+    return this.denyAcquire;
+  }
+
+  public AccessControlEntry setDenyAcquire(boolean denyAcquire) {
+    this.denyAcquire = denyAcquire;
+    setDenyAcquireIsSet(true);
+    return this;
+  }
+
+  public void unsetDenyAcquire() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DENYACQUIRE_ISSET_ID);
+  }
+
+  /** Returns true if field denyAcquire is set (has been assigned a value) and false otherwise */
+  public boolean isSetDenyAcquire() {
+    return EncodingUtils.testBit(__isset_bitfield, __DENYACQUIRE_ISSET_ID);
+  }
+
+  public void setDenyAcquireIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DENYACQUIRE_ISSET_ID, value);
+  }
+
+  public boolean isDenyRelease() {
+    return this.denyRelease;
+  }
+
+  public AccessControlEntry setDenyRelease(boolean denyRelease) {
+    this.denyRelease = denyRelease;
+    setDenyReleaseIsSet(true);
+    return this;
+  }
+
+  public void unsetDenyRelease() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DENYRELEASE_ISSET_ID);
+  }
+
+  /** Returns true if field denyRelease is set (has been assigned a value) and false otherwise */
+  public boolean isSetDenyRelease() {
+    return EncodingUtils.testBit(__isset_bitfield, __DENYRELEASE_ISSET_ID);
+  }
+
+  public void setDenyReleaseIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DENYRELEASE_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case DENY_WRITE:
+      if (value == null) {
+        unsetDenyWrite();
+      } else {
+        setDenyWrite((Boolean)value);
+      }
+      break;
+
+    case DENY_TRUNCATE:
+      if (value == null) {
+        unsetDenyTruncate();
+      } else {
+        setDenyTruncate((Boolean)value);
+      }
+      break;
+
+    case DENY_DELETE:
+      if (value == null) {
+        unsetDenyDelete();
+      } else {
+        setDenyDelete((Boolean)value);
+      }
+      break;
+
+    case DENY_ACQUIRE:
+      if (value == null) {
+        unsetDenyAcquire();
+      } else {
+        setDenyAcquire((Boolean)value);
+      }
+      break;
+
+    case DENY_RELEASE:
+      if (value == null) {
+        unsetDenyRelease();
+      } else {
+        setDenyRelease((Boolean)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case DENY_WRITE:
+      return isDenyWrite();
+
+    case DENY_TRUNCATE:
+      return isDenyTruncate();
+
+    case DENY_DELETE:
+      return isDenyDelete();
+
+    case DENY_ACQUIRE:
+      return isDenyAcquire();
+
+    case DENY_RELEASE:
+      return isDenyRelease();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case DENY_WRITE:
+      return isSetDenyWrite();
+    case DENY_TRUNCATE:
+      return isSetDenyTruncate();
+    case DENY_DELETE:
+      return isSetDenyDelete();
+    case DENY_ACQUIRE:
+      return isSetDenyAcquire();
+    case DENY_RELEASE:
+      return isSetDenyRelease();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof AccessControlEntry)
+      return this.equals((AccessControlEntry)that);
+    return false;
+  }
+
+  public boolean equals(AccessControlEntry that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_denyWrite = true && this.isSetDenyWrite();
+    boolean that_present_denyWrite = true && that.isSetDenyWrite();
+    if (this_present_denyWrite || that_present_denyWrite) {
+      if (!(this_present_denyWrite && that_present_denyWrite))
+        return false;
+      if (this.denyWrite != that.denyWrite)
+        return false;
+    }
+
+    boolean this_present_denyTruncate = true && this.isSetDenyTruncate();
+    boolean that_present_denyTruncate = true && that.isSetDenyTruncate();
+    if (this_present_denyTruncate || that_present_denyTruncate) {
+      if (!(this_present_denyTruncate && that_present_denyTruncate))
+        return false;
+      if (this.denyTruncate != that.denyTruncate)
+        return false;
+    }
+
+    boolean this_present_denyDelete = true && this.isSetDenyDelete();
+    boolean that_present_denyDelete = true && that.isSetDenyDelete();
+    if (this_present_denyDelete || that_present_denyDelete) {
+      if (!(this_present_denyDelete && that_present_denyDelete))
+        return false;
+      if (this.denyDelete != that.denyDelete)
+        return false;
+    }
+
+    boolean this_present_denyAcquire = true && this.isSetDenyAcquire();
+    boolean that_present_denyAcquire = true && that.isSetDenyAcquire();
+    if (this_present_denyAcquire || that_present_denyAcquire) {
+      if (!(this_present_denyAcquire && that_present_denyAcquire))
+        return false;
+      if (this.denyAcquire != that.denyAcquire)
+        return false;
+    }
+
+    boolean this_present_denyRelease = true && this.isSetDenyRelease();
+    boolean that_present_denyRelease = true && that.isSetDenyRelease();
+    if (this_present_denyRelease || that_present_denyRelease) {
+      if (!(this_present_denyRelease && that_present_denyRelease))
+        return false;
+      if (this.denyRelease != that.denyRelease)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_denyWrite = true && (isSetDenyWrite());
+    list.add(present_denyWrite);
+    if (present_denyWrite)
+      list.add(denyWrite);
+
+    boolean present_denyTruncate = true && (isSetDenyTruncate());
+    list.add(present_denyTruncate);
+    if (present_denyTruncate)
+      list.add(denyTruncate);
+
+    boolean present_denyDelete = true && (isSetDenyDelete());
+    list.add(present_denyDelete);
+    if (present_denyDelete)
+      list.add(denyDelete);
+
+    boolean present_denyAcquire = true && (isSetDenyAcquire());
+    list.add(present_denyAcquire);
+    if (present_denyAcquire)
+      list.add(denyAcquire);
+
+    boolean present_denyRelease = true && (isSetDenyRelease());
+    list.add(present_denyRelease);
+    if (present_denyRelease)
+      list.add(denyRelease);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(AccessControlEntry other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetDenyWrite()).compareTo(other.isSetDenyWrite());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDenyWrite()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.denyWrite, other.denyWrite);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDenyTruncate()).compareTo(other.isSetDenyTruncate());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDenyTruncate()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.denyTruncate, other.denyTruncate);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDenyDelete()).compareTo(other.isSetDenyDelete());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDenyDelete()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.denyDelete, other.denyDelete);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDenyAcquire()).compareTo(other.isSetDenyAcquire());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDenyAcquire()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.denyAcquire, other.denyAcquire);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDenyRelease()).compareTo(other.isSetDenyRelease());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDenyRelease()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.denyRelease, other.denyRelease);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("AccessControlEntry(");
+    boolean first = true;
+
+    if (isSetDenyWrite()) {
+      sb.append("denyWrite:");
+      sb.append(this.denyWrite);
+      first = false;
+    }
+    if (isSetDenyTruncate()) {
+      if (!first) sb.append(", ");
+      sb.append("denyTruncate:");
+      sb.append(this.denyTruncate);
+      first = false;
+    }
+    if (isSetDenyDelete()) {
+      if (!first) sb.append(", ");
+      sb.append("denyDelete:");
+      sb.append(this.denyDelete);
+      first = false;
+    }
+    if (isSetDenyAcquire()) {
+      if (!first) sb.append(", ");
+      sb.append("denyAcquire:");
+      sb.append(this.denyAcquire);
+      first = false;
+    }
+    if (isSetDenyRelease()) {
+      if (!first) sb.append(", ");
+      sb.append("denyRelease:");
+      sb.append(this.denyRelease);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class AccessControlEntryStandardSchemeFactory implements SchemeFactory {
+    public AccessControlEntryStandardScheme getScheme() {
+      return new AccessControlEntryStandardScheme();
+    }
+  }
+
+  private static class AccessControlEntryStandardScheme extends StandardScheme<AccessControlEntry> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, AccessControlEntry struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // DENY_WRITE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.denyWrite = iprot.readBool();
+              struct.setDenyWriteIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // DENY_TRUNCATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.denyTruncate = iprot.readBool();
+              struct.setDenyTruncateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // DENY_DELETE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.denyDelete = iprot.readBool();
+              struct.setDenyDeleteIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // DENY_ACQUIRE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.denyAcquire = iprot.readBool();
+              struct.setDenyAcquireIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // DENY_RELEASE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.denyRelease = iprot.readBool();
+              struct.setDenyReleaseIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, AccessControlEntry struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.isSetDenyWrite()) {
+        oprot.writeFieldBegin(DENY_WRITE_FIELD_DESC);
+        oprot.writeBool(struct.denyWrite);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetDenyTruncate()) {
+        oprot.writeFieldBegin(DENY_TRUNCATE_FIELD_DESC);
+        oprot.writeBool(struct.denyTruncate);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetDenyDelete()) {
+        oprot.writeFieldBegin(DENY_DELETE_FIELD_DESC);
+        oprot.writeBool(struct.denyDelete);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetDenyAcquire()) {
+        oprot.writeFieldBegin(DENY_ACQUIRE_FIELD_DESC);
+        oprot.writeBool(struct.denyAcquire);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetDenyRelease()) {
+        oprot.writeFieldBegin(DENY_RELEASE_FIELD_DESC);
+        oprot.writeBool(struct.denyRelease);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class AccessControlEntryTupleSchemeFactory implements SchemeFactory {
+    public AccessControlEntryTupleScheme getScheme() {
+      return new AccessControlEntryTupleScheme();
+    }
+  }
+
+  private static class AccessControlEntryTupleScheme extends TupleScheme<AccessControlEntry> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, AccessControlEntry struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetDenyWrite()) {
+        optionals.set(0);
+      }
+      if (struct.isSetDenyTruncate()) {
+        optionals.set(1);
+      }
+      if (struct.isSetDenyDelete()) {
+        optionals.set(2);
+      }
+      if (struct.isSetDenyAcquire()) {
+        optionals.set(3);
+      }
+      if (struct.isSetDenyRelease()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetDenyWrite()) {
+        oprot.writeBool(struct.denyWrite);
+      }
+      if (struct.isSetDenyTruncate()) {
+        oprot.writeBool(struct.denyTruncate);
+      }
+      if (struct.isSetDenyDelete()) {
+        oprot.writeBool(struct.denyDelete);
+      }
+      if (struct.isSetDenyAcquire()) {
+        oprot.writeBool(struct.denyAcquire);
+      }
+      if (struct.isSetDenyRelease()) {
+        oprot.writeBool(struct.denyRelease);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, AccessControlEntry struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(5);
+      if (incoming.get(0)) {
+        struct.denyWrite = iprot.readBool();
+        struct.setDenyWriteIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.denyTruncate = iprot.readBool();
+        struct.setDenyTruncateIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.denyDelete = iprot.readBool();
+        struct.setDenyDeleteIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.denyAcquire = iprot.readBool();
+        struct.setDenyAcquireIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.denyRelease = iprot.readBool();
+        struct.setDenyReleaseIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/BKDLConfigFormat.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/BKDLConfigFormat.java b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/BKDLConfigFormat.java
new file mode 100644
index 0000000..6fb0dd6
--- /dev/null
+++ b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/BKDLConfigFormat.java
@@ -0,0 +1,1335 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.distributedlog.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2017-05-27")
+public class BKDLConfigFormat implements org.apache.thrift.TBase<BKDLConfigFormat, BKDLConfigFormat._Fields>, java.io.Serializable, Cloneable, Comparable<BKDLConfigFormat> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BKDLConfigFormat");
+
+  private static final org.apache.thrift.protocol.TField BK_ZK_SERVERS_FIELD_DESC = new org.apache.thrift.protocol.TField("bkZkServers", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField BK_LEDGERS_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("bkLedgersPath", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField SANITY_CHECK_TXN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("sanityCheckTxnID", org.apache.thrift.protocol.TType.BOOL, (short)3);
+  private static final org.apache.thrift.protocol.TField ENCODE_REGION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("encodeRegionID", org.apache.thrift.protocol.TType.BOOL, (short)4);
+  private static final org.apache.thrift.protocol.TField BK_ZK_SERVERS_FOR_READER_FIELD_DESC = new org.apache.thrift.protocol.TField("bkZkServersForReader", org.apache.thrift.protocol.TType.STRING, (short)5);
+  private static final org.apache.thrift.protocol.TField DL_ZK_SERVERS_FOR_WRITER_FIELD_DESC = new org.apache.thrift.protocol.TField("dlZkServersForWriter", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField DL_ZK_SERVERS_FOR_READER_FIELD_DESC = new org.apache.thrift.protocol.TField("dlZkServersForReader", org.apache.thrift.protocol.TType.STRING, (short)7);
+  private static final org.apache.thrift.protocol.TField ACL_ROOT_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("aclRootPath", org.apache.thrift.protocol.TType.STRING, (short)8);
+  private static final org.apache.thrift.protocol.TField FIRST_LOG_SEGMENT_SEQ_NO_FIELD_DESC = new org.apache.thrift.protocol.TField("firstLogSegmentSeqNo", org.apache.thrift.protocol.TType.I64, (short)9);
+  private static final org.apache.thrift.protocol.TField FEDERATED_NAMESPACE_FIELD_DESC = new org.apache.thrift.protocol.TField("federatedNamespace", org.apache.thrift.protocol.TType.BOOL, (short)10);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new BKDLConfigFormatStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new BKDLConfigFormatTupleSchemeFactory());
+  }
+
+  public String bkZkServers; // optional
+  public String bkLedgersPath; // optional
+  public boolean sanityCheckTxnID; // optional
+  public boolean encodeRegionID; // optional
+  public String bkZkServersForReader; // optional
+  public String dlZkServersForWriter; // optional
+  public String dlZkServersForReader; // optional
+  public String aclRootPath; // optional
+  public long firstLogSegmentSeqNo; // optional
+  public boolean federatedNamespace; // optional
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    BK_ZK_SERVERS((short)1, "bkZkServers"),
+    BK_LEDGERS_PATH((short)2, "bkLedgersPath"),
+    SANITY_CHECK_TXN_ID((short)3, "sanityCheckTxnID"),
+    ENCODE_REGION_ID((short)4, "encodeRegionID"),
+    BK_ZK_SERVERS_FOR_READER((short)5, "bkZkServersForReader"),
+    DL_ZK_SERVERS_FOR_WRITER((short)6, "dlZkServersForWriter"),
+    DL_ZK_SERVERS_FOR_READER((short)7, "dlZkServersForReader"),
+    ACL_ROOT_PATH((short)8, "aclRootPath"),
+    FIRST_LOG_SEGMENT_SEQ_NO((short)9, "firstLogSegmentSeqNo"),
+    FEDERATED_NAMESPACE((short)10, "federatedNamespace");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // BK_ZK_SERVERS
+          return BK_ZK_SERVERS;
+        case 2: // BK_LEDGERS_PATH
+          return BK_LEDGERS_PATH;
+        case 3: // SANITY_CHECK_TXN_ID
+          return SANITY_CHECK_TXN_ID;
+        case 4: // ENCODE_REGION_ID
+          return ENCODE_REGION_ID;
+        case 5: // BK_ZK_SERVERS_FOR_READER
+          return BK_ZK_SERVERS_FOR_READER;
+        case 6: // DL_ZK_SERVERS_FOR_WRITER
+          return DL_ZK_SERVERS_FOR_WRITER;
+        case 7: // DL_ZK_SERVERS_FOR_READER
+          return DL_ZK_SERVERS_FOR_READER;
+        case 8: // ACL_ROOT_PATH
+          return ACL_ROOT_PATH;
+        case 9: // FIRST_LOG_SEGMENT_SEQ_NO
+          return FIRST_LOG_SEGMENT_SEQ_NO;
+        case 10: // FEDERATED_NAMESPACE
+          return FEDERATED_NAMESPACE;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __SANITYCHECKTXNID_ISSET_ID = 0;
+  private static final int __ENCODEREGIONID_ISSET_ID = 1;
+  private static final int __FIRSTLOGSEGMENTSEQNO_ISSET_ID = 2;
+  private static final int __FEDERATEDNAMESPACE_ISSET_ID = 3;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.BK_ZK_SERVERS,_Fields.BK_LEDGERS_PATH,_Fields.SANITY_CHECK_TXN_ID,_Fields.ENCODE_REGION_ID,_Fields.BK_ZK_SERVERS_FOR_READER,_Fields.DL_ZK_SERVERS_FOR_WRITER,_Fields.DL_ZK_SERVERS_FOR_READER,_Fields.ACL_ROOT_PATH,_Fields.FIRST_LOG_SEGMENT_SEQ_NO,_Fields.FEDERATED_NAMESPACE};
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.BK_ZK_SERVERS, new org.apache.thrift.meta_data.FieldMetaData("bkZkServers", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.BK_LEDGERS_PATH, new org.apache.thrift.meta_data.FieldMetaData("bkLedgersPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SANITY_CHECK_TXN_ID, new org.apache.thrift.meta_data.FieldMetaData("sanityCheckTxnID", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.ENCODE_REGION_ID, new org.apache.thrift.meta_data.FieldMetaData("encodeRegionID", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    tmpMap.put(_Fields.BK_ZK_SERVERS_FOR_READER, new org.apache.thrift.meta_data.FieldMetaData("bkZkServersForReader", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.DL_ZK_SERVERS_FOR_WRITER, new org.apache.thrift.meta_data.FieldMetaData("dlZkServersForWriter", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.DL_ZK_SERVERS_FOR_READER, new org.apache.thrift.meta_data.FieldMetaData("dlZkServersForReader", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ACL_ROOT_PATH, new org.apache.thrift.meta_data.FieldMetaData("aclRootPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.FIRST_LOG_SEGMENT_SEQ_NO, new org.apache.thrift.meta_data.FieldMetaData("firstLogSegmentSeqNo", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.FEDERATED_NAMESPACE, new org.apache.thrift.meta_data.FieldMetaData("federatedNamespace", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(BKDLConfigFormat.class, metaDataMap);
+  }
+
+  public BKDLConfigFormat() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public BKDLConfigFormat(BKDLConfigFormat other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetBkZkServers()) {
+      this.bkZkServers = other.bkZkServers;
+    }
+    if (other.isSetBkLedgersPath()) {
+      this.bkLedgersPath = other.bkLedgersPath;
+    }
+    this.sanityCheckTxnID = other.sanityCheckTxnID;
+    this.encodeRegionID = other.encodeRegionID;
+    if (other.isSetBkZkServersForReader()) {
+      this.bkZkServersForReader = other.bkZkServersForReader;
+    }
+    if (other.isSetDlZkServersForWriter()) {
+      this.dlZkServersForWriter = other.dlZkServersForWriter;
+    }
+    if (other.isSetDlZkServersForReader()) {
+      this.dlZkServersForReader = other.dlZkServersForReader;
+    }
+    if (other.isSetAclRootPath()) {
+      this.aclRootPath = other.aclRootPath;
+    }
+    this.firstLogSegmentSeqNo = other.firstLogSegmentSeqNo;
+    this.federatedNamespace = other.federatedNamespace;
+  }
+
+  public BKDLConfigFormat deepCopy() {
+    return new BKDLConfigFormat(this);
+  }
+
+  @Override
+  public void clear() {
+    this.bkZkServers = null;
+    this.bkLedgersPath = null;
+    setSanityCheckTxnIDIsSet(false);
+    this.sanityCheckTxnID = false;
+    setEncodeRegionIDIsSet(false);
+    this.encodeRegionID = false;
+    this.bkZkServersForReader = null;
+    this.dlZkServersForWriter = null;
+    this.dlZkServersForReader = null;
+    this.aclRootPath = null;
+    setFirstLogSegmentSeqNoIsSet(false);
+    this.firstLogSegmentSeqNo = 0;
+    setFederatedNamespaceIsSet(false);
+    this.federatedNamespace = false;
+  }
+
+  public String getBkZkServers() {
+    return this.bkZkServers;
+  }
+
+  public BKDLConfigFormat setBkZkServers(String bkZkServers) {
+    this.bkZkServers = bkZkServers;
+    return this;
+  }
+
+  public void unsetBkZkServers() {
+    this.bkZkServers = null;
+  }
+
+  /** Returns true if field bkZkServers is set (has been assigned a value) and false otherwise */
+  public boolean isSetBkZkServers() {
+    return this.bkZkServers != null;
+  }
+
+  public void setBkZkServersIsSet(boolean value) {
+    if (!value) {
+      this.bkZkServers = null;
+    }
+  }
+
+  public String getBkLedgersPath() {
+    return this.bkLedgersPath;
+  }
+
+  public BKDLConfigFormat setBkLedgersPath(String bkLedgersPath) {
+    this.bkLedgersPath = bkLedgersPath;
+    return this;
+  }
+
+  public void unsetBkLedgersPath() {
+    this.bkLedgersPath = null;
+  }
+
+  /** Returns true if field bkLedgersPath is set (has been assigned a value) and false otherwise */
+  public boolean isSetBkLedgersPath() {
+    return this.bkLedgersPath != null;
+  }
+
+  public void setBkLedgersPathIsSet(boolean value) {
+    if (!value) {
+      this.bkLedgersPath = null;
+    }
+  }
+
+  public boolean isSanityCheckTxnID() {
+    return this.sanityCheckTxnID;
+  }
+
+  public BKDLConfigFormat setSanityCheckTxnID(boolean sanityCheckTxnID) {
+    this.sanityCheckTxnID = sanityCheckTxnID;
+    setSanityCheckTxnIDIsSet(true);
+    return this;
+  }
+
+  public void unsetSanityCheckTxnID() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID);
+  }
+
+  /** Returns true if field sanityCheckTxnID is set (has been assigned a value) and false otherwise */
+  public boolean isSetSanityCheckTxnID() {
+    return EncodingUtils.testBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID);
+  }
+
+  public void setSanityCheckTxnIDIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID, value);
+  }
+
+  public boolean isEncodeRegionID() {
+    return this.encodeRegionID;
+  }
+
+  public BKDLConfigFormat setEncodeRegionID(boolean encodeRegionID) {
+    this.encodeRegionID = encodeRegionID;
+    setEncodeRegionIDIsSet(true);
+    return this;
+  }
+
+  public void unsetEncodeRegionID() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID);
+  }
+
+  /** Returns true if field encodeRegionID is set (has been assigned a value) and false otherwise */
+  public boolean isSetEncodeRegionID() {
+    return EncodingUtils.testBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID);
+  }
+
+  public void setEncodeRegionIDIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID, value);
+  }
+
+  public String getBkZkServersForReader() {
+    return this.bkZkServersForReader;
+  }
+
+  public BKDLConfigFormat setBkZkServersForReader(String bkZkServersForReader) {
+    this.bkZkServersForReader = bkZkServersForReader;
+    return this;
+  }
+
+  public void unsetBkZkServersForReader() {
+    this.bkZkServersForReader = null;
+  }
+
+  /** Returns true if field bkZkServersForReader is set (has been assigned a value) and false otherwise */
+  public boolean isSetBkZkServersForReader() {
+    return this.bkZkServersForReader != null;
+  }
+
+  public void setBkZkServersForReaderIsSet(boolean value) {
+    if (!value) {
+      this.bkZkServersForReader = null;
+    }
+  }
+
+  public String getDlZkServersForWriter() {
+    return this.dlZkServersForWriter;
+  }
+
+  public BKDLConfigFormat setDlZkServersForWriter(String dlZkServersForWriter) {
+    this.dlZkServersForWriter = dlZkServersForWriter;
+    return this;
+  }
+
+  public void unsetDlZkServersForWriter() {
+    this.dlZkServersForWriter = null;
+  }
+
+  /** Returns true if field dlZkServersForWriter is set (has been assigned a value) and false otherwise */
+  public boolean isSetDlZkServersForWriter() {
+    return this.dlZkServersForWriter != null;
+  }
+
+  public void setDlZkServersForWriterIsSet(boolean value) {
+    if (!value) {
+      this.dlZkServersForWriter = null;
+    }
+  }
+
+  public String getDlZkServersForReader() {
+    return this.dlZkServersForReader;
+  }
+
+  public BKDLConfigFormat setDlZkServersForReader(String dlZkServersForReader) {
+    this.dlZkServersForReader = dlZkServersForReader;
+    return this;
+  }
+
+  public void unsetDlZkServersForReader() {
+    this.dlZkServersForReader = null;
+  }
+
+  /** Returns true if field dlZkServersForReader is set (has been assigned a value) and false otherwise */
+  public boolean isSetDlZkServersForReader() {
+    return this.dlZkServersForReader != null;
+  }
+
+  public void setDlZkServersForReaderIsSet(boolean value) {
+    if (!value) {
+      this.dlZkServersForReader = null;
+    }
+  }
+
+  public String getAclRootPath() {
+    return this.aclRootPath;
+  }
+
+  public BKDLConfigFormat setAclRootPath(String aclRootPath) {
+    this.aclRootPath = aclRootPath;
+    return this;
+  }
+
+  public void unsetAclRootPath() {
+    this.aclRootPath = null;
+  }
+
+  /** Returns true if field aclRootPath is set (has been assigned a value) and false otherwise */
+  public boolean isSetAclRootPath() {
+    return this.aclRootPath != null;
+  }
+
+  public void setAclRootPathIsSet(boolean value) {
+    if (!value) {
+      this.aclRootPath = null;
+    }
+  }
+
+  public long getFirstLogSegmentSeqNo() {
+    return this.firstLogSegmentSeqNo;
+  }
+
+  public BKDLConfigFormat setFirstLogSegmentSeqNo(long firstLogSegmentSeqNo) {
+    this.firstLogSegmentSeqNo = firstLogSegmentSeqNo;
+    setFirstLogSegmentSeqNoIsSet(true);
+    return this;
+  }
+
+  public void unsetFirstLogSegmentSeqNo() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID);
+  }
+
+  /** Returns true if field firstLogSegmentSeqNo is set (has been assigned a value) and false otherwise */
+  public boolean isSetFirstLogSegmentSeqNo() {
+    return EncodingUtils.testBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID);
+  }
+
+  public void setFirstLogSegmentSeqNoIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID, value);
+  }
+
+  public boolean isFederatedNamespace() {
+    return this.federatedNamespace;
+  }
+
+  public BKDLConfigFormat setFederatedNamespace(boolean federatedNamespace) {
+    this.federatedNamespace = federatedNamespace;
+    setFederatedNamespaceIsSet(true);
+    return this;
+  }
+
+  public void unsetFederatedNamespace() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID);
+  }
+
+  /** Returns true if field federatedNamespace is set (has been assigned a value) and false otherwise */
+  public boolean isSetFederatedNamespace() {
+    return EncodingUtils.testBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID);
+  }
+
+  public void setFederatedNamespaceIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case BK_ZK_SERVERS:
+      if (value == null) {
+        unsetBkZkServers();
+      } else {
+        setBkZkServers((String)value);
+      }
+      break;
+
+    case BK_LEDGERS_PATH:
+      if (value == null) {
+        unsetBkLedgersPath();
+      } else {
+        setBkLedgersPath((String)value);
+      }
+      break;
+
+    case SANITY_CHECK_TXN_ID:
+      if (value == null) {
+        unsetSanityCheckTxnID();
+      } else {
+        setSanityCheckTxnID((Boolean)value);
+      }
+      break;
+
+    case ENCODE_REGION_ID:
+      if (value == null) {
+        unsetEncodeRegionID();
+      } else {
+        setEncodeRegionID((Boolean)value);
+      }
+      break;
+
+    case BK_ZK_SERVERS_FOR_READER:
+      if (value == null) {
+        unsetBkZkServersForReader();
+      } else {
+        setBkZkServersForReader((String)value);
+      }
+      break;
+
+    case DL_ZK_SERVERS_FOR_WRITER:
+      if (value == null) {
+        unsetDlZkServersForWriter();
+      } else {
+        setDlZkServersForWriter((String)value);
+      }
+      break;
+
+    case DL_ZK_SERVERS_FOR_READER:
+      if (value == null) {
+        unsetDlZkServersForReader();
+      } else {
+        setDlZkServersForReader((String)value);
+      }
+      break;
+
+    case ACL_ROOT_PATH:
+      if (value == null) {
+        unsetAclRootPath();
+      } else {
+        setAclRootPath((String)value);
+      }
+      break;
+
+    case FIRST_LOG_SEGMENT_SEQ_NO:
+      if (value == null) {
+        unsetFirstLogSegmentSeqNo();
+      } else {
+        setFirstLogSegmentSeqNo((Long)value);
+      }
+      break;
+
+    case FEDERATED_NAMESPACE:
+      if (value == null) {
+        unsetFederatedNamespace();
+      } else {
+        setFederatedNamespace((Boolean)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case BK_ZK_SERVERS:
+      return getBkZkServers();
+
+    case BK_LEDGERS_PATH:
+      return getBkLedgersPath();
+
+    case SANITY_CHECK_TXN_ID:
+      return isSanityCheckTxnID();
+
+    case ENCODE_REGION_ID:
+      return isEncodeRegionID();
+
+    case BK_ZK_SERVERS_FOR_READER:
+      return getBkZkServersForReader();
+
+    case DL_ZK_SERVERS_FOR_WRITER:
+      return getDlZkServersForWriter();
+
+    case DL_ZK_SERVERS_FOR_READER:
+      return getDlZkServersForReader();
+
+    case ACL_ROOT_PATH:
+      return getAclRootPath();
+
+    case FIRST_LOG_SEGMENT_SEQ_NO:
+      return getFirstLogSegmentSeqNo();
+
+    case FEDERATED_NAMESPACE:
+      return isFederatedNamespace();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case BK_ZK_SERVERS:
+      return isSetBkZkServers();
+    case BK_LEDGERS_PATH:
+      return isSetBkLedgersPath();
+    case SANITY_CHECK_TXN_ID:
+      return isSetSanityCheckTxnID();
+    case ENCODE_REGION_ID:
+      return isSetEncodeRegionID();
+    case BK_ZK_SERVERS_FOR_READER:
+      return isSetBkZkServersForReader();
+    case DL_ZK_SERVERS_FOR_WRITER:
+      return isSetDlZkServersForWriter();
+    case DL_ZK_SERVERS_FOR_READER:
+      return isSetDlZkServersForReader();
+    case ACL_ROOT_PATH:
+      return isSetAclRootPath();
+    case FIRST_LOG_SEGMENT_SEQ_NO:
+      return isSetFirstLogSegmentSeqNo();
+    case FEDERATED_NAMESPACE:
+      return isSetFederatedNamespace();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof BKDLConfigFormat)
+      return this.equals((BKDLConfigFormat)that);
+    return false;
+  }
+
+  public boolean equals(BKDLConfigFormat that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_bkZkServers = true && this.isSetBkZkServers();
+    boolean that_present_bkZkServers = true && that.isSetBkZkServers();
+    if (this_present_bkZkServers || that_present_bkZkServers) {
+      if (!(this_present_bkZkServers && that_present_bkZkServers))
+        return false;
+      if (!this.bkZkServers.equals(that.bkZkServers))
+        return false;
+    }
+
+    boolean this_present_bkLedgersPath = true && this.isSetBkLedgersPath();
+    boolean that_present_bkLedgersPath = true && that.isSetBkLedgersPath();
+    if (this_present_bkLedgersPath || that_present_bkLedgersPath) {
+      if (!(this_present_bkLedgersPath && that_present_bkLedgersPath))
+        return false;
+      if (!this.bkLedgersPath.equals(that.bkLedgersPath))
+        return false;
+    }
+
+    boolean this_present_sanityCheckTxnID = true && this.isSetSanityCheckTxnID();
+    boolean that_present_sanityCheckTxnID = true && that.isSetSanityCheckTxnID();
+    if (this_present_sanityCheckTxnID || that_present_sanityCheckTxnID) {
+      if (!(this_present_sanityCheckTxnID && that_present_sanityCheckTxnID))
+        return false;
+      if (this.sanityCheckTxnID != that.sanityCheckTxnID)
+        return false;
+    }
+
+    boolean this_present_encodeRegionID = true && this.isSetEncodeRegionID();
+    boolean that_present_encodeRegionID = true && that.isSetEncodeRegionID();
+    if (this_present_encodeRegionID || that_present_encodeRegionID) {
+      if (!(this_present_encodeRegionID && that_present_encodeRegionID))
+        return false;
+      if (this.encodeRegionID != that.encodeRegionID)
+        return false;
+    }
+
+    boolean this_present_bkZkServersForReader = true && this.isSetBkZkServersForReader();
+    boolean that_present_bkZkServersForReader = true && that.isSetBkZkServersForReader();
+    if (this_present_bkZkServersForReader || that_present_bkZkServersForReader) {
+      if (!(this_present_bkZkServersForReader && that_present_bkZkServersForReader))
+        return false;
+      if (!this.bkZkServersForReader.equals(that.bkZkServersForReader))
+        return false;
+    }
+
+    boolean this_present_dlZkServersForWriter = true && this.isSetDlZkServersForWriter();
+    boolean that_present_dlZkServersForWriter = true && that.isSetDlZkServersForWriter();
+    if (this_present_dlZkServersForWriter || that_present_dlZkServersForWriter) {
+      if (!(this_present_dlZkServersForWriter && that_present_dlZkServersForWriter))
+        return false;
+      if (!this.dlZkServersForWriter.equals(that.dlZkServersForWriter))
+        return false;
+    }
+
+    boolean this_present_dlZkServersForReader = true && this.isSetDlZkServersForReader();
+    boolean that_present_dlZkServersForReader = true && that.isSetDlZkServersForReader();
+    if (this_present_dlZkServersForReader || that_present_dlZkServersForReader) {
+      if (!(this_present_dlZkServersForReader && that_present_dlZkServersForReader))
+        return false;
+      if (!this.dlZkServersForReader.equals(that.dlZkServersForReader))
+        return false;
+    }
+
+    boolean this_present_aclRootPath = true && this.isSetAclRootPath();
+    boolean that_present_aclRootPath = true && that.isSetAclRootPath();
+    if (this_present_aclRootPath || that_present_aclRootPath) {
+      if (!(this_present_aclRootPath && that_present_aclRootPath))
+        return false;
+      if (!this.aclRootPath.equals(that.aclRootPath))
+        return false;
+    }
+
+    boolean this_present_firstLogSegmentSeqNo = true && this.isSetFirstLogSegmentSeqNo();
+    boolean that_present_firstLogSegmentSeqNo = true && that.isSetFirstLogSegmentSeqNo();
+    if (this_present_firstLogSegmentSeqNo || that_present_firstLogSegmentSeqNo) {
+      if (!(this_present_firstLogSegmentSeqNo && that_present_firstLogSegmentSeqNo))
+        return false;
+      if (this.firstLogSegmentSeqNo != that.firstLogSegmentSeqNo)
+        return false;
+    }
+
+    boolean this_present_federatedNamespace = true && this.isSetFederatedNamespace();
+    boolean that_present_federatedNamespace = true && that.isSetFederatedNamespace();
+    if (this_present_federatedNamespace || that_present_federatedNamespace) {
+      if (!(this_present_federatedNamespace && that_present_federatedNamespace))
+        return false;
+      if (this.federatedNamespace != that.federatedNamespace)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_bkZkServers = true && (isSetBkZkServers());
+    list.add(present_bkZkServers);
+    if (present_bkZkServers)
+      list.add(bkZkServers);
+
+    boolean present_bkLedgersPath = true && (isSetBkLedgersPath());
+    list.add(present_bkLedgersPath);
+    if (present_bkLedgersPath)
+      list.add(bkLedgersPath);
+
+    boolean present_sanityCheckTxnID = true && (isSetSanityCheckTxnID());
+    list.add(present_sanityCheckTxnID);
+    if (present_sanityCheckTxnID)
+      list.add(sanityCheckTxnID);
+
+    boolean present_encodeRegionID = true && (isSetEncodeRegionID());
+    list.add(present_encodeRegionID);
+    if (present_encodeRegionID)
+      list.add(encodeRegionID);
+
+    boolean present_bkZkServersForReader = true && (isSetBkZkServersForReader());
+    list.add(present_bkZkServersForReader);
+    if (present_bkZkServersForReader)
+      list.add(bkZkServersForReader);
+
+    boolean present_dlZkServersForWriter = true && (isSetDlZkServersForWriter());
+    list.add(present_dlZkServersForWriter);
+    if (present_dlZkServersForWriter)
+      list.add(dlZkServersForWriter);
+
+    boolean present_dlZkServersForReader = true && (isSetDlZkServersForReader());
+    list.add(present_dlZkServersForReader);
+    if (present_dlZkServersForReader)
+      list.add(dlZkServersForReader);
+
+    boolean present_aclRootPath = true && (isSetAclRootPath());
+    list.add(present_aclRootPath);
+    if (present_aclRootPath)
+      list.add(aclRootPath);
+
+    boolean present_firstLogSegmentSeqNo = true && (isSetFirstLogSegmentSeqNo());
+    list.add(present_firstLogSegmentSeqNo);
+    if (present_firstLogSegmentSeqNo)
+      list.add(firstLogSegmentSeqNo);
+
+    boolean present_federatedNamespace = true && (isSetFederatedNamespace());
+    list.add(present_federatedNamespace);
+    if (present_federatedNamespace)
+      list.add(federatedNamespace);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(BKDLConfigFormat other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetBkZkServers()).compareTo(other.isSetBkZkServers());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetBkZkServers()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkZkServers, other.bkZkServers);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetBkLedgersPath()).compareTo(other.isSetBkLedgersPath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetBkLedgersPath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkLedgersPath, other.bkLedgersPath);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSanityCheckTxnID()).compareTo(other.isSetSanityCheckTxnID());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSanityCheckTxnID()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sanityCheckTxnID, other.sanityCheckTxnID);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetEncodeRegionID()).compareTo(other.isSetEncodeRegionID());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetEncodeRegionID()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.encodeRegionID, other.encodeRegionID);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetBkZkServersForReader()).compareTo(other.isSetBkZkServersForReader());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetBkZkServersForReader()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkZkServersForReader, other.bkZkServersForReader);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDlZkServersForWriter()).compareTo(other.isSetDlZkServersForWriter());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDlZkServersForWriter()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dlZkServersForWriter, other.dlZkServersForWriter);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetDlZkServersForReader()).compareTo(other.isSetDlZkServersForReader());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDlZkServersForReader()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dlZkServersForReader, other.dlZkServersForReader);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetAclRootPath()).compareTo(other.isSetAclRootPath());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAclRootPath()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.aclRootPath, other.aclRootPath);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetFirstLogSegmentSeqNo()).compareTo(other.isSetFirstLogSegmentSeqNo());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFirstLogSegmentSeqNo()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.firstLogSegmentSeqNo, other.firstLogSegmentSeqNo);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetFederatedNamespace()).compareTo(other.isSetFederatedNamespace());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFederatedNamespace()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.federatedNamespace, other.federatedNamespace);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("BKDLConfigFormat(");
+    boolean first = true;
+
+    if (isSetBkZkServers()) {
+      sb.append("bkZkServers:");
+      if (this.bkZkServers == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.bkZkServers);
+      }
+      first = false;
+    }
+    if (isSetBkLedgersPath()) {
+      if (!first) sb.append(", ");
+      sb.append("bkLedgersPath:");
+      if (this.bkLedgersPath == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.bkLedgersPath);
+      }
+      first = false;
+    }
+    if (isSetSanityCheckTxnID()) {
+      if (!first) sb.append(", ");
+      sb.append("sanityCheckTxnID:");
+      sb.append(this.sanityCheckTxnID);
+      first = false;
+    }
+    if (isSetEncodeRegionID()) {
+      if (!first) sb.append(", ");
+      sb.append("encodeRegionID:");
+      sb.append(this.encodeRegionID);
+      first = false;
+    }
+    if (isSetBkZkServersForReader()) {
+      if (!first) sb.append(", ");
+      sb.append("bkZkServersForReader:");
+      if (this.bkZkServersForReader == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.bkZkServersForReader);
+      }
+      first = false;
+    }
+    if (isSetDlZkServersForWriter()) {
+      if (!first) sb.append(", ");
+      sb.append("dlZkServersForWriter:");
+      if (this.dlZkServersForWriter == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.dlZkServersForWriter);
+      }
+      first = false;
+    }
+    if (isSetDlZkServersForReader()) {
+      if (!first) sb.append(", ");
+      sb.append("dlZkServersForReader:");
+      if (this.dlZkServersForReader == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.dlZkServersForReader);
+      }
+      first = false;
+    }
+    if (isSetAclRootPath()) {
+      if (!first) sb.append(", ");
+      sb.append("aclRootPath:");
+      if (this.aclRootPath == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.aclRootPath);
+      }
+      first = false;
+    }
+    if (isSetFirstLogSegmentSeqNo()) {
+      if (!first) sb.append(", ");
+      sb.append("firstLogSegmentSeqNo:");
+      sb.append(this.firstLogSegmentSeqNo);
+      first = false;
+    }
+    if (isSetFederatedNamespace()) {
+      if (!first) sb.append(", ");
+      sb.append("federatedNamespace:");
+      sb.append(this.federatedNamespace);
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bitfield = 0;
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class BKDLConfigFormatStandardSchemeFactory implements SchemeFactory {
+    public BKDLConfigFormatStandardScheme getScheme() {
+      return new BKDLConfigFormatStandardScheme();
+    }
+  }
+
+  private static class BKDLConfigFormatStandardScheme extends StandardScheme<BKDLConfigFormat> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // BK_ZK_SERVERS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.bkZkServers = iprot.readString();
+              struct.setBkZkServersIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // BK_LEDGERS_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.bkLedgersPath = iprot.readString();
+              struct.setBkLedgersPathIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // SANITY_CHECK_TXN_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.sanityCheckTxnID = iprot.readBool();
+              struct.setSanityCheckTxnIDIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 4: // ENCODE_REGION_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.encodeRegionID = iprot.readBool();
+              struct.setEncodeRegionIDIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 5: // BK_ZK_SERVERS_FOR_READER
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.bkZkServersForReader = iprot.readString();
+              struct.setBkZkServersForReaderIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 6: // DL_ZK_SERVERS_FOR_WRITER
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.dlZkServersForWriter = iprot.readString();
+              struct.setDlZkServersForWriterIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 7: // DL_ZK_SERVERS_FOR_READER
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.dlZkServersForReader = iprot.readString();
+              struct.setDlZkServersForReaderIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 8: // ACL_ROOT_PATH
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.aclRootPath = iprot.readString();
+              struct.setAclRootPathIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 9: // FIRST_LOG_SEGMENT_SEQ_NO
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.firstLogSegmentSeqNo = iprot.readI64();
+              struct.setFirstLogSegmentSeqNoIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 10: // FEDERATED_NAMESPACE
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.federatedNamespace = iprot.readBool();
+              struct.setFederatedNamespaceIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.bkZkServers != null) {
+        if (struct.isSetBkZkServers()) {
+          oprot.writeFieldBegin(BK_ZK_SERVERS_FIELD_DESC);
+          oprot.writeString(struct.bkZkServers);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.bkLedgersPath != null) {
+        if (struct.isSetBkLedgersPath()) {
+          oprot.writeFieldBegin(BK_LEDGERS_PATH_FIELD_DESC);
+          oprot.writeString(struct.bkLedgersPath);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetSanityCheckTxnID()) {
+        oprot.writeFieldBegin(SANITY_CHECK_TXN_ID_FIELD_DESC);
+        oprot.writeBool(struct.sanityCheckTxnID);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetEncodeRegionID()) {
+        oprot.writeFieldBegin(ENCODE_REGION_ID_FIELD_DESC);
+        oprot.writeBool(struct.encodeRegionID);
+        oprot.writeFieldEnd();
+      }
+      if (struct.bkZkServersForReader != null) {
+        if (struct.isSetBkZkServersForReader()) {
+          oprot.writeFieldBegin(BK_ZK_SERVERS_FOR_READER_FIELD_DESC);
+          oprot.writeString(struct.bkZkServersForReader);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.dlZkServersForWriter != null) {
+        if (struct.isSetDlZkServersForWriter()) {
+          oprot.writeFieldBegin(DL_ZK_SERVERS_FOR_WRITER_FIELD_DESC);
+          oprot.writeString(struct.dlZkServersForWriter);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.dlZkServersForReader != null) {
+        if (struct.isSetDlZkServersForReader()) {
+          oprot.writeFieldBegin(DL_ZK_SERVERS_FOR_READER_FIELD_DESC);
+          oprot.writeString(struct.dlZkServersForReader);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.aclRootPath != null) {
+        if (struct.isSetAclRootPath()) {
+          oprot.writeFieldBegin(ACL_ROOT_PATH_FIELD_DESC);
+          oprot.writeString(struct.aclRootPath);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetFirstLogSegmentSeqNo()) {
+        oprot.writeFieldBegin(FIRST_LOG_SEGMENT_SEQ_NO_FIELD_DESC);
+        oprot.writeI64(struct.firstLogSegmentSeqNo);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetFederatedNamespace()) {
+        oprot.writeFieldBegin(FEDERATED_NAMESPACE_FIELD_DESC);
+        oprot.writeBool(struct.federatedNamespace);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class BKDLConfigFormatTupleSchemeFactory implements SchemeFactory {
+    public BKDLConfigFormatTupleScheme getScheme() {
+      return new BKDLConfigFormatTupleScheme();
+    }
+  }
+
+  private static class BKDLConfigFormatTupleScheme extends TupleScheme<BKDLConfigFormat> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetBkZkServers()) {
+        optionals.set(0);
+      }
+      if (struct.isSetBkLedgersPath()) {
+        optionals.set(1);
+      }
+      if (struct.isSetSanityCheckTxnID()) {
+        optionals.set(2);
+      }
+      if (struct.isSetEncodeRegionID()) {
+        optionals.set(3);
+      }
+      if (struct.isSetBkZkServersForReader()) {
+        optionals.set(4);
+      }
+      if (struct.isSetDlZkServersForWriter()) {
+        optionals.set(5);
+      }
+      if (struct.isSetDlZkServersForReader()) {
+        optionals.set(6);
+      }
+      if (struct.isSetAclRootPath()) {
+        optionals.set(7);
+      }
+      if (struct.isSetFirstLogSegmentSeqNo()) {
+        optionals.set(8);
+      }
+      if (struct.isSetFederatedNamespace()) {
+        optionals.set(9);
+      }
+      oprot.writeBitSet(optionals, 10);
+      if (struct.isSetBkZkServers()) {
+        oprot.writeString(struct.bkZkServers);
+      }
+      if (struct.isSetBkLedgersPath()) {
+        oprot.writeString(struct.bkLedgersPath);
+      }
+      if (struct.isSetSanityCheckTxnID()) {
+        oprot.writeBool(struct.sanityCheckTxnID);
+      }
+      if (struct.isSetEncodeRegionID()) {
+        oprot.writeBool(struct.encodeRegionID);
+      }
+      if (struct.isSetBkZkServersForReader()) {
+        oprot.writeString(struct.bkZkServersForReader);
+      }
+      if (struct.isSetDlZkServersForWriter()) {
+        oprot.writeString(struct.dlZkServersForWriter);
+      }
+      if (struct.isSetDlZkServersForReader()) {
+        oprot.writeString(struct.dlZkServersForReader);
+      }
+      if (struct.isSetAclRootPath()) {
+        oprot.writeString(struct.aclRootPath);
+      }
+      if (struct.isSetFirstLogSegmentSeqNo()) {
+        oprot.writeI64(struct.firstLogSegmentSeqNo);
+      }
+      if (struct.isSetFederatedNamespace()) {
+        oprot.writeBool(struct.federatedNamespace);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(10);
+      if (incoming.get(0)) {
+        struct.bkZkServers = iprot.readString();
+        struct.setBkZkServersIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.bkLedgersPath = iprot.readString();
+        struct.setBkLedgersPathIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.sanityCheckTxnID = iprot.readBool();
+        struct.setSanityCheckTxnIDIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.encodeRegionID = iprot.readBool();
+        struct.setEncodeRegionIDIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.bkZkServersForReader = iprot.readString();
+        struct.setBkZkServersForReaderIsSet(true);
+      }
+      if (incoming.get(5)) {
+        struct.dlZkServersForWriter = iprot.readString();
+        struct.setDlZkServersForWriterIsSet(true);
+      }
+      if (incoming.get(6)) {
+        struct.dlZkServersForReader = iprot.readString();
+        struct.setDlZkServersForReaderIsSet(true);
+      }
+      if (incoming.get(7)) {
+        struct.aclRootPath = iprot.readString();
+        struct.setAclRootPathIsSet(true);
+      }
+      if (incoming.get(8)) {
+        struct.firstLogSegmentSeqNo = iprot.readI64();
+        struct.setFirstLogSegmentSeqNoIsSet(true);
+      }
+      if (incoming.get(9)) {
+        struct.federatedNamespace = iprot.readBool();
+        struct.setFederatedNamespaceIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/package-info.java b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/package-info.java
new file mode 100644
index 0000000..efee3ca
--- /dev/null
+++ b/distributedlog-core/src/main/java/org/apache/distributedlog/thrift/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Generated thrift code.
+ */
+package org.apache.distributedlog.thrift;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/0cb775c9/distributedlog-proxy-server/bin/dlog-env.sh
----------------------------------------------------------------------
diff --git a/distributedlog-proxy-server/bin/dlog-env.sh b/distributedlog-proxy-server/bin/dlog-env.sh
index 50a1960..b5e62f2 100644
--- a/distributedlog-proxy-server/bin/dlog-env.sh
+++ b/distributedlog-proxy-server/bin/dlog-env.sh
@@ -24,7 +24,7 @@ if [[ -z "${DISTRIBUTEDLOG_URI}" ]]; then
   exit 1
 fi
 
-# add the jars from current dir to the class path (should be distributedlog-service)
+# add the jars from current dir to the class path (should be distributedlog-proxy-server)
 for i in ./*.jar; do
   CLASSPATH="$i:${CLASSPATH}"
 done



Mime
View raw message