Gary Tully created AMQ-4262:
-------------------------------

             Summary: Pending send transaction can block on store usage and not 
resume once backlog is cleared
                 Key: AMQ-4262
                 URL: https://issues.apache.org/jira/browse/AMQ-4262
             Project: ActiveMQ
          Issue Type: Bug
          Components: Message Store
    Affects Versions: 5.7.0
            Reporter: Gary Tully
            Assignee: Gary Tully
             Fix For: 5.8.0


A transacted send can block pending store usage, an active transaction will be 
visible to the store. This will block kahadb from gc of data files that occur 
after the inflight transaction. 
Consumers acking the pending messages can create additional data files that 
can't be gced. This is a problem because the queue can drain and not release 
the producer.
With message database trace is is possible to see:{code}
14:20:20,515 | INFO  | .0.1:51273@61616 | Queue                            | 
125 - org.apache.activemq.activemq-core - 5.7.0.fuse-71-047 | 
Usage(default:store:queue://flood_out:store) percentUsage=99%, usage=30447772, 
limit=20971520, percentUsageMinDelta=1%;Parent:Usage(default:store) 
percentUsage=145%, usage=30447772, limit=20971520, percentUsageMinDelta=1%: 
Persistent store is Full, 100% of 20971520. Stopping producer (ID:..) to 
prevent flooding queue://flood_out. See 
http://activemq.apache.org/producer-flow-control.html for more info (blocking 
for: 5650s)
.....

14:20:45,016 | TRACE | heckpoint Worker | MessageDatabase                  | 
125 - org.apache.activemq.activemq-core - 5.7.0.fuse-71-047 | Last update: 
30:453228, full gc candidates set: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
22, 23, 24, 25, 26, 27, 28, 29, 30]
14:20:45,016 | TRACE | heckpoint Worker | MessageDatabase                  | 
125 - org.apache.activemq.activemq-core - 5.7.0.fuse-71-047 | gc candidates 
after first tx:11:860775, []
14:20:45,016 | TRACE | heckpoint Worker | MessageDatabase                  | 
125 - org.apache.activemq.activemq-core - 5.7.0.fuse-71-047 | gc candidates: []
{code}Here there is a build up of data files, after the inflight transaction, 
containing acks and messages that could be cleaned up.
 
The inflight transactions should protect a range of data files that they 
reference, not all subsequent data files.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to