This is an automated email from the ASF dual-hosted git repository.
ivank pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 130cccb LedgerManager should return the metadata just written
130cccb is described below
commit 130cccba2b218e965660ddd3266af30aeed56d0f
Author: Ivan Kelly <[email protected]>
AuthorDate: Tue Jul 31 12:50:50 2018 +0200
LedgerManager should return the metadata just written
First part of changes to make ledger metadata immutable. The client
should only act on metadata which has been written to zookeeper. To
this end, we need to be able to get back from the ledger manager what
has been written to zookeeper (with the version number updated).
Master issue: #281
Author: Ivan Kelly <[email protected]>
Reviewers: Enrico Olivelli <[email protected]>
This closes #1573 from ivankelly/ledger-manager-returns-ledgermeta
---
.../apache/bookkeeper/client/LedgerCreateOp.java | 4 +--
.../client/LedgerFragmentReplicator.java | 4 +--
.../org/apache/bookkeeper/client/LedgerHandle.java | 14 ++++-----
.../apache/bookkeeper/client/UpdateLedgerOp.java | 4 +--
.../bookkeeper/meta/AbstractZkLedgerManager.java | 8 ++---
.../bookkeeper/meta/CleanupLedgerManager.java | 8 ++---
.../org/apache/bookkeeper/meta/LedgerManager.java | 10 ++++---
.../bookkeeper/meta/MSLedgerManagerFactory.java | 8 ++---
.../apache/bookkeeper/bookie/CompactionTest.java | 5 ++--
.../client/ParallelLedgerRecoveryTest.java | 8 ++---
.../apache/bookkeeper/client/TestSequenceRead.java | 4 +--
.../bookkeeper/client/TestWatchEnsembleChange.java | 4 +--
.../meta/AbstractZkLedgerManagerTest.java | 14 ++++-----
.../org/apache/bookkeeper/meta/GcLedgersTest.java | 5 ++--
.../bookkeeper/meta/LedgerManagerIteratorTest.java | 34 ++++++++++++++++++++--
.../AuditorPeriodicBookieCheckTest.java | 3 +-
.../bookkeeper/server/http/TestHttpService.java | 3 +-
17 files changed, 88 insertions(+), 52 deletions(-)
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
index 9362b6a..213f941 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerCreateOp.java
@@ -55,7 +55,7 @@ import org.slf4j.LoggerFactory;
* Encapsulates asynchronous ledger create operation.
*
*/
-class LedgerCreateOp implements GenericCallback<Void> {
+class LedgerCreateOp implements GenericCallback<LedgerMetadata> {
static final Logger LOG = LoggerFactory.getLogger(LedgerCreateOp.class);
@@ -189,7 +189,7 @@ class LedgerCreateOp implements GenericCallback<Void> {
* Callback when created ledger.
*/
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata writtenMetadata) {
if (this.generateLedgerId && (BKException.Code.LedgerExistException ==
rc)) {
// retry to generate a new ledger id
generateLedgerIdAndCreateLedger();
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java
index c051437..c1440b7 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java
@@ -395,7 +395,7 @@ public class LedgerFragmentReplicator {
* MetadataVersionException and update ensemble again. On successfull
* updation, it will also notify to super call back
*/
- private static class UpdateEnsembleCb implements GenericCallback<Void> {
+ private static class UpdateEnsembleCb implements
GenericCallback<LedgerMetadata> {
final AsyncCallback.VoidCallback ensembleUpdatedCb;
final LedgerHandle lh;
final long fragmentStartId;
@@ -411,7 +411,7 @@ public class LedgerFragmentReplicator {
}
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata writtenMetadata) {
if (rc == BKException.Code.MetadataVersionException) {
LOG.warn("Two fragments attempted update at once; ledger id: "
+ lh.getId() + " startid: " + fragmentStartId);
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
index a79a01e..3a610df 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerHandle.java
@@ -423,7 +423,7 @@ public class LedgerHandle implements WriteHandle {
return bookiesHealthInfo;
}
- void writeLedgerConfig(GenericCallback<Void> writeCb) {
+ void writeLedgerConfig(GenericCallback<LedgerMetadata> writeCb) {
if (LOG.isDebugEnabled()) {
LOG.debug("Writing metadata to ledger manager: {}, {}",
this.ledgerId, metadata.getVersion());
}
@@ -560,13 +560,13 @@ public class LedgerHandle implements WriteHandle {
+ metadata.getLastEntryId() + " with this many
bytes: " + metadata.getLength());
}
- final class CloseCb extends OrderedGenericCallback<Void> {
+ final class CloseCb extends
OrderedGenericCallback<LedgerMetadata> {
CloseCb() {
super(bk.getMainWorkerPool(), ledgerId);
}
@Override
- public void safeOperationComplete(final int rc, Void
result) {
+ public void safeOperationComplete(final int rc,
LedgerMetadata writtenMetadata) {
if (rc == BKException.Code.MetadataVersionException) {
rereadMetadata(new
OrderedGenericCallback<LedgerMetadata>(bk.getMainWorkerPool(),
ledgerId) {
@@ -1974,7 +1974,7 @@ public class LedgerHandle implements WriteHandle {
* reformed ensemble. On MetadataVersionException, will reread latest
* ledgerMetadata and act upon.
*/
- private final class ChangeEnsembleCb extends OrderedGenericCallback<Void> {
+ private final class ChangeEnsembleCb extends
OrderedGenericCallback<LedgerMetadata> {
private final EnsembleInfo ensembleInfo;
private final int curBlockAddCompletions;
private final int ensembleChangeIdx;
@@ -1992,7 +1992,7 @@ public class LedgerHandle implements WriteHandle {
}
@Override
- public void safeOperationComplete(final int rc, Void result) {
+ public void safeOperationComplete(final int rc, LedgerMetadata
writtenMetadata) {
if (rc == BKException.Code.MetadataVersionException) {
// We changed the ensemble, but got a version exception. We
// should still consider this as an ensemble change
@@ -2300,9 +2300,9 @@ public class LedgerHandle implements WriteHandle {
return;
}
- writeLedgerConfig(new
OrderedGenericCallback<Void>(bk.getMainWorkerPool(), ledgerId) {
+ writeLedgerConfig(new
OrderedGenericCallback<LedgerMetadata>(bk.getMainWorkerPool(), ledgerId) {
@Override
- public void safeOperationComplete(final int rc, Void result) {
+ public void safeOperationComplete(final int rc, LedgerMetadata
writtenMetadata) {
if (rc == BKException.Code.MetadataVersionException) {
rereadMetadata(new
OrderedGenericCallback<LedgerMetadata>(bk.getMainWorkerPool(),
ledgerId) {
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/UpdateLedgerOp.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/UpdateLedgerOp.java
index e4b2357..d0281c7 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/UpdateLedgerOp.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/UpdateLedgerOp.java
@@ -232,9 +232,9 @@ public class UpdateLedgerOp {
future.set(null);
return; // ledger doesn't contains the given curBookieId
}
- final GenericCallback<Void> writeCb = new GenericCallback<Void>() {
+ final GenericCallback<LedgerMetadata> writeCb = new
GenericCallback<LedgerMetadata>() {
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata result) {
if (rc != BKException.Code.OK) {
// metadata update failed
LOG.error("Ledger {} metadata update failed. Error
code {}", ledgerId, rc);
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
index dbddfc1..ccfbb52 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
@@ -245,7 +245,7 @@ public abstract class AbstractZkLedgerManager implements
LedgerManager, Watcher
@Override
public void createLedgerMetadata(final long ledgerId, final LedgerMetadata
metadata,
- final GenericCallback<Void> ledgerCb) {
+ final GenericCallback<LedgerMetadata> ledgerCb) {
String ledgerPath = getLedgerPath(ledgerId);
StringCallback scb = new StringCallback() {
@Override
@@ -253,7 +253,7 @@ public abstract class AbstractZkLedgerManager implements
LedgerManager, Watcher
if (rc == Code.OK.intValue()) {
// update version
metadata.setVersion(new LongVersion(0));
- ledgerCb.operationComplete(BKException.Code.OK, null);
+ ledgerCb.operationComplete(BKException.Code.OK, metadata);
} else if (rc == Code.NODEEXISTS.intValue()) {
LOG.warn("Failed to create ledger metadata for {} which
already exist", ledgerId);
ledgerCb.operationComplete(BKException.Code.LedgerExistException, null);
@@ -425,7 +425,7 @@ public abstract class AbstractZkLedgerManager implements
LedgerManager, Watcher
@Override
public void writeLedgerMetadata(final long ledgerId, final LedgerMetadata
metadata,
- final GenericCallback<Void> cb) {
+ final GenericCallback<LedgerMetadata> cb) {
Version v = metadata.getVersion();
if (!(v instanceof LongVersion)) {
cb.operationComplete(BKException.Code.MetadataVersionException,
null);
@@ -442,7 +442,7 @@ public abstract class AbstractZkLedgerManager implements
LedgerManager, Watcher
} else if (KeeperException.Code.OK.intValue() == rc) {
// update metadata version
metadata.setVersion(zv.setLongVersion(stat.getVersion()));
- cb.operationComplete(BKException.Code.OK, null);
+ cb.operationComplete(BKException.Code.OK, metadata);
} else if (KeeperException.Code.NONODE.intValue() == rc) {
LOG.warn("Ledger node does not exist in ZooKeeper:
ledgerId={}", ledgerId);
cb.operationComplete(BKException.Code.NoSuchLedgerExistsException, null);
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
index 3b71a02..36f9d8c 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/CleanupLedgerManager.java
@@ -109,14 +109,14 @@ public class CleanupLedgerManager implements
LedgerManager {
@Override
public void createLedgerMetadata(long lid, LedgerMetadata metadata,
- GenericCallback<Void> cb) {
+ GenericCallback<LedgerMetadata> cb) {
closeLock.readLock().lock();
try {
if (closed) {
cb.operationComplete(BKException.Code.ClientClosedException,
null);
return;
}
- underlying.createLedgerMetadata(lid, metadata, new
CleanupGenericCallback<Void>(cb));
+ underlying.createLedgerMetadata(lid, metadata, new
CleanupGenericCallback<LedgerMetadata>(cb));
} finally {
closeLock.readLock().unlock();
}
@@ -155,7 +155,7 @@ public class CleanupLedgerManager implements LedgerManager {
@Override
public void writeLedgerMetadata(long ledgerId, LedgerMetadata metadata,
- GenericCallback<Void> cb) {
+ GenericCallback<LedgerMetadata> cb) {
closeLock.readLock().lock();
try {
if (closed) {
@@ -163,7 +163,7 @@ public class CleanupLedgerManager implements LedgerManager {
return;
}
underlying.writeLedgerMetadata(ledgerId, metadata,
- new CleanupGenericCallback<Void>(cb));
+ new CleanupGenericCallback<LedgerMetadata>(cb));
} finally {
closeLock.readLock().unlock();
}
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManager.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManager.java
index 6b56a3e..84b9cb6 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManager.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/LedgerManager.java
@@ -47,14 +47,15 @@ public interface LedgerManager extends Closeable {
* @param metadata
* Metadata provided when creating the new ledger
* @param cb
- * Callback when creating a new ledger. Return code:<ul>
+ * Callback when creating a new ledger, returning the written
metadata.
+ * Return code:<ul>
* <li>{@link BKException.Code.OK} if success</li>
* <li>{@link BKException.Code.LedgerExistException} if given
ledger id exist</li>
* <li>{@link BKException.Code.ZKException}/{@link
BKException.Code.MetaStoreException}
* for other issue</li>
* </ul>
*/
- void createLedgerMetadata(long ledgerId, LedgerMetadata metadata,
GenericCallback<Void> cb);
+ void createLedgerMetadata(long ledgerId, LedgerMetadata metadata,
GenericCallback<LedgerMetadata> cb);
/**
* Remove a specified ledger metadata by ledgerId and version.
@@ -95,13 +96,14 @@ public interface LedgerManager extends Closeable {
* @param metadata
* Ledger Metadata to write
* @param cb
- * Callback when finished writing ledger metadata. Return
code:<ul>
+ * Callback when finished writing ledger metadata, returning the
written metadata.
+ * Return code:<ul>
* <li>{@link BKException.Code.OK} if success</li>
* <li>{@link BKException.Code.MetadataVersionException} if
version in metadata doesn't match</li>
* <li>{@link BKException.Code.ZKException} for other issue</li>
* </ul>
*/
- void writeLedgerMetadata(long ledgerId, LedgerMetadata metadata,
GenericCallback<Void> cb);
+ void writeLedgerMetadata(long ledgerId, LedgerMetadata metadata,
GenericCallback<LedgerMetadata> cb);
/**
* Register the ledger metadata <i>listener</i> on <i>ledgerId</i>.
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
index 7bcd81d..5b28a0b 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/MSLedgerManagerFactory.java
@@ -376,7 +376,7 @@ public class MSLedgerManagerFactory extends
AbstractZkLedgerManagerFactory {
@Override
public void createLedgerMetadata(final long lid, final LedgerMetadata
metadata,
- final GenericCallback<Void> ledgerCb)
{
+ final GenericCallback<LedgerMetadata>
ledgerCb) {
MetastoreCallback<Version> msCallback = new
MetastoreCallback<Version>() {
@Override
public void complete(int rc, Version version, Object ctx) {
@@ -393,7 +393,7 @@ public class MSLedgerManagerFactory extends
AbstractZkLedgerManagerFactory {
}
// update version
metadata.setVersion(version);
- ledgerCb.operationComplete(BKException.Code.OK, null);
+ ledgerCb.operationComplete(BKException.Code.OK, metadata);
}
};
@@ -457,7 +457,7 @@ public class MSLedgerManagerFactory extends
AbstractZkLedgerManagerFactory {
@Override
public void writeLedgerMetadata(final long ledgerId, final
LedgerMetadata metadata,
- final GenericCallback<Void> cb) {
+ final GenericCallback<LedgerMetadata> cb) {
Value data = new Value().setField(META_FIELD,
metadata.serialize());
if (LOG.isDebugEnabled()) {
@@ -484,7 +484,7 @@ public class MSLedgerManagerFactory extends
AbstractZkLedgerManagerFactory {
bkRc = BKException.Code.MetaStoreException;
}
- cb.operationComplete(bkRc, null);
+ cb.operationComplete(bkRc, metadata);
}
};
ledgerTable.put(key, data, metadata.getVersion(), msCallback,
null);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CompactionTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CompactionTest.java
index b3937ca..dbf09d9 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CompactionTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CompactionTest.java
@@ -917,7 +917,8 @@ public abstract class CompactionTest extends
BookKeeperClusterTestCase {
private LedgerManager getLedgerManager(final Set<Long> ledgers) {
LedgerManager manager = new LedgerManager() {
@Override
- public void createLedgerMetadata(long lid, LedgerMetadata
metadata, GenericCallback<Void> cb) {
+ public void createLedgerMetadata(long lid, LedgerMetadata
metadata,
+
GenericCallback<LedgerMetadata> cb) {
unsupported();
}
@Override
@@ -931,7 +932,7 @@ public abstract class CompactionTest extends
BookKeeperClusterTestCase {
}
@Override
public void writeLedgerMetadata(long ledgerId, LedgerMetadata
metadata,
- GenericCallback<Void> cb) {
+ GenericCallback<LedgerMetadata> cb) {
unsupported();
}
@Override
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/ParallelLedgerRecoveryTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/ParallelLedgerRecoveryTest.java
index b21386b..f31feef 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/ParallelLedgerRecoveryTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/ParallelLedgerRecoveryTest.java
@@ -93,7 +93,7 @@ public class ParallelLedgerRecoveryTest extends
BookKeeperClusterTestCase {
}
@Override
- public void createLedgerMetadata(long ledgerId, LedgerMetadata
metadata, GenericCallback<Void> cb) {
+ public void createLedgerMetadata(long ledgerId, LedgerMetadata
metadata, GenericCallback<LedgerMetadata> cb) {
lm.createLedgerMetadata(ledgerId, metadata, cb);
}
@@ -114,7 +114,7 @@ public class ParallelLedgerRecoveryTest extends
BookKeeperClusterTestCase {
@Override
public void writeLedgerMetadata(final long ledgerId, final
LedgerMetadata metadata,
- final GenericCallback<Void> cb) {
+ final GenericCallback<LedgerMetadata>
cb) {
final CountDownLatch cdl = waitLatch;
if (null != cdl) {
executorService.submit(new Runnable() {
@@ -368,9 +368,9 @@ public class ParallelLedgerRecoveryTest extends
BookKeeperClusterTestCase {
newRecoverLh.getLedgerMetadata().markLedgerInRecovery();
final CountDownLatch updateLatch = new CountDownLatch(1);
final AtomicInteger updateResult = new AtomicInteger(0x12345);
- newRecoverLh.writeLedgerConfig(new GenericCallback<Void>() {
+ newRecoverLh.writeLedgerConfig(new
GenericCallback<LedgerMetadata>() {
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata
result) {
updateResult.set(rc);
updateLatch.countDown();
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestSequenceRead.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestSequenceRead.java
index ecf813e..50c24bf 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestSequenceRead.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestSequenceRead.java
@@ -68,9 +68,9 @@ public class TestSequenceRead extends
BookKeeperClusterTestCase {
// update the ledger metadata with duplicated bookies
final CountDownLatch latch = new CountDownLatch(1);
bkc.getLedgerManager().writeLedgerMetadata(lh.getId(),
lh.getLedgerMetadata(),
- new BookkeeperInternalCallbacks.GenericCallback<Void>() {
+ new
BookkeeperInternalCallbacks.GenericCallback<LedgerMetadata>() {
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata result) {
if (BKException.Code.OK == rc) {
latch.countDown();
} else {
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestWatchEnsembleChange.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestWatchEnsembleChange.java
index 212c29a..a729139 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestWatchEnsembleChange.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/TestWatchEnsembleChange.java
@@ -134,10 +134,10 @@ public class TestWatchEnsembleChange extends
BookKeeperClusterTestCase {
@Override
public void operationComplete(int rc, final Long lid) {
manager.createLedgerMetadata(lid, new LedgerMetadata(4, 2, 2,
digestType, "fpj was here".getBytes()),
- new
BookkeeperInternalCallbacks.GenericCallback<Void>(){
+ new
BookkeeperInternalCallbacks.GenericCallback<LedgerMetadata>(){
@Override
- public void operationComplete(int rc, Void result) {
+ public void operationComplete(int rc, LedgerMetadata
result) {
bbLedgerId.putLong(lid);
bbLedgerId.flip();
createLatch.countDown();
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/AbstractZkLedgerManagerTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/AbstractZkLedgerManagerTest.java
index 39cbfaa..0066f99 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/AbstractZkLedgerManagerTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/AbstractZkLedgerManagerTest.java
@@ -156,7 +156,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(Version.NEW, metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.createLedgerMetadata(ledgerId, metadata, callbackFuture);
callbackFuture.get();
@@ -173,7 +173,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(Version.NEW, metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.createLedgerMetadata(ledgerId, metadata, callbackFuture);
try {
result(callbackFuture);
@@ -198,7 +198,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(Version.NEW, metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.createLedgerMetadata(ledgerId, metadata, callbackFuture);
try {
result(callbackFuture);
@@ -479,7 +479,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(new LongVersion(1234L), metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.writeLedgerMetadata(ledgerId, metadata, callbackFuture);
result(callbackFuture);
@@ -501,7 +501,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(new LongVersion(1234L), metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.writeLedgerMetadata(ledgerId, metadata, callbackFuture);
try {
result(callbackFuture);
@@ -529,7 +529,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
assertEquals(new LongVersion(1234L), metadata.getVersion());
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.writeLedgerMetadata(ledgerId, metadata, callbackFuture);
try {
result(callbackFuture);
@@ -562,7 +562,7 @@ public class AbstractZkLedgerManagerTest extends
MockZooKeeperTestCase {
metadata.setVersion(invalidVersion);
- GenericCallbackFuture<Void> callbackFuture = new
GenericCallbackFuture<>();
+ GenericCallbackFuture<LedgerMetadata> callbackFuture = new
GenericCallbackFuture<>();
ledgerManager.writeLedgerMetadata(ledgerId, metadata, callbackFuture);
try {
result(callbackFuture);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
index 71854f9..1459500 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
@@ -106,9 +106,10 @@ public class GcLedgersTest extends LedgerManagerTestCase {
}
getLedgerManager().createLedgerMetadata(ledgerId,
- new LedgerMetadata(1, 1, 1, DigestType.MAC,
"".getBytes()), new GenericCallback<Void>() {
+ new LedgerMetadata(1, 1, 1, DigestType.MAC,
"".getBytes()),
+ new GenericCallback<LedgerMetadata>() {
@Override
- public void operationComplete(int rc, Void
result) {
+ public void operationComplete(int rc,
LedgerMetadata writtenMetadata) {
if (rc == BKException.Code.OK) {
activeLedgers.put(ledgerId, true);
createdLedgers.add(ledgerId);
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
index 1bd32c5..1804b2a 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
@@ -87,7 +87,7 @@ public class LedgerManagerIteratorTest extends
LedgerManagerTestCase {
}
}
- class RCCheckCB implements GenericCallback<Void> {
+ class RCCheckCB implements GenericCallback<LedgerMetadata> {
private final String opType;
private final CountDownLatch latch;
private final Optional<Integer> rcExpected;
@@ -101,6 +101,36 @@ public class LedgerManagerIteratorTest extends
LedgerManagerTestCase {
}
@Override
+ public void operationComplete(int rc, LedgerMetadata writtenMetadata) {
+ safeWrapper(() -> {
+ try {
+ rcExpected.map((Integer expected) -> {
+ assertEquals(
+ "Incorrect rc on ledger: " + ledgerId + ", op
type: " + opType,
+ expected.longValue(), rc);
+ return null;
+ });
+ } finally {
+ latch.countDown();
+ }
+ }).run();
+ }
+ }
+
+ class VoidRCCheckCB implements GenericCallback<Void> {
+ private final String opType;
+ private final CountDownLatch latch;
+ private final Optional<Integer> rcExpected;
+ private final long ledgerId;
+
+ public VoidRCCheckCB(String opType, CountDownLatch latch,
Optional<Integer> rcExpected, long ledgerId) {
+ this.opType = opType;
+ this.latch = latch;
+ this.rcExpected = rcExpected;
+ this.ledgerId = ledgerId;
+ }
+
+ @Override
public void operationComplete(int rc, Void result) {
safeWrapper(() -> {
try {
@@ -128,7 +158,7 @@ public class LedgerManagerIteratorTest extends
LedgerManagerTestCase {
void removeLedger(LedgerManager lm, Long ledgerId, Optional<Integer>
rcExpected) throws Throwable {
CountDownLatch latch = new CountDownLatch(1);
lm.removeLedgerMetadata(
- ledgerId, Version.ANY, new RCCheckCB("removeLedger", latch,
rcExpected, ledgerId));
+ ledgerId, Version.ANY, new VoidRCCheckCB("removeLedger",
latch, rcExpected, ledgerId));
latch.await();
throwAsyncErrors();
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPeriodicBookieCheckTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPeriodicBookieCheckTest.java
index 104dd3e..efe6356 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPeriodicBookieCheckTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/replication/AuditorPeriodicBookieCheckTest.java
@@ -109,7 +109,8 @@ public class AuditorPeriodicBookieCheckTest extends
BookKeeperClusterTestCase {
List<BookieSocketAddress> ensemble = md.getEnsembles().get(0L);
ensemble.set(0, new BookieSocketAddress("1.1.1.1", 1000));
- TestCallbacks.GenericCallbackFuture<Void> cb = new
TestCallbacks.GenericCallbackFuture<Void>();
+ TestCallbacks.GenericCallbackFuture<LedgerMetadata> cb =
+ new TestCallbacks.GenericCallbackFuture<LedgerMetadata>();
ledgerManager.writeLedgerMetadata(lh.getId(), md, cb);
cb.get();
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/server/http/TestHttpService.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/server/http/TestHttpService.java
index a2a7728..63eb641 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/server/http/TestHttpService.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/server/http/TestHttpService.java
@@ -674,7 +674,8 @@ public class TestHttpService extends
BookKeeperClusterTestCase {
List<BookieSocketAddress> ensemble = md.getEnsembles().get(0L);
ensemble.set(0, new BookieSocketAddress("1.1.1.1", 1000));
- TestCallbacks.GenericCallbackFuture<Void> cb = new
TestCallbacks.GenericCallbackFuture<Void>();
+ TestCallbacks.GenericCallbackFuture<LedgerMetadata> cb =
+ new TestCallbacks.GenericCallbackFuture<LedgerMetadata>();
ledgerManager.writeLedgerMetadata(lh.getId(), md, cb);
cb.get();