activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AMQ-5173) Kaha DB cleanup fails to reclaim disk space after some time
Date Tue, 06 May 2014 18:47:18 GMT

    [ 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)

Mime
View raw message