You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/01/14 02:55:36 UTC
[pulsar] 02/02: Fixed race condition in
ManagedLedgerTest.testAsyncUpdateProperties() (#9152)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 1604cd7610d28ed9be547a13d8a23bd6f35a0ca2
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Fri Jan 8 16:54:09 2021 -0800
Fixed race condition in ManagedLedgerTest.testAsyncUpdateProperties() (#9152)
### Motivation
The test is intermittently failing because the check is disregarding the timing of when the first callback is received, which can be later than the 3 async call is issued.
(cherry picked from commit f10f1ce2ea51237273eaf2a7252f51e2f779c434)
---
.../bookkeeper/mledger/impl/ManagedLedgerTest.java | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
index 35f7921..246e06a 100644
--- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
+++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
@@ -1198,50 +1198,57 @@ public class ManagedLedgerTest extends MockedBookKeeperTestCase {
@Test
public void testAsyncUpdateProperties() throws Exception {
- final CountDownLatch latch = new CountDownLatch(3);
+
ManagedLedger ledger = factory.open("my_test_ledger");
Map<String, String> prop = new HashMap<>();
prop.put("key1", "value1");
prop.put("key2", "value2");
prop.put("key3", "value3");
+
+ final CountDownLatch latch1 = new CountDownLatch(1);
ledger.asyncSetProperties(prop, new AsyncCallbacks.UpdatePropertiesCallback() {
@Override
public void updatePropertiesComplete(Map<String, String> properties, Object ctx) {
assertEquals(prop, properties);
- latch.countDown();
+ latch1.countDown();
}
@Override
public void updatePropertiesFailed(ManagedLedgerException exception, Object ctx) {
}
}, null);
+ assertTrue(latch1.await(5, TimeUnit.SECONDS));
+ final CountDownLatch latch2 = new CountDownLatch(1);
ledger.asyncSetProperty("key4", "value4", new AsyncCallbacks.UpdatePropertiesCallback() {
@Override
public void updatePropertiesComplete(Map<String, String> properties, Object ctx) {
assertNotNull(properties.get("key4"));
assertEquals("value4", properties.get("key4"));
- latch.countDown();
+ latch2.countDown();
}
@Override
public void updatePropertiesFailed(ManagedLedgerException exception, Object ctx) {
}
}, null);
+ assertTrue(latch2.await(5, TimeUnit.SECONDS));
prop.remove("key1");
+
+ final CountDownLatch latch3 = new CountDownLatch(1);
ledger.asyncDeleteProperty("key1", new AsyncCallbacks.UpdatePropertiesCallback() {
@Override
public void updatePropertiesComplete(Map<String, String> properties, Object ctx) {
assertNull(properties.get("key1"));
- latch.countDown();
+ latch3.countDown();
}
@Override
public void updatePropertiesFailed(ManagedLedgerException exception, Object ctx) {
}
}, null);
- assertTrue(latch.await(60, TimeUnit.SECONDS));
+ assertTrue(latch3.await(5, TimeUnit.SECONDS));
}
@Test