ivankelly closed pull request #1573: LedgerManager should return the metadata 
just written
URL: https://github.com/apache/bookkeeper/pull/1573
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 9362b6ad60..213f9412d1 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 @@
  * 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 @@ public void initiateAdv(final long ledgerId) {
      * 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 c0514372d1..c1440b726f 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 @@ private static void updateEnsembleInfo(
      * 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 UpdateEnsembleCb(AsyncCallback.VoidCallback 
ledgerFragmentsMcb,
         }
 
         @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 a79a01eeb2..3a610dfd08 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 @@ BookiesHealthInfo getBookiesHealthInfo() {
         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 void safeRun() {
                               + 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 String toString() {
      * 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 String toString() {
         }
 
         @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 @@ void recover(GenericCallback<Void> finalCb,
             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 e4b23574f0..d0281c7f29 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 void operationComplete(int rc, LedgerMetadata 
metadata) {
                 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 dbddfc13c8..ccfbb52ecf 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 void process(WatchedEvent event) {
 
     @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 void processResult(int rc, String path, Object ctx, 
String name) {
                 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 void processResult(int rc, String path, Object ctx, 
byte[] data, Stat sta
 
     @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 void processResult(int rc, String path, Object ctx, 
Stat stat) {
                 } 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 3b71a02d2d..36f9d8c741 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 @@ private GenericCallback removeCallback(GenericCallback 
callback) {
 
     @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 void readLedgerMetadata(long ledgerId,
 
     @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 void writeLedgerMetadata(long ledgerId, 
LedgerMetadata metadata,
                 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 6b56a3e6e0..84b9cb69ab 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 @@
      * @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 @@
      * @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 7bcd81df64..5b28a0be48 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 void close() {
 
         @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 void complete(int rc, Version version, Object ctx) {
                     }
                     // update version
                     metadata.setVersion(version);
-                    ledgerCb.operationComplete(BKException.Code.OK, null);
+                    ledgerCb.operationComplete(BKException.Code.OK, metadata);
                 }
             };
 
@@ -457,7 +457,7 @@ public void complete(int rc, Versioned<Value> value, Object 
ctx) {
 
         @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 void complete(int rc, Version version, Object ctx) {
                         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 b3937ca2d5..dbf09d9814 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 void checkpointComplete(CheckpointSource.Checkpoint 
checkpoint, boolean c
     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 void readLedgerMetadata(long ledgerId, 
GenericCallback<LedgerMetadata> re
                 }
                 @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 b21386b0e4..f31feefd7d 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 @@ void setLatch(CountDownLatch waitLatch) {
         }
 
         @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 LedgerRangeIterator getLedgerRanges() {
 
         @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 void operationComplete(int rc, Void result) {
                 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 ecf813eb9e..50c24bfaba 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 @@ private LedgerHandle createLedgerWithDuplicatedBookies() 
throws Exception {
         // 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 212c29af1a..a729139d9c 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 @@ private void 
testWatchMetadataRemoval(LedgerManagerFactory factory) throws Excep
             @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 39cbfaad06..0066f99e8d 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 void testCreateLedgerMetadataSuccess() throws 
Exception {
 
         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 void testCreateLedgerMetadataNodeExists() throws 
Exception {
 
         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 void testCreateLedgerMetadataException() throws 
Exception {
 
         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 void testWriteLedgerMetadataSuccess() throws 
Exception {
 
         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 void testWriteLedgerMetadataBadVersion() throws 
Exception {
 
         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 void testWriteLedgerMetadataException() throws 
Exception {
 
         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 @@ private void testWriteLedgerMetadataInvalidVersion(Version 
invalidVersion) throw
 
         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 71854f953b..1459500c2f 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 void operationComplete(int rc, final Long ledgerId) 
{
                     }
 
                     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 1bd32c5463..1804b2a99f 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 void throwAsyncErrors() throws Throwable {
         }
     }
 
-    class RCCheckCB implements GenericCallback<Void> {
+    class RCCheckCB implements GenericCallback<LedgerMetadata> {
         private final String opType;
         private final CountDownLatch latch;
         private final Optional<Integer> rcExpected;
@@ -100,6 +100,36 @@ public RCCheckCB(String opType, CountDownLatch latch, 
Optional<Integer> rcExpect
             this.ledgerId = ledgerId;
         }
 
+        @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(() -> {
@@ -128,7 +158,7 @@ public void operationComplete(int rc, Void result) {
     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 104dd3e51a..efe63569ed 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 void testPeriodicBookieCheckInterval() throws 
Exception {
                 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 a2a77284a0..63eb641db9 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 @@ private void 
testListUnderReplicatedLedgerService(LedgerManagerFactory mFactory)
         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();
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to