[
https://issues.apache.org/jira/browse/CURATOR-308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Philip Searle updated CURATOR-308:
----------------------------------
Attachment: TestSimpleDistributedQueueHang.java
Attached testcase demonstrating this issue. It creates two threads: one
offering ten items to a queue with a seven second delay between offers; the
other takes them with a three second delay. The ZooKeeper container check
interval has been reduced to 1000 milliseconds.
The expected behaviour is for ten items to be offered and taken. The actual
behaviour is that the empty queue container node is removed after the first
item is taken off the queue and the subsequent call to take() blocks forever.
> SimpleDistributedQueue::take() hangs if container nodes are removed
> -------------------------------------------------------------------
>
> Key: CURATOR-308
> URL: https://issues.apache.org/jira/browse/CURATOR-308
> Project: Apache Curator
> Issue Type: Bug
> Components: Recipes
> Affects Versions: 3.1.0
> Environment: org.apache.curator:curator-recipes 3.1.0
> org.apache.curator:curator-test 3.1.0
> Reporter: Philip Searle
> Attachments: TestSimpleDistributedQueueHang.java
>
>
> SimpleDistributedQueue creates the queue using container nodes if the
> ZooKeeper instance supports this feature. If ZooKeeper runs the container
> node cleanup task while SimpleDistributedQueue::take() is blocking, the call
> will not ever return.
> A similar issue occurs when calling poll(), resulting in it delaying until
> the timeout has elapsed, even if a queue item was inserted after the
> container cleanup occurs.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)