Matt Pavlovich created AMQ-9376:
-----------------------------------
Summary: Fix thread safety issue in
Key: AMQ-9376
URL: https://issues.apache.org/jira/browse/AMQ-9376
Project: ActiveMQ
Issue Type: Bug
Reporter: Matt Pavlovich
Need a class instance level lock around the broker map
Calling .destroy() loops over a map which calls deleted.. which fails when
there is more than one bundle and the bundle is shutdown first (not a service
remove via .cfg delete).
#1. OSGi calls..
{noformat}
synchronized public void destroy() {
for (String broker : brokers.keySet()) {
deleted(broker);
}
}
{noformat}
#2. Which blows up here..
{noformat}
@Override
synchronized public void deleted(String pid) {
ServiceRegistration<BrokerService> reg = brokerRegs.remove(pid);
if (reg != null) {
reg.unregister();
}
BrokerService broker = brokers.remove(pid);
if (broker != null) {
stop(pid, broker);
}
}
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)