Alan Protasio created AMQ-7107:
----------------------------------

             Summary: QueueBrowsingTest and UsageBlockedDispatchTest are 
failing with ConcurrentStoreAndDispachQueues=false
                 Key: AMQ-7107
                 URL: https://issues.apache.org/jira/browse/AMQ-7107
             Project: ActiveMQ
          Issue Type: Test
            Reporter: Alan Protasio


Hi,

I was working towards https://issues.apache.org/jira/browse/AMQ-7028 and after 
my change QueueBrowsingTest and UsageBlockedDispatchTest were failing.

QueueBrowsingTest was changed by https://issues.apache.org/jira/browse/AMQ-4495 
and it is testing if a full page was pagedIn by the cursor.
The problem is because this test was only succeeding due how 
ConcurrentStoreAndDispachQueues=true is implemented. When this flag is set to 
True, we increase the memory usage when start the async task and when decrease 
it when the task is done:


https://github.com/alanprot/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/broker/region/Queue.java#L897

So, imagine this timeline:

1 . Send message 1

2. The cursor get full and the cache is disabled

3. Message1 finish and the memory is freed

4. messages 2 to 100 are sent and the cache is skipped

5. We call browser queue and the cursor can pageIn messages because the 
cursorMemory is not full

Now with ConcurrentStoreAndDispachQueues=false

1 . Send message 1

2 . Send message 2

3. The cursor get full and the cache is disabled

4. messages 3 to 100 are sent and the cache is skipped (memory still full)

5. We call browser queue and the cursor cannot pageIn messages because the 
cursorMemory is full

So, in order to make this test work with ConcurrentStoreAndDispachQueues=false 
i did a simple change on it... After sending all the messages, consume one of 
them and make sure that the cursor has memory to pageIn messages.

Similar thing is happening with UsageBlockedDispatchTest.

I create 2 more test to do the same test with 
ConcurrentStoreAndDispachQueues=false and changed it a little bit to make them 
works with this flag false.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to