You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by xi...@apache.org on 2022/12/05 05:25:42 UTC
[pulsar] branch branch-2.10 updated: [fix][broker] Fix executeWithRetry result is null (#17694)
This is an automated email from the ASF dual-hosted git repository.
xiangying pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.10 by this push:
new d9594e48f6d [fix][broker] Fix executeWithRetry result is null (#17694)
d9594e48f6d is described below
commit d9594e48f6da5ba619eeca73d4b87d4c8c22747b
Author: Cong Zhao <zh...@apache.org>
AuthorDate: Tue Oct 11 10:14:58 2022 +0800
[fix][broker] Fix executeWithRetry result is null (#17694)
(cherry picked from commit 628e7607dd837e3201aa9d3f96970f7dc182fc1a)
---
.../pulsar/metadata/cache/impl/MetadataCacheImpl.java | 4 ++--
.../org/apache/pulsar/metadata/MetadataCacheTest.java | 16 +++++++++++-----
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/cache/impl/MetadataCacheImpl.java b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/cache/impl/MetadataCacheImpl.java
index 2cbe9a6dc19..f58530bde31 100644
--- a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/cache/impl/MetadataCacheImpl.java
+++ b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/cache/impl/MetadataCacheImpl.java
@@ -294,12 +294,12 @@ public class MetadataCacheImpl<T> implements MetadataCache<T>, Consumer<Notifica
private CompletableFuture<T> executeWithRetry(Supplier<CompletableFuture<T>> op, String key) {
CompletableFuture<T> result = new CompletableFuture<>();
- op.get().thenAccept(r -> result.complete(r)).exceptionally((ex) -> {
+ 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((c) -> result.complete(null)).exceptionally((ex1) -> {
+ op.get().thenAccept(result::complete).exceptionally((ex1) -> {
result.completeExceptionally(ex1.getCause());
return null;
});
diff --git a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
index be6a03d0eac..43af3ad757e 100644
--- a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
+++ b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
@@ -491,15 +491,21 @@ public class MetadataCacheTest extends BaseMetadataStoreTest {
MyClass value1 = new MyClass("a", 1);
objCache1.create(key1, value1).join();
- objCache1.get(key1).join();
+ assertEquals(objCache1.get(key1).join().get().b, 1);
- objCache2.readModifyUpdate(key1, v -> {
+ CompletableFuture<MyClass> future1 = objCache1.readModifyUpdate(key1, v -> {
return new MyClass(v.a, v.b + 1);
- }).join();
+ });
- objCache1.readModifyUpdate(key1, v -> {
+ CompletableFuture<MyClass> future2 = objCache2.readModifyUpdate(key1, v -> {
return new MyClass(v.a, v.b + 1);
- }).join();
+ });
+
+ MyClass myClass1 = future1.join();
+ assertEquals(myClass1.b, 2);
+
+ MyClass myClass2 = future2.join();
+ assertEquals(myClass2.b, 3);
}
@Test(dataProvider = "impl")