You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2020/05/09 14:46:15 UTC
[curator] branch master updated: testDeleteChildrenConcurrently()
was badly written and error prone. I fixed it so it should run every time
now
This is an automated email from the ASF dual-hosted git repository.
randgalt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/curator.git
The following commit(s) were added to refs/heads/master by this push:
new d1f21cf testDeleteChildrenConcurrently() was badly written and error prone. I fixed it so it should run every time now
d1f21cf is described below
commit d1f21cf7700e33bd65c44eefb4e82c0c3ba24346
Author: randgalt <ra...@apache.org>
AuthorDate: Sat May 9 09:46:05 2020 -0500
testDeleteChildrenConcurrently() was badly written and error prone. I fixed it so it should run every time now
---
.../curator/framework/imps/TestFrameworkEdges.java | 77 +++++++++++-----------
1 file changed, 38 insertions(+), 39 deletions(-)
diff --git a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkEdges.java b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkEdges.java
index 6fcd553..1c85c0e 100644
--- a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkEdges.java
+++ b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkEdges.java
@@ -58,6 +58,8 @@ import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -786,51 +788,46 @@ public class TestFrameworkEdges extends BaseClassForTests
{
final CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
CuratorFramework client2 = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+ ExecutorService executorService = Executors.newSingleThreadExecutor();
try
{
client.start();
- client.getZookeeperClient().blockUntilConnectedOrTimedOut();
client2.start();
- client2.getZookeeperClient().blockUntilConnectedOrTimedOut();
- int childCount = 5000;
+ int childCount = 500;
for ( int i = 0; i < childCount; i++ )
{
client.create().creatingParentsIfNeeded().forPath("/parent/child" + i);
}
final CountDownLatch latch = new CountDownLatch(1);
- new Thread(new Runnable()
- {
- @Override
- public void run()
+ executorService.submit(() -> {
+ try
{
- long start = System.currentTimeMillis();
- try
- {
- client.delete().deletingChildrenIfNeeded().forPath("/parent");
- }
- catch ( Exception e )
+ client.delete().deletingChildrenIfNeeded().forPath("/parent");
+ }
+ catch ( InterruptedException e )
+ {
+ Thread.currentThread().interrupt();
+ }
+ catch ( Exception e )
+ {
+ if ( e instanceof KeeperException.NoNodeException )
{
- if ( e instanceof KeeperException.NoNodeException )
- {
- Assert.fail("client delete failed, shouldn't throw NoNodeException", e);
- }
- else
- {
- Assert.fail("unexpected exception", e);
- }
+ Assert.fail("client delete failed, shouldn't throw NoNodeException", e);
}
- finally
+ else
{
- log.info("client has deleted children, it costs: {}ms", System.currentTimeMillis() - start);
- latch.countDown();
+ Assert.fail("unexpected exception", e);
}
}
- }).start();
+ finally
+ {
+ latch.countDown();
+ }
+ });
boolean threadDeleted = false;
- boolean client2Deleted = false;
Random random = new Random();
for ( int i = 0; i < childCount; i++ )
{
@@ -852,20 +849,16 @@ public class TestFrameworkEdges extends BaseClassForTests
try
{
client2.delete().forPath(child);
- client2Deleted = true;
log.info("client2 deleted the child {} successfully", child);
break;
}
+ catch ( KeeperException.NoNodeException ignore )
+ {
+ // ignore, because it's deleted by the thread client
+ }
catch ( Exception e )
{
- if ( e instanceof KeeperException.NoNodeException )
- {
- // ignore, because it's deleted by the thread client
- }
- else
- {
- Assert.fail("unexpected exception", e);
- }
+ Assert.fail("unexpected exception", e);
}
}
}
@@ -875,15 +868,21 @@ public class TestFrameworkEdges extends BaseClassForTests
}
}
- // The case run successfully, if client2 deleted a child successfully and the client deleted children successfully
- Assert.assertTrue(client2Deleted);
Assert.assertTrue(timing.awaitLatch(latch));
Assert.assertNull(client2.checkExists().forPath("/parent"));
}
finally
{
- CloseableUtils.closeQuietly(client);
- CloseableUtils.closeQuietly(client2);
+ try
+ {
+ executorService.shutdownNow();
+ executorService.awaitTermination(timing.milliseconds(), TimeUnit.MILLISECONDS);
+ }
+ finally
+ {
+ CloseableUtils.closeQuietly(client);
+ CloseableUtils.closeQuietly(client2);
+ }
}
}
}