activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Stanton (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (AMQ-1842) HashIndex leaks file handles when destination is removed
Date Thu, 10 Jul 2008 01:22:00 GMT

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

snstanton edited comment on AMQ-1842 at 7/9/08 6:20 PM:
------------------------------------------------------------

The attached patch attempts to resolve this issue by removing the state associated with a
destination when it is removed.  Note that this patch resolves the issue for the Kaha message
store, but does not attempt to resolve it for other message store types.

Summary of changes:

* Changed BaseDestination.dispose() to call dispose() on the MessageStore.
* Added Index.delete() method.
* Factored out AbstractMessageStore to hold the destination and the default implementations
of various methods.
* Added dispose() to the MessageStore interface with implementations for KahaReferenceStore
and KahaTopicReferenceStore that delete the messageContainer and subscriberContainer.
* Added KahaReferenceStoreAdapter.removeReferenceStore() that drops references to a message
store that is being deleted.
* Added MapContainer.delete() with implementations for all three container types.

      was (Author: snstanton):
    The attached patch attempts to resolve this issue by removing the state associated with
a destination when it is removed.
  
> HashIndex leaks file handles when destination is removed
> --------------------------------------------------------
>
>                 Key: AMQ-1842
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1842
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Message Store
>    Affects Versions: 5.2.0
>            Reporter: Scott Stanton
>            Priority: Critical
>         Attachments: patches
>
>
> When a destination is removed, all open file handles inside HashIndex will be leaked
because HashIndex.clear() closes the index, deletes the backing store files, then reopens
the files.  There is no provision for closing the HashIndex without reopening the files. 
Eventually the broker runs out of file handles and hangs.
> For reference, here is the stack trace down to HashIndex.clear from the removeDestination
call:
> {code}
> 	  at org.apache.activemq.kaha.impl.index.hash.HashIndex.clear(HashIndex.java:313)
> 	  at org.apache.activemq.kaha.impl.container.MapContainerImpl.clear(MapContainerImpl.java:385)
> 	  at org.apache.activemq.store.kahadaptor.KahaReferenceStore.removeAllMessages(KahaReferenceStore.java:201)
> 	  at org.apache.activemq.store.kahadaptor.KahaTopicReferenceStore.removeAllMessages(KahaTopicReferenceStore.java:320)
> 	  at org.apache.activemq.store.amq.AMQMessageStore.removeAllMessages(AMQMessageStore.java:503)
> 	  at org.apache.activemq.broker.region.Topic.dispose(Topic.java:452)
> 	  at org.apache.activemq.broker.region.AbstractRegion.dispose(AbstractRegion.java:469)
> 	  at org.apache.activemq.broker.region.AbstractRegion.removeDestination(AbstractRegion.java:185)
> 	  at org.apache.activemq.broker.region.RegionBroker.removeDestination(RegionBroker.java:289)
> 	  at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:146)
> 	  at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:146)
> 	  at org.apache.activemq.advisory.AdvisoryBroker.removeDestination(AdvisoryBroker.java:173)
> 	  at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:146)
> 	  at org.apache.activemq.broker.MutableBrokerFilter.removeDestination(MutableBrokerFilter.java:153)
> 	  at org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:146)
> 	  at org.apache.activemq.broker.MutableBrokerFilter.removeDestination(MutableBrokerFilter.java:153)
> ...
> {code}

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