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