in hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/HazelcastGroupManager.java [541:603]
public void unRegisterGroup(Group group) {
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(combinedClassLoader);
String groupName = group.getName();
// remove local node from cluster group
group.getNodes().remove(getNode());
listGroups().put(groupName, group);
// un-register cluster group consumers
if (consumerRegistrations != null && !consumerRegistrations.isEmpty()) {
ServiceRegistration consumerRegistration = consumerRegistrations.get(groupName);
if (consumerRegistration != null) {
consumerRegistration.unregister();
consumerRegistrations.remove(groupName);
}
}
// un-register cluster group producers
if (producerRegistrations != null && !producerRegistrations.isEmpty()) {
ServiceRegistration producerRegistration = producerRegistrations.get(groupName);
if (producerRegistration != null) {
producerRegistration.unregister();
producerRegistrations.remove(groupName);
}
}
// remove consumers & producers
groupProducers.remove(groupName);
EventConsumer consumer = groupConsumer.remove(groupName);
if (consumer != null) {
consumer.stop();
}
Node node = getNode();
group.getNodes().add(node);
Map<Node, Set<String>> map = getClusterGroups();
Set<String> groupNames = (Set<String>) map.get(node);
groupNames = new HashSet<String>(groupNames);
groupNames.remove(groupName);
map.put(node, groupNames);
// remove cluster group from configuration
try {
Configuration configuration = getConfigurationForNode();
Dictionary<String, Object> properties = configuration.getProperties();
String groups = (String) properties.get(Configurations.GROUPS_KEY);
if (groups == null || groups.isEmpty()) {
groups = "";
} else if (groups.contains(groupName)) {
Set<String> groupNamesSet = convertStringToSet(groups);
groupNamesSet.remove(groupName);
groups = convertSetToString(groupNamesSet);
}
properties.put(Configurations.GROUPS_KEY, groups);
updateConfiguration(configuration, properties);
} catch (IOException e) {
LOGGER.error("CELLAR HAZELCAST: failed to read cluster group configuration", e);
}
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}
}