activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Schöchlin (JIRA) <j...@apache.org>
Subject [jira] Updated: (AMQ-2680) Producer Flow Control seems to be broken
Date Thu, 08 Apr 2010 10:33:09 GMT

     [ https://issues.apache.org/activemq/browse/AMQ-2680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Marc Schöchlin updated AMQ-2680:
--------------------------------

    Attachment: producer-flow-control-problem.zip

Retested this issue with kahadb backend and created threaddumps (IBM jvm).

The name of the blocked queue was: queue/Einarbeitungsdaten_RemoteQ

The problem also appears by using the kahadb backend:

{code}
$ unzip -l producer-flow-control-problem.zip
Archive:  producer-flow-control-problem.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2010-04-08 12:20   producer-flow-control-problem/    
   819119  2010-04-08 12:20   producer-flow-control-problem/activemq-javacore.20100408.115629.32099.0001.txt
         (Threaddump of the ActiveMQ Standalone Broker)
   150326  2010-04-08 12:20   producer-flow-control-problem/standalone-client-javacore.20100408.115629.4914.0001.txt
 (Threaddump of a standalone consumer : apache-activemq-5.3.1/example)
     6575  2010-04-08 12:20   producer-flow-control-problem/activemq.xml                 
                            (Configuration of the broker)
  2174495  2010-04-08 12:20   producer-flow-control-problem/jboss-javacore.20100408.115629.3419.0001.txt
             (Threaddump of JBOSS Appserver which runs two message driven beans, consumers)
 
---------                     -------
  3150515                     5 files
{code}


> Producer Flow Control seems to be broken
> ----------------------------------------
>
>                 Key: AMQ-2680
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2680
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, Documentation
>    Affects Versions: 5.3.1
>         Environment: SLES 11, IBM JDK 1.6
>            Reporter: Marc Schöchlin
>            Assignee: Gary Tully
>            Priority: Critical
>             Fix For: 5.3.1
>
>         Attachments: activemq-broken-flow-control.xml, activemq.xml, producer-flow-control-problem.zip
>
>
> How to reproduce:
> - Download ActiveMQ 5.3.1
> - Start broker with the attached configuration
>    ---
>    <systemUsage>
>        <systemUsage>
>            <memoryUsage>
>                <memoryUsage limit="10 mb"/>
>            </memoryUsage>
>            <storeUsage>
>                <storeUsage limit="10 mb" name="queue/RemoteQ"/>
>            </storeUsage>
>            <tempUsage>
>                <tempUsage limit="3 gb"/>
>            </tempUsage>
>        </systemUsage>
>    </systemUsage>
>    ---
> - Start example producer/consumer
>    cd examples
>    ant producer -Durl=tcp://127.0.0.1:61616 -Dmax=100000 -Dsubject=queue/RemoteQ -Ddurable=true
-DsleepTime=2
>    sleep 600
>    ant consumer -Durl=tcp://127.0.0.1:61616  -Dsubject=queue/RemoteQ -Dmax=100000 -DsleepTime=2
> The problem: 
> When the 10mb limit is reached, the producer is blocked forever.
> The expected behavior is, that if a consumer cleans the queue, producers are able to
post more messages.
> Neither cleaning up the queue, restarting producers and restarting the broker helps :-(
> It would be also a good idea to enhance the documentation about producer-flow-control:
> (http://activemq.apache.org/producer-flow-control.html)
> - expected behavior
> - what is limited in detail by using system|store|tempUsage 
> The entire configuration :
> ---
> <beans
>   xmlns="http://www.springframework.org/schema/beans"
>   xmlns:amq="http://activemq.apache.org/schema/core"
>   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>   http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
>     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>         <property name="locations">
>             <value>file:${activemq.base}/conf/credentials.properties</value>
>         </property>      
>     </bean>
>     <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost"
dataDirectory="${activemq.data}/data" >
>         <destinationPolicy>
>             <policyMap>
>               <policyEntries>
>                 <policyEntry topic=">" producerFlowControl="true" memoryLimit="10mb">
>                   <deadLetterStrategy>
>                     <!--
>                       Use the prefix 'DLQ.' for the destination name, and make
>                       the DLQ a queue rather than a topic
>                     -->
>                     <individualDeadLetterStrategy
>                       queuePrefix="DLQ." useQueueForQueueMessages="true" />
>                   </deadLetterStrategy>
>                   <pendingSubscriberPolicy>
>                     <vmCursor />
>                   </pendingSubscriberPolicy>
>                 </policyEntry>
>                 <policyEntry queue=">" producerFlowControl="true" memoryLimit="10mb">
>                   <!-- Use VM cursor for better latency
>                        For more information, see:
>                        
>                        http://activemq.apache.org/message-cursors.html
>                        
>                   <pendingQueuePolicy>
>                     <vmQueueCursor/>
>                   </pendingQueuePolicy>
>                   -->
>                   <deadLetterStrategy>
>                     <!--
>                       Use the prefix 'DLQ.' for the destination name, and make
>                       the DLQ a queue rather than a topic
>                     -->
>                     <individualDeadLetterStrategy
>                       queuePrefix="DLQ." useQueueForQueueMessages="true" />
>                   </deadLetterStrategy>
>                 </policyEntry>
>               </policyEntries>
>             </policyMap>
>         </destinationPolicy> 
>  
>         <systemUsage>
>             <systemUsage>
>                 <memoryUsage>
>                     <memoryUsage limit="10 mb"/>
>                 </memoryUsage>
>                 <storeUsage>
>                     <storeUsage limit="10 mb" name="queue/RemoteQ"/>
>                 </storeUsage>
>                 <tempUsage>
>                     <tempUsage limit="3 gb"/>
>                 </tempUsage>
>             </systemUsage>
>         </systemUsage>
>                   
>         <transportConnectors>
>             <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
>         </transportConnectors>
>     </broker>
>     <import resource="jetty.xml"/>
>     
> </beans>
> ---

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message