You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by iv...@apache.org on 2012/06/27 15:35:15 UTC
svn commit: r1354492 [1/3] - in /zookeeper/bookkeeper/trunk: ./
bookkeeper-server/
bookkeeper-server/src/main/java/org/apache/bookkeeper/client/
bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/
bookkeeper-server/src/main/proto/ bookkeeper-s...
Author: ivank
Date: Wed Jun 27 13:35:11 2012
New Revision: 1354492
URL: http://svn.apache.org/viewvc?rev=1354492&view=rev
Log:
BOOKKEEPER-303: LedgerMetadata should serialized using protobufs (ivank)
Added:
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/DataFormats.proto
Modified:
zookeeper/bookkeeper/trunk/CHANGES.txt
zookeeper/bookkeeper/trunk/bookkeeper-server/pom.xml
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerRecoveryOp.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingReadOp.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadLastConfirmedOp.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/resources/LICENSE.bin.txt
zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/resources/NOTICE.bin.txt
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/BookieRecoveryTest.java
zookeeper/bookkeeper/trunk/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/TestBackwardCompat.java
zookeeper/bookkeeper/trunk/hedwig-protocol/pom.xml
zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java
Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed Jun 27 13:35:11 2012
@@ -8,6 +8,8 @@ Trunk (unreleased changes)
BOOKKEEPER-203: improve ledger manager interface to remove zookeeper dependency on metadata operations. (sijie via ivank)
+ BOOKKEEPER-303: LedgerMetadata should serialized using protobufs (ivank)
+
Backward compatible changes:
BUGFIXES:
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/pom.xml
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/pom.xml?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/pom.xml (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/pom.xml Wed Jun 27 13:35:11 2012
@@ -34,7 +34,7 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
- <version>2.3.0</version>
+ <version>2.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
@@ -165,4 +165,33 @@
</plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <id>protobuf</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <id>default-cli</id>
+ <configuration>
+ <target>
+ <exec executable="protoc" failonerror="true">
+ <arg value="--java_out=src/main/java" />
+ <arg value="src/main/proto/DataFormats.proto" />
+ </exec>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java Wed Jun 27 13:35:11 2012
@@ -90,7 +90,7 @@ class LedgerCreateOp implements GenericC
ArrayList<InetSocketAddress> ensemble;
try {
- ensemble = bk.bookieWatcher.getNewBookies(metadata.ensembleSize);
+ ensemble = bk.bookieWatcher.getNewBookies(metadata.getEnsembleSize());
} catch (BKNotEnoughBookiesException e) {
LOG.error("Not enough bookies to create ledger");
cb.createComplete(e.getCode(), null, this.ctx);
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java Wed Jun 27 13:35:11 2012
@@ -41,6 +41,7 @@ import org.apache.bookkeeper.client.Book
import org.apache.bookkeeper.client.LedgerMetadata;
import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback;
import org.apache.bookkeeper.proto.BookieProtocol;
+import org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State;
import org.apache.bookkeeper.util.SafeRunnable;
import org.slf4j.Logger;
@@ -83,8 +84,8 @@ public class LedgerHandle {
this.metadata = metadata;
if (metadata.isClosed()) {
- lastAddConfirmed = lastAddPushed = metadata.close;
- length = metadata.length;
+ lastAddConfirmed = lastAddPushed = metadata.getLastEntryId();
+ length = metadata.getLength();
} else {
lastAddConfirmed = lastAddPushed = INVALID_ENTRY_ID;
length = 0;
@@ -98,7 +99,7 @@ public class LedgerHandle {
macManager = DigestManager.instantiate(ledgerId, password, digestType);
this.ledgerKey = MacDigestManager.genDigest("ledger", password);
distributionSchedule = new RoundRobinDistributionSchedule(
- metadata.quorumSize, metadata.ensembleSize);
+ metadata.getQuorumSize(), metadata.getEnsembleSize());
}
/**
@@ -256,17 +257,19 @@ public class LedgerHandle {
bk.mainWorkerPool.submitOrdered(ledgerId, new SafeRunnable() {
@Override
public void safeRun() {
- final long prevClose;
+ final long prevLastEntryId;
final long prevLength;
+ final State prevState;
synchronized(LedgerHandle.this) {
- prevClose = metadata.close;
- prevLength = metadata.length;
+ prevState = metadata.getState();
+ prevLastEntryId = metadata.getLastEntryId();
+ prevLength = metadata.getLength();
// synchronized on LedgerHandle.this to ensure that
// lastAddPushed can not be updated after the metadata
// is closed.
- metadata.length = length;
+ metadata.setLength(length);
// Close operation is idempotent, so no need to check if we are
// already closed
@@ -277,7 +280,7 @@ public class LedgerHandle {
if (LOG.isDebugEnabled()) {
LOG.debug("Closing ledger: " + ledgerId + " at entryId: "
- + metadata.close + " with this many bytes: " + metadata.length);
+ + metadata.getLastEntryId() + " with this many bytes: " + metadata.getLength());
}
final class CloseCb implements GenericCallback<Void> {
@@ -292,15 +295,19 @@ public class LedgerHandle {
+ " when closing, code=" + newrc);
cb.closeComplete(rc, LedgerHandle.this, ctx);
} else {
- metadata.close(prevClose);
- metadata.length = prevLength;
+ metadata.setState(prevState);
+ if (prevState.equals(State.CLOSED)) {
+ metadata.close(prevLastEntryId);
+ }
+
+ metadata.setLength(prevLength);
if (metadata.resolveConflict(newMeta)) {
- metadata.length = length;
+ metadata.setLength(length);
metadata.close(lastAddConfirmed);
writeLedgerConfig(new CloseCb());
return;
} else {
- metadata.length = length;
+ metadata.setLength(length);
metadata.close(lastAddConfirmed);
LOG.warn("Conditional update ledger metadata for ledger " + ledgerId + " failed.");
cb.closeComplete(rc, LedgerHandle.this, ctx);
@@ -735,8 +742,8 @@ public class LedgerHandle {
synchronized void recover(final GenericCallback<Void> cb) {
if (metadata.isClosed()) {
- lastAddConfirmed = lastAddPushed = metadata.close;
- length = metadata.length;
+ lastAddConfirmed = lastAddPushed = metadata.getLastEntryId();
+ length = metadata.getLength();
// We are already closed, nothing to do
cb.operationComplete(BKException.Code.OK, null);
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerMetadata.java Wed Jun 27 13:35:11 2012
@@ -18,6 +18,8 @@ package org.apache.bookkeeper.client;
* limitations under the License.
*/
+import java.io.BufferedReader;
+import java.io.StringReader;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.ArrayList;
@@ -27,6 +29,8 @@ import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.bookkeeper.versioning.Version;
+import com.google.protobuf.TextFormat;
+import org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat;
import org.apache.bookkeeper.util.StringUtils;
import org.apache.zookeeper.data.Stat;
import org.slf4j.Logger;
@@ -46,19 +50,21 @@ public class LedgerMetadata {
// can't use -1 for NOTCLOSED because that is reserved for a closed, empty
// ledger
- public static final int NOTCLOSED = -101;
- public static final int IN_RECOVERY = -102;
+ private static final int NOTCLOSED = -101;
+ private static final int IN_RECOVERY = -102;
public static final int LOWEST_COMPAT_METADATA_FORMAT_VERSION = 0;
- public static final int CURRENT_METADATA_FORMAT_VERSION = 1;
+ public static final int CURRENT_METADATA_FORMAT_VERSION = 2;
public static final String VERSION_KEY = "BookieMetadataFormatVersion";
- int metadataFormatVersion = 0;
+ private int metadataFormatVersion = 0;
- int ensembleSize;
- int quorumSize;
- long length;
- long close;
+ private int ensembleSize;
+ private int quorumSize;
+ private long length;
+ private long lastEntryId;
+
+ private LedgerMetadataFormat.State state;
private SortedMap<Long, ArrayList<InetSocketAddress>> ensembles = new TreeMap<Long, ArrayList<InetSocketAddress>>();
ArrayList<InetSocketAddress> currentEnsemble;
volatile Version version = null;
@@ -72,7 +78,8 @@ public class LedgerMetadata {
* we read it in LedgerRecoveryOp.readComplete.
*/
this.length = 0;
- this.close = NOTCLOSED;
+ this.state = LedgerMetadataFormat.State.OPEN;
+ this.lastEntryId = LedgerHandle.INVALID_ENTRY_ID;
this.metadataFormatVersion = CURRENT_METADATA_FORMAT_VERSION;
};
@@ -91,21 +98,49 @@ public class LedgerMetadata {
return ensembles;
}
- boolean isClosed() {
- return close != NOTCLOSED
- && close != IN_RECOVERY;
+ public int getEnsembleSize() {
+ return ensembleSize;
+ }
+
+ public int getQuorumSize() {
+ return quorumSize;
+ }
+
+ public long getLastEntryId() {
+ return lastEntryId;
+ }
+
+ public long getLength() {
+ return length;
+ }
+
+ void setLength(long length) {
+ this.length = length;
+ }
+
+ public boolean isClosed() {
+ return state == LedgerMetadataFormat.State.CLOSED;
+ }
+
+ public boolean isInRecovery() {
+ return state == LedgerMetadataFormat.State.IN_RECOVERY;
}
- boolean isInRecovery() {
- return IN_RECOVERY == close;
+ LedgerMetadataFormat.State getState() {
+ return state;
}
-
+
+ void setState(LedgerMetadataFormat.State state) {
+ this.state = state;
+ }
+
void markLedgerInRecovery() {
- close = IN_RECOVERY;
+ state = LedgerMetadataFormat.State.IN_RECOVERY;
}
void close(long entryId) {
- close = entryId;
+ lastEntryId = entryId;
+ state = LedgerMetadataFormat.State.CLOSED;
}
void addEnsemble(long startEntryId, ArrayList<InetSocketAddress> ensemble) {
@@ -144,6 +179,31 @@ public class LedgerMetadata {
* @return the metadata serialized into a byte array
*/
public byte[] serialize() {
+ if (metadataFormatVersion == 1) {
+ return serializeVersion1();
+ }
+ LedgerMetadataFormat.Builder builder = LedgerMetadataFormat.newBuilder();
+ builder.setQuorumSize(quorumSize).setEnsembleSize(ensembleSize).setLength(length)
+ .setState(state).setLastEntryId(lastEntryId);
+ for (Map.Entry<Long, ArrayList<InetSocketAddress>> entry : ensembles.entrySet()) {
+ LedgerMetadataFormat.Segment.Builder segmentBuilder = LedgerMetadataFormat.Segment.newBuilder();
+ segmentBuilder.setFirstEntryId(entry.getKey());
+ for (InetSocketAddress addr : entry.getValue()) {
+ segmentBuilder.addEnsembleMember(addr.getAddress().getHostAddress() + ":" + addr.getPort());
+ }
+ builder.addSegment(segmentBuilder.build());
+ }
+
+ StringBuilder s = new StringBuilder();
+ s.append(VERSION_KEY).append(tSplitter).append(CURRENT_METADATA_FORMAT_VERSION).append(lSplitter);
+ s.append(TextFormat.printToString(builder.build()));
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Serialized config: " + s.toString());
+ }
+ return s.toString().getBytes();
+ }
+
+ private byte[] serializeVersion1() {
StringBuilder s = new StringBuilder();
s.append(VERSION_KEY).append(tSplitter).append(metadataFormatVersion).append(lSplitter);
s.append(quorumSize).append(lSplitter).append(ensembleSize).append(lSplitter).append(length);
@@ -156,8 +216,10 @@ public class LedgerMetadata {
}
}
- if (close != NOTCLOSED) {
- s.append(lSplitter).append(close).append(tSplitter).append(closed);
+ if (state == LedgerMetadataFormat.State.IN_RECOVERY) {
+ s.append(lSplitter).append(IN_RECOVERY).append(tSplitter).append(closed);
+ } else if (state == LedgerMetadataFormat.State.CLOSED) {
+ s.append(lSplitter).append(getLastEntryId()).append(tSplitter).append(closed);
}
if (LOG.isDebugEnabled()) {
@@ -170,7 +232,7 @@ public class LedgerMetadata {
/**
* Parses a given byte array and transforms into a LedgerConfig object
*
- * @param array
+ * @param bytes
* byte array to parse
* @param version
* version of the ledger metadata
@@ -179,47 +241,83 @@ public class LedgerMetadata {
* if the given byte[] cannot be parsed
*/
public static LedgerMetadata parseConfig(byte[] bytes, Version version) throws IOException {
-
LedgerMetadata lc = new LedgerMetadata();
+ lc.version = version;
+
String config = new String(bytes);
if (LOG.isDebugEnabled()) {
LOG.debug("Parsing Config: " + config);
}
-
- String lines[] = config.split(lSplitter);
-
- try {
- int i = 0;
- if (lines[0].startsWith(VERSION_KEY)) {
- String parts[] = lines[0].split(tSplitter);
- lc.metadataFormatVersion = new Integer(parts[1]);
- i++;
- } else {
- lc.metadataFormatVersion = 0;
- }
-
- if (lc.metadataFormatVersion < LOWEST_COMPAT_METADATA_FORMAT_VERSION
- || lc.metadataFormatVersion > CURRENT_METADATA_FORMAT_VERSION) {
- throw new IOException("Metadata version not compatible. Expected between "
- + LOWEST_COMPAT_METADATA_FORMAT_VERSION + " and " + CURRENT_METADATA_FORMAT_VERSION
- + ", but got " + lc.metadataFormatVersion);
- }
- if ((lines.length+i) < 2) {
- throw new IOException("Quorum size or ensemble size absent from config: " + config);
- }
+ BufferedReader reader = new BufferedReader(new StringReader(config));
+ String versionLine = reader.readLine();
+
+ int i = 0;
+ if (versionLine.startsWith(VERSION_KEY)) {
+ String parts[] = versionLine.split(tSplitter);
+ lc.metadataFormatVersion = new Integer(parts[1]);
+ } else {
+ // if no version is set, take it to be version 1
+ // as the parsing is the same as what we had before
+ // we introduce versions
+ lc.metadataFormatVersion = 1;
+ // reset the reader
+ reader.close();
+ reader = new BufferedReader(new StringReader(config));
+ }
+
+ if (lc.metadataFormatVersion < LOWEST_COMPAT_METADATA_FORMAT_VERSION
+ || lc.metadataFormatVersion > CURRENT_METADATA_FORMAT_VERSION) {
+ throw new IOException("Metadata version not compatible. Expected between "
+ + LOWEST_COMPAT_METADATA_FORMAT_VERSION + " and " + CURRENT_METADATA_FORMAT_VERSION
+ + ", but got " + lc.metadataFormatVersion);
+ }
- lc.version = version;
- lc.quorumSize = new Integer(lines[i++]);
- lc.ensembleSize = new Integer(lines[i++]);
- lc.length = new Long(lines[i++]);
+ if (lc.metadataFormatVersion == 1) {
+ return parseVersion1Config(lc, reader);
+ }
+
+ LedgerMetadataFormat.Builder builder = LedgerMetadataFormat.newBuilder();
+ TextFormat.merge(reader, builder);
+ LedgerMetadataFormat data = builder.build();
+ lc.quorumSize = data.getQuorumSize();
+ lc.ensembleSize = data.getEnsembleSize();
+ lc.length = data.getLength();
+ lc.state = data.getState();
+ lc.lastEntryId = data.getLastEntryId();
+
+ for (LedgerMetadataFormat.Segment s : data.getSegmentList()) {
+ ArrayList<InetSocketAddress> addrs = new ArrayList<InetSocketAddress>();
+ for (String member : s.getEnsembleMemberList()) {
+ addrs.add(StringUtils.parseAddr(member));
+ }
+ lc.addEnsemble(s.getFirstEntryId(), addrs);
+ }
+ return lc;
+ }
- for (; i < lines.length; i++) {
- String parts[] = lines[i].split(tSplitter);
+ static LedgerMetadata parseVersion1Config(LedgerMetadata lc,
+ BufferedReader reader) throws IOException {
+ try {
+ lc.quorumSize = new Integer(reader.readLine());
+ lc.ensembleSize = new Integer(reader.readLine());
+ lc.length = new Long(reader.readLine());
+
+ String line = reader.readLine();
+ while (line != null) {
+ String parts[] = line.split(tSplitter);
if (parts[1].equals(closed)) {
- lc.close = new Long(parts[0]);
+ Long l = new Long(parts[0]);
+ if (l == IN_RECOVERY) {
+ lc.state = LedgerMetadataFormat.State.IN_RECOVERY;
+ } else {
+ lc.state = LedgerMetadataFormat.State.CLOSED;
+ lc.lastEntryId = l;
+ }
break;
+ } else {
+ lc.state = LedgerMetadataFormat.State.OPEN;
}
ArrayList<InetSocketAddress> addrs = new ArrayList<InetSocketAddress>();
@@ -227,13 +325,13 @@ public class LedgerMetadata {
addrs.add(StringUtils.parseAddr(parts[j]));
}
lc.addEnsemble(new Long(parts[0]), addrs);
+ line = reader.readLine();
}
} catch (NumberFormatException e) {
throw new IOException(e);
}
return lc;
}
-
/**
* Updates the version of this metadata.
@@ -270,7 +368,11 @@ public class LedgerMetadata {
ensembleSize != newMeta.ensembleSize ||
quorumSize != newMeta.quorumSize ||
length != newMeta.length ||
- close != newMeta.close) {
+ state != newMeta.state) {
+ return false;
+ }
+ if (state == LedgerMetadataFormat.State.CLOSED
+ && lastEntryId != newMeta.lastEntryId) {
return false;
}
// new meta znode version should be larger than old one
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerRecoveryOp.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerRecoveryOp.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerRecoveryOp.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerRecoveryOp.java Wed Jun 27 13:35:11 2012
@@ -57,7 +57,7 @@ class LedgerRecoveryOp implements ReadCa
public LedgerRecoveryOp(LedgerHandle lh, GenericCallback<Void> cb) {
this.cb = cb;
this.lh = lh;
- numResponsesPending = lh.metadata.ensembleSize;
+ numResponsesPending = lh.metadata.getEnsembleSize();
}
public void initiate() {
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingAddOp.java Wed Jun 27 13:35:11 2012
@@ -53,7 +53,7 @@ class PendingAddOp implements WriteCallb
this.ctx = ctx;
this.entryId = LedgerHandle.INVALID_ENTRY_ID;
- successesSoFar = new boolean[lh.metadata.quorumSize];
+ successesSoFar = new boolean[lh.metadata.getQuorumSize()];
numResponsesPending = successesSoFar.length;
}
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingReadOp.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingReadOp.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingReadOp.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/PendingReadOp.java Wed Jun 27 13:35:11 2012
@@ -94,7 +94,7 @@ class PendingReadOp implements Enumerati
}
void sendRead(ArrayList<InetSocketAddress> ensemble, LedgerEntry entry, int lastErrorCode) {
- if (entry.nextReplicaIndexToReadFrom >= lh.metadata.quorumSize) {
+ if (entry.nextReplicaIndexToReadFrom >= lh.metadata.getQuorumSize()) {
// we are done, the read has failed from all replicas, just fail the
// read
lh.opCounterSem.release();
Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadLastConfirmedOp.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadLastConfirmedOp.java?rev=1354492&r1=1354491&r2=1354492&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadLastConfirmedOp.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadLastConfirmedOp.java Wed Jun 27 13:35:11 2012
@@ -51,7 +51,7 @@ class ReadLastConfirmedOp implements Rea
this.cb = cb;
this.maxRecoveredData = new RecoveryData(LedgerHandle.INVALID_ENTRY_ID, 0);
this.lh = lh;
- this.numResponsesPending = lh.metadata.ensembleSize;
+ this.numResponsesPending = lh.metadata.getEnsembleSize();
this.coverageSet = lh.distributionSchedule.getCoverageSet();
}
Added: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java?rev=1354492&view=auto
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java (added)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/DataFormats.java Wed Jun 27 13:35:11 2012
@@ -0,0 +1,1493 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: src/main/proto/DataFormats.proto
+
+package org.apache.bookkeeper.proto;
+
+public final class DataFormats {
+ private DataFormats() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ }
+ public interface LedgerMetadataFormatOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // required int32 quorumSize = 1;
+ boolean hasQuorumSize();
+ int getQuorumSize();
+
+ // required int32 ensembleSize = 2;
+ boolean hasEnsembleSize();
+ int getEnsembleSize();
+
+ // required int64 length = 3;
+ boolean hasLength();
+ long getLength();
+
+ // optional int64 lastEntryId = 4;
+ boolean hasLastEntryId();
+ long getLastEntryId();
+
+ // required .LedgerMetadataFormat.State state = 5 [default = OPEN];
+ boolean hasState();
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State getState();
+
+ // repeated .LedgerMetadataFormat.Segment segment = 6;
+ java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment>
+ getSegmentList();
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getSegment(int index);
+ int getSegmentCount();
+ java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder>
+ getSegmentOrBuilderList();
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder getSegmentOrBuilder(
+ int index);
+ }
+ public static final class LedgerMetadataFormat extends
+ com.google.protobuf.GeneratedMessage
+ implements LedgerMetadataFormatOrBuilder {
+ // Use LedgerMetadataFormat.newBuilder() to construct.
+ private LedgerMetadataFormat(Builder builder) {
+ super(builder);
+ }
+ private LedgerMetadataFormat(boolean noInit) {}
+
+ private static final LedgerMetadataFormat defaultInstance;
+ public static LedgerMetadataFormat getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public LedgerMetadataFormat getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ 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;
+ }
+
+ public enum State
+ implements com.google.protobuf.ProtocolMessageEnum {
+ OPEN(0, 1),
+ IN_RECOVERY(1, 2),
+ CLOSED(2, 3),
+ ;
+
+ public static final int OPEN_VALUE = 1;
+ public static final int IN_RECOVERY_VALUE = 2;
+ 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;
+ case 2: return IN_RECOVERY;
+ case 3: return CLOSED;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<State>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static com.google.protobuf.Internal.EnumLiteMap<State>
+ internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<State>() {
+ public State findValueByNumber(int number) {
+ return State.valueOf(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(index);
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDescriptor().getEnumTypes().get(0);
+ }
+
+ private static final State[] VALUES = {
+ OPEN, IN_RECOVERY, CLOSED,
+ };
+
+ public static State valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int index;
+ private final int value;
+
+ private State(int index, int value) {
+ this.index = index;
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:LedgerMetadataFormat.State)
+ }
+
+ public interface SegmentOrBuilder
+ extends com.google.protobuf.MessageOrBuilder {
+
+ // repeated string ensembleMember = 1;
+ java.util.List<String> getEnsembleMemberList();
+ int getEnsembleMemberCount();
+ String getEnsembleMember(int index);
+
+ // required int64 firstEntryId = 2;
+ boolean hasFirstEntryId();
+ long getFirstEntryId();
+ }
+ public static final class Segment extends
+ com.google.protobuf.GeneratedMessage
+ implements SegmentOrBuilder {
+ // Use Segment.newBuilder() to construct.
+ private Segment(Builder builder) {
+ super(builder);
+ }
+ private Segment(boolean noInit) {}
+
+ private static final Segment defaultInstance;
+ public static Segment getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public Segment getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ 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;
+ }
+
+ 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>
+ getEnsembleMemberList() {
+ return ensembleMember_;
+ }
+ public int getEnsembleMemberCount() {
+ return ensembleMember_.size();
+ }
+ public String getEnsembleMember(int index) {
+ return ensembleMember_.get(index);
+ }
+
+ // required int64 firstEntryId = 2;
+ public static final int FIRSTENTRYID_FIELD_NUMBER = 2;
+ private long firstEntryId_;
+ public boolean hasFirstEntryId() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ public long getFirstEntryId() {
+ return firstEntryId_;
+ }
+
+ private void initFields() {
+ ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ firstEntryId_ = 0L;
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasFirstEntryId()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ for (int i = 0; i < ensembleMember_.size(); i++) {
+ output.writeBytes(1, ensembleMember_.getByteString(i));
+ }
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ output.writeInt64(2, firstEntryId_);
+ }
+ getUnknownFields().writeTo(output);
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ {
+ int dataSize = 0;
+ for (int i = 0; i < ensembleMember_.size(); i++) {
+ dataSize += com.google.protobuf.CodedOutputStream
+ .computeBytesSizeNoTag(ensembleMember_.getByteString(i));
+ }
+ size += dataSize;
+ size += 1 * getEnsembleMemberList().size();
+ }
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(2, firstEntryId_);
+ }
+ size += getUnknownFields().getSerializedSize();
+ 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();
+ }
+ 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();
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ 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();
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ 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();
+ }
+ 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;
+ }
+ }
+ 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;
+ }
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ 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();
+ }
+
+ 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;
+ }
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements 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;
+ }
+
+ // Construct using org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ firstEntryId_ = 0L;
+ 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();
+ }
+
+ 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()) {
+ throw newUninitializedMessageException(result);
+ }
+ 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_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.ensembleMember_ = ensembleMember_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.firstEntryId_ = firstEntryId_;
+ result.bitField0_ = to_bitField0_;
+ 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);
+ } else {
+ super.mergeFrom(other);
+ 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()) {
+ if (ensembleMember_.isEmpty()) {
+ ensembleMember_ = other.ensembleMember_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureEnsembleMemberIsMutable();
+ ensembleMember_.addAll(other.ensembleMember_);
+ }
+ onChanged();
+ }
+ if (other.hasFirstEntryId()) {
+ setFirstEntryId(other.getFirstEntryId());
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasFirstEntryId()) {
+
+ return false;
+ }
+ 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;
+ }
+ }
+ }
+ }
+
+ 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)) {
+ ensembleMember_ = new com.google.protobuf.LazyStringArrayList(ensembleMember_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+ public java.util.List<String>
+ getEnsembleMemberList() {
+ return java.util.Collections.unmodifiableList(ensembleMember_);
+ }
+ public int getEnsembleMemberCount() {
+ return ensembleMember_.size();
+ }
+ public String getEnsembleMember(int index) {
+ return ensembleMember_.get(index);
+ }
+ public Builder setEnsembleMember(
+ int index, String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEnsembleMemberIsMutable();
+ ensembleMember_.set(index, value);
+ onChanged();
+ return this;
+ }
+ public Builder addEnsembleMember(String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEnsembleMemberIsMutable();
+ ensembleMember_.add(value);
+ onChanged();
+ return this;
+ }
+ public Builder addAllEnsembleMember(
+ java.lang.Iterable<String> values) {
+ ensureEnsembleMemberIsMutable();
+ super.addAll(values, ensembleMember_);
+ onChanged();
+ return this;
+ }
+ public Builder clearEnsembleMember() {
+ ensembleMember_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ return this;
+ }
+ void addEnsembleMember(com.google.protobuf.ByteString value) {
+ ensureEnsembleMemberIsMutable();
+ ensembleMember_.add(value);
+ onChanged();
+ }
+
+ // required int64 firstEntryId = 2;
+ private long firstEntryId_ ;
+ public boolean hasFirstEntryId() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ public long getFirstEntryId() {
+ return firstEntryId_;
+ }
+ public Builder setFirstEntryId(long value) {
+ bitField0_ |= 0x00000002;
+ firstEntryId_ = value;
+ onChanged();
+ return this;
+ }
+ 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)
+ }
+
+ private int bitField0_;
+ // required int32 quorumSize = 1;
+ public static final int QUORUMSIZE_FIELD_NUMBER = 1;
+ private int quorumSize_;
+ public boolean hasQuorumSize() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ public int getQuorumSize() {
+ return quorumSize_;
+ }
+
+ // required int32 ensembleSize = 2;
+ public static final int ENSEMBLESIZE_FIELD_NUMBER = 2;
+ private int ensembleSize_;
+ public boolean hasEnsembleSize() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ public int getEnsembleSize() {
+ return ensembleSize_;
+ }
+
+ // required int64 length = 3;
+ public static final int LENGTH_FIELD_NUMBER = 3;
+ private long length_;
+ public boolean hasLength() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ public long getLength() {
+ return length_;
+ }
+
+ // optional int64 lastEntryId = 4;
+ public static final int LASTENTRYID_FIELD_NUMBER = 4;
+ private long lastEntryId_;
+ public boolean hasLastEntryId() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ 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_;
+ public boolean hasState() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ 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_;
+ public java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> getSegmentList() {
+ return segment_;
+ }
+ public java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder>
+ getSegmentOrBuilderList() {
+ return segment_;
+ }
+ public int getSegmentCount() {
+ return segment_.size();
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getSegment(int index) {
+ return segment_.get(index);
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder getSegmentOrBuilder(
+ int index) {
+ return segment_.get(index);
+ }
+
+ private void initFields() {
+ quorumSize_ = 0;
+ ensembleSize_ = 0;
+ length_ = 0L;
+ lastEntryId_ = 0L;
+ state_ = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State.OPEN;
+ segment_ = java.util.Collections.emptyList();
+ }
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized != -1) return isInitialized == 1;
+
+ if (!hasQuorumSize()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasEnsembleSize()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasLength()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ if (!hasState()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ for (int i = 0; i < getSegmentCount(); i++) {
+ if (!getSegment(i).isInitialized()) {
+ memoizedIsInitialized = 0;
+ return false;
+ }
+ }
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ output.writeInt32(1, quorumSize_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ output.writeInt32(2, ensembleSize_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ output.writeInt64(3, length_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeInt64(4, lastEntryId_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeEnum(5, state_.getNumber());
+ }
+ for (int i = 0; i < segment_.size(); i++) {
+ output.writeMessage(6, segment_.get(i));
+ }
+ 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
+ .computeInt32Size(1, quorumSize_);
+ }
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(2, ensembleSize_);
+ }
+ if (((bitField0_ & 0x00000004) == 0x00000004)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(3, length_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt64Size(4, lastEntryId_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(5, state_.getNumber());
+ }
+ for (int i = 0; i < segment_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(6, segment_.get(i));
+ }
+ size += getUnknownFields().getSerializedSize();
+ 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();
+ }
+ 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();
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ 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();
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ 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();
+ }
+ 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;
+ }
+ }
+ 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;
+ }
+ }
+ public static org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ 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();
+ }
+
+ 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;
+ }
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessage.Builder<Builder>
+ implements 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;
+ }
+
+ // Construct using org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+ getSegmentFieldBuilder();
+ }
+ }
+ private static Builder create() {
+ return new Builder();
+ }
+
+ public Builder clear() {
+ super.clear();
+ quorumSize_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ ensembleSize_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ length_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000004);
+ lastEntryId_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000008);
+ state_ = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State.OPEN;
+ bitField0_ = (bitField0_ & ~0x00000010);
+ if (segmentBuilder_ == null) {
+ segment_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000020);
+ } else {
+ segmentBuilder_.clear();
+ }
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(buildPartial());
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.getDescriptor();
+ }
+
+ 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()) {
+ throw newUninitializedMessageException(result);
+ }
+ 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_;
+ int to_bitField0_ = 0;
+ if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+ to_bitField0_ |= 0x00000001;
+ }
+ result.quorumSize_ = quorumSize_;
+ if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+ to_bitField0_ |= 0x00000002;
+ }
+ result.ensembleSize_ = ensembleSize_;
+ if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+ to_bitField0_ |= 0x00000004;
+ }
+ result.length_ = length_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.lastEntryId_ = lastEntryId_;
+ if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.state_ = state_;
+ if (segmentBuilder_ == null) {
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ segment_ = java.util.Collections.unmodifiableList(segment_);
+ bitField0_ = (bitField0_ & ~0x00000020);
+ }
+ result.segment_ = segment_;
+ } else {
+ result.segment_ = segmentBuilder_.build();
+ }
+ result.bitField0_ = to_bitField0_;
+ 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);
+ } else {
+ super.mergeFrom(other);
+ 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()) {
+ setQuorumSize(other.getQuorumSize());
+ }
+ if (other.hasEnsembleSize()) {
+ setEnsembleSize(other.getEnsembleSize());
+ }
+ if (other.hasLength()) {
+ setLength(other.getLength());
+ }
+ if (other.hasLastEntryId()) {
+ setLastEntryId(other.getLastEntryId());
+ }
+ if (other.hasState()) {
+ setState(other.getState());
+ }
+ if (segmentBuilder_ == null) {
+ if (!other.segment_.isEmpty()) {
+ if (segment_.isEmpty()) {
+ segment_ = other.segment_;
+ bitField0_ = (bitField0_ & ~0x00000020);
+ } else {
+ ensureSegmentIsMutable();
+ segment_.addAll(other.segment_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.segment_.isEmpty()) {
+ if (segmentBuilder_.isEmpty()) {
+ segmentBuilder_.dispose();
+ segmentBuilder_ = null;
+ segment_ = other.segment_;
+ bitField0_ = (bitField0_ & ~0x00000020);
+ segmentBuilder_ =
+ com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
+ getSegmentFieldBuilder() : null;
+ } else {
+ segmentBuilder_.addAllMessages(other.segment_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.getUnknownFields());
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ if (!hasQuorumSize()) {
+
+ return false;
+ }
+ if (!hasEnsembleSize()) {
+
+ return false;
+ }
+ if (!hasLength()) {
+
+ return false;
+ }
+ if (!hasState()) {
+
+ return false;
+ }
+ for (int i = 0; i < getSegmentCount(); i++) {
+ if (!getSegment(i).isInitialized()) {
+
+ return false;
+ }
+ }
+ 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: {
+ 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: {
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder subBuilder = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.newBuilder();
+ input.readMessage(subBuilder, extensionRegistry);
+ addSegment(subBuilder.buildPartial());
+ break;
+ }
+ }
+ }
+ }
+
+ private int bitField0_;
+
+ // required int32 quorumSize = 1;
+ private int quorumSize_ ;
+ public boolean hasQuorumSize() {
+ return ((bitField0_ & 0x00000001) == 0x00000001);
+ }
+ public int getQuorumSize() {
+ return quorumSize_;
+ }
+ public Builder setQuorumSize(int value) {
+ bitField0_ |= 0x00000001;
+ quorumSize_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearQuorumSize() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ quorumSize_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int32 ensembleSize = 2;
+ private int ensembleSize_ ;
+ public boolean hasEnsembleSize() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ public int getEnsembleSize() {
+ return ensembleSize_;
+ }
+ public Builder setEnsembleSize(int value) {
+ bitField0_ |= 0x00000002;
+ ensembleSize_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearEnsembleSize() {
+ bitField0_ = (bitField0_ & ~0x00000002);
+ ensembleSize_ = 0;
+ onChanged();
+ return this;
+ }
+
+ // required int64 length = 3;
+ private long length_ ;
+ public boolean hasLength() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ public long getLength() {
+ return length_;
+ }
+ public Builder setLength(long value) {
+ bitField0_ |= 0x00000004;
+ length_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearLength() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ length_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // optional int64 lastEntryId = 4;
+ private long lastEntryId_ ;
+ public boolean hasLastEntryId() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ public long getLastEntryId() {
+ return lastEntryId_;
+ }
+ public Builder setLastEntryId(long value) {
+ bitField0_ |= 0x00000008;
+ lastEntryId_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearLastEntryId() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ lastEntryId_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // required .LedgerMetadataFormat.State state = 5 [default = OPEN];
+ private org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State state_ = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State.OPEN;
+ public boolean hasState() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State getState() {
+ return state_;
+ }
+ public Builder setState(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000010;
+ state_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearState() {
+ bitField0_ = (bitField0_ & ~0x00000010);
+ state_ = org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.State.OPEN;
+ onChanged();
+ return this;
+ }
+
+ // repeated .LedgerMetadataFormat.Segment segment = 6;
+ private java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> segment_ =
+ java.util.Collections.emptyList();
+ private void ensureSegmentIsMutable() {
+ if (!((bitField0_ & 0x00000020) == 0x00000020)) {
+ segment_ = new java.util.ArrayList<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment>(segment_);
+ bitField0_ |= 0x00000020;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder> segmentBuilder_;
+
+ public java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> getSegmentList() {
+ if (segmentBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(segment_);
+ } else {
+ return segmentBuilder_.getMessageList();
+ }
+ }
+ public int getSegmentCount() {
+ if (segmentBuilder_ == null) {
+ return segment_.size();
+ } else {
+ return segmentBuilder_.getCount();
+ }
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment getSegment(int index) {
+ if (segmentBuilder_ == null) {
+ return segment_.get(index);
+ } else {
+ return segmentBuilder_.getMessage(index);
+ }
+ }
+ public Builder setSegment(
+ int index, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment value) {
+ if (segmentBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentIsMutable();
+ segment_.set(index, value);
+ onChanged();
+ } else {
+ segmentBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ public Builder setSegment(
+ int index, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder builderForValue) {
+ if (segmentBuilder_ == null) {
+ ensureSegmentIsMutable();
+ segment_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ segmentBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addSegment(org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment value) {
+ if (segmentBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentIsMutable();
+ segment_.add(value);
+ onChanged();
+ } else {
+ segmentBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ public Builder addSegment(
+ int index, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment value) {
+ if (segmentBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentIsMutable();
+ segment_.add(index, value);
+ onChanged();
+ } else {
+ segmentBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ public Builder addSegment(
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder builderForValue) {
+ if (segmentBuilder_ == null) {
+ ensureSegmentIsMutable();
+ segment_.add(builderForValue.build());
+ onChanged();
+ } else {
+ segmentBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addSegment(
+ int index, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder builderForValue) {
+ if (segmentBuilder_ == null) {
+ ensureSegmentIsMutable();
+ segment_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ segmentBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ public Builder addAllSegment(
+ java.lang.Iterable<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment> values) {
+ if (segmentBuilder_ == null) {
+ ensureSegmentIsMutable();
+ super.addAll(values, segment_);
+ onChanged();
+ } else {
+ segmentBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ public Builder clearSegment() {
+ if (segmentBuilder_ == null) {
+ segment_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000020);
+ onChanged();
+ } else {
+ segmentBuilder_.clear();
+ }
+ return this;
+ }
+ public Builder removeSegment(int index) {
+ if (segmentBuilder_ == null) {
+ ensureSegmentIsMutable();
+ segment_.remove(index);
+ onChanged();
+ } else {
+ segmentBuilder_.remove(index);
+ }
+ return this;
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder getSegmentBuilder(
+ int index) {
+ return getSegmentFieldBuilder().getBuilder(index);
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder getSegmentOrBuilder(
+ int index) {
+ if (segmentBuilder_ == null) {
+ return segment_.get(index); } else {
+ return segmentBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ public java.util.List<? extends org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder>
+ getSegmentOrBuilderList() {
+ if (segmentBuilder_ != null) {
+ return segmentBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(segment_);
+ }
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder addSegmentBuilder() {
+ return getSegmentFieldBuilder().addBuilder(
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.getDefaultInstance());
+ }
+ public org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder addSegmentBuilder(
+ int index) {
+ return getSegmentFieldBuilder().addBuilder(
+ index, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.getDefaultInstance());
+ }
+ public java.util.List<org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder>
+ getSegmentBuilderList() {
+ return getSegmentFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder>
+ getSegmentFieldBuilder() {
+ if (segmentBuilder_ == null) {
+ segmentBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder, org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.SegmentOrBuilder>(
+ segment_,
+ ((bitField0_ & 0x00000020) == 0x00000020),
+ getParentForChildren(),
+ isClean());
+ segment_ = null;
+ }
+ return segmentBuilder_;
+ }
+
+ // @@protoc_insertion_point(builder_scope:LedgerMetadataFormat)
+ }
+
+ static {
+ defaultInstance = new LedgerMetadataFormat(true);
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:LedgerMetadataFormat)
+ }
+
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_LedgerMetadataFormat_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_LedgerMetadataFormat_fieldAccessorTable;
+ private static com.google.protobuf.Descriptors.Descriptor
+ internal_static_LedgerMetadataFormat_Segment_descriptor;
+ private static
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable
+ internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n src/main/proto/DataFormats.proto\"\260\002\n\024L" +
+ "edgerMetadataFormat\022\022\n\nquorumSize\030\001 \002(\005\022" +
+ "\024\n\014ensembleSize\030\002 \002(\005\022\016\n\006length\030\003 \002(\003\022\023\n" +
+ "\013lastEntryId\030\004 \001(\003\0220\n\005state\030\005 \002(\0162\033.Ledg" +
+ "erMetadataFormat.State:\004OPEN\022.\n\007segment\030" +
+ "\006 \003(\0132\035.LedgerMetadataFormat.Segment\0327\n\007" +
+ "Segment\022\026\n\016ensembleMember\030\001 \003(\t\022\024\n\014first" +
+ "EntryId\030\002 \002(\003\".\n\005State\022\010\n\004OPEN\020\001\022\017\n\013IN_R" +
+ "ECOVERY\020\002\022\n\n\006CLOSED\020\003B\037\n\033org.apache.book" +
+ "keeper.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;
+ internal_static_LedgerMetadataFormat_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_LedgerMetadataFormat_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_LedgerMetadataFormat_descriptor,
+ new java.lang.String[] { "QuorumSize", "EnsembleSize", "Length", "LastEntryId", "State", "Segment", },
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.class,
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Builder.class);
+ internal_static_LedgerMetadataFormat_Segment_descriptor =
+ internal_static_LedgerMetadataFormat_descriptor.getNestedTypes().get(0);
+ internal_static_LedgerMetadataFormat_Segment_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+ internal_static_LedgerMetadataFormat_Segment_descriptor,
+ new java.lang.String[] { "EnsembleMember", "FirstEntryId", },
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.class,
+ org.apache.bookkeeper.proto.DataFormats.LedgerMetadataFormat.Segment.Builder.class);
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ }, assigner);
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
Added: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/DataFormats.proto
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/DataFormats.proto?rev=1354492&view=auto
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/DataFormats.proto (added)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/proto/DataFormats.proto Wed Jun 27 13:35:11 2012
@@ -0,0 +1,42 @@
+/**
+ * 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.
+ */
+
+option java_package = "org.apache.bookkeeper.proto";
+option optimize_for = SPEED;
+
+/**
+* Metadata format for storing ledger information
+*/
+message LedgerMetadataFormat {
+ required int32 quorumSize = 1;
+ required int32 ensembleSize = 2;
+ required int64 length = 3;
+ optional int64 lastEntryId = 4;
+
+ enum State {
+ OPEN = 1;
+ IN_RECOVERY = 2;
+ CLOSED = 3;
+ }
+ required State state = 5 [default = OPEN];
+
+ message Segment {
+ repeated string ensembleMember = 1;
+ required int64 firstEntryId = 2;
+ }
+ repeated Segment segment = 6;
+}
\ No newline at end of file