[ 
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)

Reply via email to