heesung-sn commented on code in PR #21531:
URL: https://github.com/apache/pulsar/pull/21531#discussion_r1385633354


##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerFactoryImpl.java:
##########
@@ -826,12 +824,39 @@ public void asyncDelete(String name, DeleteLedgerCallback 
callback, Object ctx)
     }
 
     @Override
+    @Deprecated
     public void asyncDelete(String name, 
CompletableFuture<ManagedLedgerConfig> mlConfigFuture,
                             DeleteLedgerCallback callback, Object ctx) {
-        CompletableFuture<ManagedLedgerImpl> future = ledgers.get(name);
+        mlConfigFuture.thenAccept(managedLedgerConfig -> {
+            asyncDelete(name, managedLedgerConfig, new DeleteLedgerCallback() {

Review Comment:
   can we just pass the input `callback`?



##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerFactoryImpl.java:
##########
@@ -826,12 +824,39 @@ public void asyncDelete(String name, DeleteLedgerCallback 
callback, Object ctx)
     }
 
     @Override
+    @Deprecated
     public void asyncDelete(String name, 
CompletableFuture<ManagedLedgerConfig> mlConfigFuture,
                             DeleteLedgerCallback callback, Object ctx) {
-        CompletableFuture<ManagedLedgerImpl> future = ledgers.get(name);
+        mlConfigFuture.thenAccept(managedLedgerConfig -> {
+            asyncDelete(name, managedLedgerConfig, new DeleteLedgerCallback() {
+                @Override
+                public void deleteLedgerComplete(Object ctx) {
+                    callback.deleteLedgerComplete(ctx);
+                }
+
+                @Override
+                public void deleteLedgerFailed(ManagedLedgerException 
exception, Object ctx) {
+                    callback.deleteLedgerFailed(exception, ctx);
+                }
+            }, ctx);
+        }).exceptionally(ex -> {
+            final Throwable rc = FutureUtil.unwrapCompletionException(ex);
+            callback.deleteLedgerFailed(getManagedLedgerException(rc), ctx);
+            return null;
+        });
+    }
+
+    @Override
+    public void asyncDelete(@Nonnull String name, @Nonnull ManagedLedgerConfig 
managedLedgerConfig,
+                            @Nonnull DeleteLedgerCallback callback, @Nullable 
Object ctx) {
+        Objects.requireNonNull(name);
+        Objects.requireNonNull(managedLedgerConfig);
+        Objects.requireNonNull(callback);
+
+        final CompletableFuture<ManagedLedgerImpl> future = ledgers.get(name);
         if (future == null) {
             // Managed ledger does not exist and we're not currently trying to 
open it
-            deleteManagedLedger(name, mlConfigFuture, callback, ctx);
+            deleteManagedLedger(name, managedLedgerConfig, callback, ctx);

Review Comment:
   Why not keep using `mlConfig` var name?



##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerFactoryImpl.java:
##########
@@ -826,12 +824,39 @@ public void asyncDelete(String name, DeleteLedgerCallback 
callback, Object ctx)
     }
 
     @Override
+    @Deprecated
     public void asyncDelete(String name, 
CompletableFuture<ManagedLedgerConfig> mlConfigFuture,
                             DeleteLedgerCallback callback, Object ctx) {
-        CompletableFuture<ManagedLedgerImpl> future = ledgers.get(name);
+        mlConfigFuture.thenAccept(managedLedgerConfig -> {
+            asyncDelete(name, managedLedgerConfig, new DeleteLedgerCallback() {
+                @Override
+                public void deleteLedgerComplete(Object ctx) {
+                    callback.deleteLedgerComplete(ctx);
+                }
+
+                @Override
+                public void deleteLedgerFailed(ManagedLedgerException 
exception, Object ctx) {
+                    callback.deleteLedgerFailed(exception, ctx);
+                }
+            }, ctx);
+        }).exceptionally(ex -> {
+            final Throwable rc = FutureUtil.unwrapCompletionException(ex);
+            callback.deleteLedgerFailed(getManagedLedgerException(rc), ctx);
+            return null;
+        });
+    }
+
+    @Override
+    public void asyncDelete(@Nonnull String name, @Nonnull ManagedLedgerConfig 
managedLedgerConfig,
+                            @Nonnull DeleteLedgerCallback callback, @Nullable 
Object ctx) {
+        Objects.requireNonNull(name);
+        Objects.requireNonNull(managedLedgerConfig);
+        Objects.requireNonNull(callback);

Review Comment:
   Do we have any coding guidelines for these null checks and `@Nonnull` 
annotation?
   
   



##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/ManagedLedgerFactory.java:
##########
@@ -183,9 +185,24 @@ void delete(String name, 
CompletableFuture<ManagedLedgerConfig> mlConfigFuture)
      * @throws InterruptedException
      * @throws ManagedLedgerException
      */
+    @Deprecated
     void asyncDelete(String name, CompletableFuture<ManagedLedgerConfig> 
mlConfigFuture,

Review Comment:
   What's our plan to remove this deprecated code?  Can we clean the code to 
make the caller use the new one?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to