[ 
https://issues.apache.org/jira/browse/AMQ-5173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13990976#comment-13990976
 ] 

Timothy Bish commented on AMQ-5173:
-----------------------------------

Have you tested with a current release of ActiveMQ?  The latest release is 
v5.9.1

> Kaha DB cleanup fails to reclaim disk space after some time
> -----------------------------------------------------------
>
>                 Key: AMQ-5173
>                 URL: https://issues.apache.org/jira/browse/AMQ-5173
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.6.0
>            Reporter: Imran
>
> We are seeing an issue where a broker using Kaha DB will gradually increase 
> its footprint on disk over time and never shrink back down again even when 
> all queues are empty.
> The default cleanup settings will reclaim space at first but over time it 
> seems the size of the data directory will grow and never shrink back down to 
> its original size.
> I can reproduce this with a test that sends and consumes a large number of 
> messages to a single queue (.net client, broker hosted on windows). The data 
> file grows and will never shrink back down again.
> {code}
>         [Test]
>         public void ButLoadOfMessagesOnASingleQueue()
>         {
>             const int messagesPerProducerThread = 1000000;
>             const int numberProducers = 1;
>             const int numberConsumers = 3;
>             var producersConsumers = new List<Task>();
>             var factory = new ConnectionFactory
>             {
>                 AcknowledgementMode = AcknowledgementMode.Transactional,
>                 AsyncSend = true
>             };
>             for (var i = 0; i < numberProducers; i++)
>             {
>                 var producer = Task.Factory.StartNew(() => Send(factory, 
> messagesPerProducerThread));
>                 producersConsumers.Add(producer);
>             }
>             for (var i = 0; i < numberConsumers; i++)
>             {
>                 var consumer = Task.Factory.StartNew(() => Consume(factory));
>                 producersConsumers.Add(consumer);
>             }
>             Task.WaitAll(producersConsumers.ToArray());
>         }
>         private void Send(IConnectionFactory connectionFactory, int 
> noMessages)
>         {
>             var connection = connectionFactory.CreateConnection();
>             connection.Start();
>             var session = connection.CreateSession();
>             var destination = SessionUtil.GetDestination(session, 
> GetQueueName(1));
>             var producer = session.CreateProducer(destination);
>             for (var i = 0; i < noMessages; i++)
>             {
>                 producer.Send(new ActiveMQTextMessage(i.ToString()));
>                 if (i%100 == 0)
>                     session.Commit();
>             }
>             session.Commit();
>             connection.Close();
>         }
>         private void Consume(IConnectionFactory connectionFactory)
>         {
>             var connection = connectionFactory.CreateConnection();
>             connection.Start();
>             var session = connection.CreateSession();
>             var destination = SessionUtil.GetDestination(session, 
> GetQueueName(1));
>             var consumer = session.CreateConsumer(destination);
>             var count = 0;
>             while (true)
>             {
>                 if (consumer.Receive(TimeSpan.FromSeconds(5)) == null)
>                     break;
>                 count++;
>                 if (count%100 == 0)
>                     session.Commit();
>             }
>             session.Commit();
>             connection.Close();
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to