[ https://issues.apache.org/jira/browse/AMQ-3692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13756105#comment-13756105 ]
metatech commented on AMQ-3692: ------------------------------- For the record, this design choice has the following impact : in a cluster of 2 nodes with a common database (using the DefaultDatabaseLocker), it means that when both nodes have at some point lost their connection to the database, none of the 2 ActiveMQ broker nodes is not restarted anymore and therefore all JMS routes are in error until a manual restart of the ActiveMQ broker bundle is launched. For our mission-critical usage of ServiceMix, this was not considered as acceptable and this is the reason why we created the BrokerBundleWatcher. Another (less elegant) solution would be to write a script that monitors the broker and restarts the ActiveMQ broker in case of error. > ActiveMQ OSGi bundle should be stopped when broker stops itself > --------------------------------------------------------------- > > Key: AMQ-3692 > URL: https://issues.apache.org/jira/browse/AMQ-3692 > Project: ActiveMQ > Issue Type: New Feature > Components: Broker > Affects Versions: 5.4.2 > Environment: ServiceMix 4.3 > Reporter: metatech > Assignee: Hiram Chirino > Fix For: 5.9.0 > > Attachments: activemq-broker.xml, BrokerBundleWatcher.patch, > BrokerBundleWatcher_v2.patch, BrokerBundleWatcher_v3.patch, > BrokerService.patch > > > In case of error, the ActiveMQ broker can stop itself. > In an OSGi/Blueprint environment, the bundle is however still in > Active/Created state, which misleads an external monitoring software into > thinking that the broker is running fine. > This patch stops the bundle when the broker stops itself. > This patch can also auto-restart the bundle, which will restart the broker. > This is critical in an Master/Slave configuration : when the connection to > the database is lost, the broker cannot maintain the DB exclusive lock, and > it stops itself. The bundle should be stopped and started again, so that it > enters again the "Creating" state, in which it waits to obtain the DB lock > again. > The class "BrokerBundleWatcher" needs to be registered with the > "shutdownHooks" property of the ActiveMQ "BrokerService". However, there is > a limitation with the XBean syntax in a Blueprint XML, which does not allow > to define inner beans. The workaround is to define the "activemq-broker.xml" > in full native Blueprint syntax (no XBean). > The patch also provides a modified version of the BrokerService, that injects > its own reference into the ShutdownHook's which implement the > "BrokerServiceAware" interface. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira