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