You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2018/07/31 10:51:00 UTC

[GitHub] ivankelly closed pull request #1573: LedgerManager should return the metadata just written

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:
users@infra.apache.org


With regards,
Apache Git Services