Shiliang Cao created CURATOR-318:
------------------------------------

             Summary: 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: Critical


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
(v6.3.4#6332)

Reply via email to