Flaky-test: org.apache.pulsar.metadata.LockManagerTest updateValueWhenKeyDisappears flakes
- Dominant language
- Java
- Stars
- 15.3k
- Forks
- 3.8k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 160
Description
`org.apache.pulsar.metadata.LockManagerTest` `updateValueWhenKeyDisappears` is flaky. It passes occasionally but more often it fails.
It passes if I revert https://github.com/apache/pulsar/pull/13911
```
git revert 78827bebb5ed92885a04a138cf8f5aaa7370d2bc
```
All tests in `org.apache.pulsar.metadata.LockManagerTest` pass if I revert the PR.
@shibd It is easy to submit a PR to revert your change but can I ask you to repro this?
I tested on latest master (a595e03aff4a6c6174cde09acef7b89d0c36ac96)
I ran it locally (on mac):
```
[INFO] Running org.apache.pulsar.metadata.LockManagerTest
[ERROR] Tests run: 11, Failures: 1, Errors: 0, Skipped: 9, Time elapsed: 1.721 s <<< FAILURE! - in org.apache.pulsar.metadata.LockManagerTest
[ERROR] updateValueWhenKeyDisappears(org.apache.pulsar.metadata.LockManagerTest) Time elapsed: 0.011 s <<< FAILURE!
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Optional.java:148)
at org.apache.pulsar.metadata.LockManagerTest.updateValueWhenKeyDisappears(LockManagerTest.java:206)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:45)
at org.testng.internal.InvokeMethodRunnable.call(InvokeMethodRunnable.java:73)
at org.testng.internal.InvokeMethodRunnable.call(InvokeMethodRunnable.java:11)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
```
Contributor guide
Research direction
Start with org.apache.pulsar.metadata.LockManagerTest, especially updateValueWhenKeyDisappears at line 206, and run the test repeatedly on the current master revision. Compare its behavior with and without the change from PR 13911, then inspect the failure around the missing Optional value. Done means the test reliably passes without reverting that change and the LockManagerTest suite remains passing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100