[
https://issues.apache.org/jira/browse/CURATOR-318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Josh Pattiz updated CURATOR-318:
--------------------------------
Attachment: TestBarrierBug.java
> Threads may return different boolean values when entering same double barrier
> -----------------------------------------------------------------------------
>
> Key: CURATOR-318
> URL: https://issues.apache.org/jira/browse/CURATOR-318
> Project: Apache Curator
> Issue Type: Bug
> Components: Recipes
> Affects Versions: 2.10.0
> Reporter: Shiliang Cao
> Priority: Major
> Attachments: DoubleBarrierTimeoutTest.java, TestBarrierBug.java
>
>
> To my understanding, when all threads are trying enter an barrier, they
> should all success or fail, which means their return values should be the
> same.
> But actually they may get different return values in this situation
> (reproduce steps):
> 0. Some preparing works such as running a zk server, basic curator connecting
> codes;
> 1. Prepare 3 threads: thread1/ thread2/ thread3;
> 2. Thread1 sleep 20 seconds then enter barrier, thread2 and thread3 try to
> enter barrier right now, with timeout value set to 5 seconds;
> 3. Result: thread2 and thread3 returned false due to timeout as expected, but
> thread1 (the sleeping one) just return true, which I think should be false
> too.
> Possible root cause as I observed via zkCli:
> When thread1 and thread2 enter methods returned, their path nodes remained,
> so when thread3 came, it just think other threads are still waiting, so it
> just created the ready node and return with true.
> If this is not by design, it should be a design defect.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)