Description
When a page is pulled in, it is placed in a LinkedHashMap which preserves the queue order, but the below code then pulls the values from the LinkedHashMap and puts them in a Set. This causes the FIFO order of the queue to be lost. If the number of max messages to move is smaller the the page size, then the outcome looks like random messages from the queue being moved (copied or removed).
...
Set<MessageReference> set = new HashSet<MessageReference>();
ConnectionContext context = createConnectionContext();
do {
doPageIn(true);
pagedInMessagesLock.readLock().lock();
try
finally
{ pagedInMessagesLock.readLock().unlock(); }...
Can this be changed to preserve the queue order?