@Override
protected void checkConsumersNotAheadOfDelivery(final QueueEntry entry)
{
Iterator<QueueConsumer<?,?>> consumerIterator = getQueueConsumerManager().getAllIterator();
while (consumerIterator.hasNext() && !entry.isAcquired())
{
QueueConsumer<?,?> consumer = consumerIterator.next();
if(!consumer.isClosed())
{
QueueContext context = consumer.getQueueContext();
if(context != null)
{
QueueEntry released = context.getReleasedEntry();
while(!entry.isAcquired() && (released == null || released.compareTo(entry) > 0))
{
if(QueueContext._releasedUpdater.compareAndSet(context,released,entry))
{
break;
}
else
{
released = context.getReleasedEntry();
}
}
}
}
}
}