You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by xy...@apache.org on 2023/08/02 16:46:36 UTC
[helix] branch metaclient updated: Lattice Puppy Stress Test Race Condition Fix and Code Cleanup (#2579)
This is an automated email from the ASF dual-hosted git repository.
xyuanlu pushed a commit to branch metaclient
in repository https://gitbox.apache.org/repos/asf/helix.git
The following commit(s) were added to refs/heads/metaclient by this push:
new a9c8332a6 Lattice Puppy Stress Test Race Condition Fix and Code Cleanup (#2579)
a9c8332a6 is described below
commit a9c8332a6a965763f7cc7b0092a32e7cd195e236
Author: Marcos Rico Peng <55...@users.noreply.github.com>
AuthorDate: Wed Aug 2 18:46:26 2023 +0200
Lattice Puppy Stress Test Race Condition Fix and Code Cleanup (#2579)
---------
Co-authored-by: mapeng <ma...@linkedin.com>
---
.../apache/helix/metaclient/MetaClientTestUtil.java | 2 +-
.../zk/TestMultiThreadStressTest/CreatePuppy.java | 3 +--
.../zk/TestMultiThreadStressTest/DeletePuppy.java | 2 +-
.../impl/zk/TestMultiThreadStressTest/GetPuppy.java | 1 -
.../impl/zk/TestMultiThreadStressTest/SetPuppy.java | 1 -
.../TestMultiThreadStressZKClient.java | 6 ++----
.../zk/TestMultiThreadStressTest/UpdatePuppy.java | 1 -
.../helix/metaclient/puppy/AbstractPuppy.java | 21 +++++++--------------
8 files changed, 12 insertions(+), 25 deletions(-)
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/MetaClientTestUtil.java b/meta-client/src/test/java/org/apache/helix/metaclient/MetaClientTestUtil.java
index 2c7543e31..f0a14c4a4 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/MetaClientTestUtil.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/MetaClientTestUtil.java
@@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit;
public class MetaClientTestUtil {
- public static final long WAIT_DURATION = TimeUnit.MINUTES.toMicros(1);
+ public static final long WAIT_DURATION = TimeUnit.MINUTES.toMillis(1);
public interface Verifier {
boolean verify()
throws Exception;
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
index 3e28df06b..3940f79ab 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/CreatePuppy.java
@@ -64,8 +64,7 @@ public class CreatePuppy extends AbstractPuppy {
@Override
protected void cleanup() {
- // Implement the recovery logic by deleting the created documents
- _metaclient.recursiveDelete(_parentPath);
+ // Cleanup logic in test case
}
private boolean shouldIntroduceError() {
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
index e0e1b7b5c..1aa9d4d72 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/DeletePuppy.java
@@ -58,7 +58,7 @@ public class DeletePuppy extends AbstractPuppy {
@Override
protected void cleanup() {
- _metaclient.recursiveDelete(_parentPath);
+ // Do nothing
}
private boolean shouldIntroduceError() {
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
index fe24b2bd3..4af1c4df3 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/GetPuppy.java
@@ -59,7 +59,6 @@ public class GetPuppy extends AbstractPuppy {
@Override
protected void cleanup() {
- _metaclient.recursiveDelete(_parentPath);
}
private boolean shouldIntroduceError() {
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
index c0de4ece7..3385b8673 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/SetPuppy.java
@@ -61,7 +61,6 @@ public class SetPuppy extends AbstractPuppy {
@Override
protected void cleanup() {
- _metaclient.recursiveDelete(_parentPath);
}
private boolean shouldIntroduceError() {
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
index 5ee026bc1..6a01fffa7 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/TestMultiThreadStressZKClient.java
@@ -52,7 +52,7 @@ public class TestMultiThreadStressZKClient extends ZkMetaClientTestBase {
public void testCreatePuppy() {
_zkMetaClient.create(zkParentKey, "test");
- PuppySpec puppySpec = new org.apache.helix.metaclient.puppy.PuppySpec(PuppyMode.REPEAT, 0.2f, new ExecDelay(5000, 0.1f), 5);
+ PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new ExecDelay(5000, 0.1f), 5);
CreatePuppy createPuppy = new CreatePuppy(_zkMetaClient, puppySpec);
CreatePuppy createPuppy2 = new CreatePuppy(_zkMetaClient, puppySpec);
CreatePuppy createPuppy3 = new CreatePuppy(_zkMetaClient, puppySpec);
@@ -189,7 +189,7 @@ public class TestMultiThreadStressZKClient extends ZkMetaClientTestBase {
AtomicInteger globalChildChangeCounter = new AtomicInteger();
ChildChangeListener childChangeListener = (changedPath, changeType) -> {
globalChildChangeCounter.addAndGet(1);
- System.out.println("-------------- Child change detected: " + changeType + " at path: " + changedPath + " number of changes: " + globalChildChangeCounter.get());
+ System.out.println("-------------- Child change detected: " + changeType + " at path: " + changedPath + ". Number of total changes: " + globalChildChangeCounter.get());
};
_zkMetaClient.subscribeChildChanges(zkParentKey, childChangeListener, false);
@@ -219,8 +219,6 @@ public class TestMultiThreadStressZKClient extends ZkMetaClientTestBase {
globalChildChangeCounter.addAndGet(1);
System.out.println("-------------- Child change detected: " + changeType + " at path: " + changedPath + " number of changes: " + globalChildChangeCounter.get());
};
-
-
_zkMetaClient.subscribeChildChanges(zkParentKey, childChangeListener, false);
PuppySpec puppySpec = new PuppySpec(PuppyMode.REPEAT, 0.2f, new ExecDelay(5000, 0.1f), 5);
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
index 721d507eb..5af055f74 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestMultiThreadStressTest/UpdatePuppy.java
@@ -64,7 +64,6 @@ public class UpdatePuppy extends AbstractPuppy {
@Override
protected void cleanup() {
- _metaclient.recursiveDelete(_parentPath);
}
private boolean shouldIntroduceError() {
diff --git a/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java b/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
index bfbbb915d..9ce21fc15 100644
--- a/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
+++ b/meta-client/src/test/java/org/apache/helix/metaclient/puppy/AbstractPuppy.java
@@ -55,30 +55,23 @@ public abstract class AbstractPuppy implements Runnable {
@Override
public void run() {
try {
- while (true) {
+ while (!Thread.currentThread().isInterrupted()) {
try {
+ Thread.sleep(getPuppySpec().getExecDelay().getNextDelay());
bark();
+ } catch (InterruptedException e) {
+ break;
} catch (Exception e) {
incrementUnhandledErrorCounter();
e.printStackTrace();
}
-
- if (getPuppySpec().getMode() == PuppyMode.ONE_OFF) {
- cleanup();
- break;
- } else {
- try {
- Thread.sleep(getPuppySpec().getExecDelay().getNextDelay());
- } catch (InterruptedException e) {
- cleanup();
- break;
- // Handle interruption if necessary
- }
- }
}
} catch (Exception e) {
e.printStackTrace();
}
+ finally {
+ cleanup();
+ }
}
public PuppySpec getPuppySpec() {