1 Reply Latest reply on Sep 7, 2011 3:46 AM by ataylor

    page files are not getting deleted for Queues.

    labdhi

      I am using standalone HornetQ 2.2.5.Final version. paging is enabeled and schedule delivery feature is in use.

      journal size is 400 MB and page file

       

      size is 10 MB. 

       

      using plain JMS transactions instead of

       

        JTA. application is multithreaded with dozens of producers and more than 50 concurrent consumers around 20 Queues 

       

      Spring is used to produce and consume the messages.

      CachingConnectionFactory is used to wrap the HornetQQueueConnectionFactory and various JMS admin objects like connection, session and message producers are cached by Spring.

      DefaultMessageListenerContainers provided by Spring are in use to pull the message fom HornetQ. at the time of pulling the message JMS session in use is transacted and transaction is a local JMS transaction. jta is not in use in short thruout.

      ConsumerWindowSize is set to 0 on to ensure that only one message will get pulled at a time per consumer thread. as and when consumer thread is done with one message[either commit or rollback] it pulls another message from HornetQ.

      HornetQ is running as standalone process on a different node. producers and consumers are remotely connecting to it.

       

      incase of huge load HornetQ starts paging incoming messages to page files but at few times these page files are not getting deleted later on once all the messages  present in page files gets consumed. deletion of page files

       

       

      happenes for few page files successfully but after some time page files stops getting deleted and start getting piled up on disk and hence disk space is getting exhausted.

       

      my  hornetq-configuration.xml is given below.

       

      <configuration xmlns="urn:hornetq"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">

         <acceptors>
            <acceptor name="netty">
               <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
               <param key="host"  value="${hostname}"/>
               <param key="port"  value="${livePort}"/>
               <param key="use-nio"  value="true"/>
            </acceptor>
            <acceptor name="netty_localhsot">
               <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
               <param key="host"  value="localhost"/>
               <param key="port"  value="${livePort}"/>
               <param key="use-nio"  value="true"/>
            </acceptor>
         </acceptors> 

      <address-settings>
            <!--default for catch all-->
             <address-setting match="jms.queue.ConsumerUpdateRequestQueue">
               <dead-letter-address>jms.queue.consumerupdate.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.ConsumerUpdateRetryQueue">
               <dead-letter-address>jms.queue.chargesandpayments.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.EventDistributionQueue">
               <dead-letter-address>jms.queue.notification.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${EDQ_queueDataInMemory}</max-size-bytes>
            </address-setting>
            <address-setting match="jms.queue.consumerupdate.DeadUpdateQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.notification.DeadEventQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.mail.DeadLetterQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.chargesandpayments.DeadMessageQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.chargesandpayments.DeadMessageQueues">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.osn.ExternalNotificationDeliveryDeadQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.extnotification.ExternalNotificationRedeliveryDeadQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.extnotification.ExternalNotificationRedeliveryQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <redelivery-delay>60000</redelivery-delay>
            </address-setting>
            <address-setting match="jms.queue.HeuristicHazardsQueue">
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
            <address-setting match="jms.queue.osn.ExternalNotificationDeliveryQueue">
               <dead-letter-address>jms.queue.extnotification.ExternalNotificationRedeliveryQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${ENDQ_queueDataInMemory}</max-size-bytes>
            </address-setting>
            <address-setting match="jms.queue.BillingRequestQueue">
               <max-size-bytes>${BRQ_queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.MailQueue">
               <dead-letter-address>jms.queue.mail.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>3</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.PaymentAdaptorRequestQueue">
               <dead-letter-address>jms.queue.chargesandpayments.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>-1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.PaymentAdaptorResponseQueue">
               <dead-letter-address>jms.queue.chargesandpayments.DeadMessageQueues</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${PARQ_queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.PaymentAdaptorRetryQueue">
               <dead-letter-address>jms.queue.chargesandpayments.DeadMessageQueues</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.notification.RedeliveryQueue">
               <dead-letter-address>jms.queue.notification.ExceptionQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.consumerupdate.ExceptionQueue">
               <dead-letter-address>jms.queue.consumerupdate.DeadUpdateQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.chargesandpayments.ExceptionQueue">
               <dead-letter-address>jms.queue.chargesandpayments.DeadMessageQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.extnotification.ExceptionQueue">
               <dead-letter-address>jms.queue.extnotification.ExternalNotificationRedeliveryDeadQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.mail.ExceptionQueue">
               <dead-letter-address>jms.queue.mail.DeadLetterQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
             <address-setting match="jms.queue.notification.ExceptionQueue">
               <dead-letter-address>jms.queue.notification.DeadEventQueue</dead-letter-address>
               <max-delivery-attempts>1</max-delivery-attempts>
               <max-size-bytes>${queueDataInMemory}</max-size-bytes>
            </address-setting>
            ${customHornetQCoreQueueConfiguration}
         </address-settings>
         <jmx-domain>com.qpass</jmx-domain>
         <paging-directory>${data_dir}/paging</paging-directory>
         <bindings-directory>${data_dir}/bindings</bindings-directory>
         <journal-directory>${data_dir}/journal</journal-directory>
         <large-messages-directory>${data_dir}/large-messages</large-messages-directory>
         <journal-file-size>${journalSize}</journal-file-size>
         <journal-min-files>3</journal-min-files>
         <journal-type>NIO</journal-type>
         <id-cache-size>1</id-cache-size>
         <persist-id-cache>false</persist-id-cache>
         <security-enabled>false</security-enabled>
         <remoting-interceptors>
            <class-name>com.qpass.service.jms.ScheduledDeliveryInterceptor</class-name>
         </remoting-interceptors>
         <message-counter-enabled>true</message-counter-enabled>
         <persist-delivery-count-before-delivery>false</persist-delivery-count-before-delivery>
         <message-counter-sample-period>300000</message-counter-sample-period>
         <message-counter-max-day-history>2</message-counter-max-day-history>
         <message-expiry-scan-period>600000</message-expiry-scan-period>
         <message-expiry-thread-priority>1</message-expiry-thread-priority>
         <memory-measure-interval>180000</memory-measure-interval>
         ${customHornetQCoreConfiguration}
      </configuration>

        • 1. Re: page files are not getting deleted for Queues.
          ataylor

          gain like your last post Spring is involved, from experience these issues are typically tied to spring, sounds to me like consumers are being created and either left idle or not closed properly (this would cause your other post problem too). We will look at this if you can show an actual issue using normal jms clients