BewareMyPower commented on code in PR #23686:
URL: https://github.com/apache/pulsar/pull/23686#discussion_r1875550182


##########
pulsar-metadata/src/main/java/org/apache/pulsar/metadata/cache/impl/MetadataCacheImpl.java:
##########
@@ -321,22 +325,25 @@ public void accept(Notification t) {
         }
     }
 
-    private CompletableFuture<T> 
executeWithRetry(Supplier<CompletableFuture<T>> op, String key) {
-        CompletableFuture<T> result = new CompletableFuture<>();
+    private void execute(Supplier<CompletableFuture<T>> op, String key, 
CompletableFuture<T> result, Backoff backoff) {
         op.get().thenAccept(result::complete).exceptionally((ex) -> {
             if (ex.getCause() instanceof BadVersionException) {
                 // if resource is updated by other than metadata-cache then 
metadata-cache will get bad-version
                 // exception. so, try to invalidate the cache and try one more 
time.
                 objCache.synchronous().invalidate(key);
-                op.get().thenAccept(result::complete).exceptionally((ex1) -> {
-                    result.completeExceptionally(ex1.getCause());
-                    return null;
-                });
+                backoffExecutor.schedule(() -> execute(op, key, result, 
backoff), backoff.next(),
+                        TimeUnit.MILLISECONDS);
                 return null;
             }
             result.completeExceptionally(ex.getCause());
             return null;
         });
+    }
+
+    private CompletableFuture<T> 
executeWithRetry(Supplier<CompletableFuture<T>> op, String key) {
+        final var backoff = new Backoff(100, TimeUnit.MILLISECONDS, 1, 
TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS);

Review Comment:
   Ah yes, we don't need the timeout. We have `CompletableFuture#orTimeout` to 
support this purpose. So adding a `Backoff` field is enough



-- 
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