Return-Path: Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: (qmail 71853 invoked from network); 19 Jun 2009 05:41:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 19 Jun 2009 05:41:50 -0000 Received: (qmail 81227 invoked by uid 500); 19 Jun 2009 05:42:01 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 81165 invoked by uid 500); 19 Jun 2009 05:42:01 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 81155 invoked by uid 99); 19 Jun 2009 05:42:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2009 05:42:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Jun 2009 05:41:57 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 71718234C1F0 for ; Thu, 18 Jun 2009 22:41:35 -0700 (PDT) Message-ID: <971238613.1245390095463.JavaMail.jira@brutus> Date: Thu, 18 Jun 2009 22:41:35 -0700 (PDT) From: "elliot barlas (JIRA)" To: dev@activemq.apache.org Subject: [jira] Commented: (AMQ-1786) Journal files don't get cleaned up In-Reply-To: <23997266.1213108020294.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: ae95407df07c98740808b2ef9da0087c X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/activemq/browse/AMQ-1786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52362#action_52362 ] elliot barlas commented on AMQ-1786: ------------------------------------ Gary, for those of us who are concerned about the inefficient use of log files, do you think the jdbc persistence adapter is a suitable alternative? > Journal files don't get cleaned up > ---------------------------------- > > Key: AMQ-1786 > URL: https://issues.apache.org/activemq/browse/AMQ-1786 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.1.0 > Environment: Linux server > Sun JDK 1.6.0 > Reporter: Brian Desai > Assignee: Rob Davies > Priority: Critical > Fix For: 5.2.0 > > Attachments: activemq.xml, PersistentStorageCleanup.java > > > I'm running ActiveMQ 5.1.0 with the AMQ persistence adapter, and it appears that not all of the journal files get cleaned up. My setup is a little abnormal, as I'm trying to test out ActiveMQ's ability to handle queue messaging with consumers that may become inactive for periods of time. > > So for this test, I have a single publisher pushing messages out to 21 queues. These are persistent messages with an expiration time. I have a message listener reading from all queues (reading from '>'). So, as soon as the message is sent to the queues, it's read by the message listener, taking it off the queue. So far, so good. > > I have a 2 MB max file length set on the AMQ persistence adapter. So, I would expect to see for the journal, 2 MB files that get cleaned up after the file rolls over. However, the journal files don't always get cleaned up, as shown in the file listing below. Out of 181 rollovers, 30 of the files did not get cleaned up. The message listener showed no errors, and as far as I can tell, it didn't drop any messages. > {noformat} > -rw-r--r-- 1 root root 2096753 2008-05-30 20:30 data/journal/data-13 > -rw-r--r-- 1 root root 2096967 2008-05-30 20:31 data/journal/data-14 > -rw-r--r-- 1 root root 2096899 2008-05-30 20:45 data/journal/data-25 > -rw-r--r-- 1 root root 2097057 2008-05-30 21:20 data/journal/data-52 > -rw-r--r-- 1 root root 2096916 2008-05-30 21:22 data/journal/data-54 > -rw-r--r-- 1 root root 2096536 2008-05-30 21:45 data/journal/data-72 > -rw-r--r-- 1 root root 2096894 2008-05-30 21:47 data/journal/data-73 > -rw-r--r-- 1 root root 2097129 2008-05-30 21:49 data/journal/data-75 > -rw-r--r-- 1 root root 2097101 2008-05-30 21:58 data/journal/data-82 > -rw-r--r-- 1 root root 2097026 2008-05-30 21:59 data/journal/data-83 > -rw-r--r-- 1 root root 2096906 2008-05-30 22:02 data/journal/data-85 > -rw-r--r-- 1 root root 2096973 2008-05-30 22:13 data/journal/data-94 > -rw-r--r-- 1 root root 2097105 2008-05-30 22:24 data/journal/data-102 > -rw-r--r-- 1 root root 2097033 2008-05-30 22:41 data/journal/data-113 > -rw-r--r-- 1 root root 2096730 2008-05-30 22:42 data/journal/data-114 > -rw-r--r-- 1 root root 2096569 2008-05-30 22:45 data/journal/data-116 > -rw-r--r-- 1 root root 2096870 2008-05-30 22:50 data/journal/data-118 > -rw-r--r-- 1 root root 2096567 2008-05-30 22:52 data/journal/data-119 > -rw-r--r-- 1 root root 2096766 2008-05-30 23:03 data/journal/data-128 > -rw-r--r-- 1 root root 2096877 2008-05-30 23:06 data/journal/data-130 > -rw-r--r-- 1 root root 2096888 2008-05-30 23:18 data/journal/data-140 > -rw-r--r-- 1 root root 2096699 2008-05-30 23:20 data/journal/data-141 > -rw-r--r-- 1 root root 2096973 2008-05-30 23:22 data/journal/data-143 > -rw-r--r-- 1 root root 2096924 2008-05-30 23:31 data/journal/data-150 > -rw-r--r-- 1 root root 2096936 2008-05-30 23:45 data/journal/data-161 > -rw-r--r-- 1 root root 2096527 2008-05-30 23:57 data/journal/data-170 > -rw-r--r-- 1 root root 2097151 2008-05-30 23:58 data/journal/data-171 > -rw-r--r-- 1 root root 2096972 2008-05-31 00:11 data/journal/data-179 > -rw-r--r-- 1 root root 2096703 2008-05-31 00:13 data/journal/data-180 > -rw-r--r-- 1 root root 2097069 2008-05-31 00:14 data/journal/data-181 > {noformat} > I've also tried taking out the wildcard '>' on a single consumer, and instead used separate consumers for each queue, and I get the same result. > I haven't even gotten to the test yet where the listener is not running. So, in this "normal" operation, all messages are consumed. Yet, not all journal files get cleaned up. These left-over files don't ever get cleaned up. They will eventually start filling the hard drive. I can understand files being left behind when there's no consumer, but there is a consumer the whole time. > > What I'm basically looking for is a persistence layer for messaging to multiple clients, so that consumers can get messages retroactively when they start up. I could try to use topics with durable clients, but I thought the queues would be easier to setup, as messages in queues are persisted by default. However, I don't want the consumer to process "stale" messages, which is why I set an expiration time. So, I would think that, with a constant rate of messages, the persistent disk store utilization would eventually level out as the messages started to expire. I realize that if there's no consumer for a queue, expired messages won't get cleaned up (am currently trying to figure out a work-around for that - periodically checking the queues with a QueueBrowser seems to trigger the removal of expired messages). However, even when all consumers are active, the journal keeps growing, as it's not always cleaning up it's files! > I've attached my configuration to this ticket. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.