release version 1.10.0

This commit is contained in:
2024-10-07 18:42:55 +03:00
parent 2034182607
commit a5088587f7
1501 changed files with 28818 additions and 59966 deletions

View File

@ -3,7 +3,7 @@
<parent>
<groupId>ru.entaxy.esb.platform.runtime.core</groupId>
<artifactId>cluster</artifactId>
<version>1.9.0</version>
<version>1.10.0</version>
</parent>
<groupId>ru.entaxy.esb.platform.runtime.core.cluster</groupId>
<artifactId>cluster-persistence-service</artifactId>
@ -81,6 +81,28 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.karaf.cellar</groupId>
<artifactId>org.apache.karaf.cellar.features</artifactId>
<version>${cellar.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.karaf</groupId>
<artifactId>org.apache.karaf.util</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.karaf.cellar</groupId>
<artifactId>org.apache.karaf.cellar.config</artifactId>
<version>${cellar.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.karaf</groupId>
<artifactId>org.apache.karaf.util</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.karaf.cellar</groupId>
<artifactId>org.apache.karaf.cellar.hazelcast</artifactId>

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@ -32,7 +32,7 @@ import java.nio.file.Paths;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.karaf.cellar.bundle.BundleState;
import com.hazelcast.core.HazelcastInstanceNotActiveException;
import org.apache.karaf.cellar.core.ClusterManager;
import org.apache.karaf.cellar.core.Configurations;
import org.slf4j.Logger;
@ -82,22 +82,26 @@ public class Helper<T> {
ClusterManager clusterManager = this.serviceProvider.getClusterManager();
@SuppressWarnings("unchecked")
Map<String, T> clusterData = clusterManager.getMap(this.mapBaseName + Configurations.SEPARATOR + groupName);
String serialized = "";
serialized = clusterData.entrySet().stream()
.<String>map((entry) -> {
return entry.getKey() + DELIMITER + serializer.toString(entry.getValue());
})
.collect(Collectors.joining(SEPARATOR));
Path p = getTargetPath(groupName);
try {
// if (!p.toFile().exists())
// p.toFile().createNewFile();
Files.createDirectories(p.getParent());
Files.write(p, serialized.getBytes());
} catch (IOException e) {
log.error("FAILED saving state to [" + p.toUri().toString() + "]", e);
Map<String, T> clusterData = clusterManager.getMap(this.mapBaseName + Configurations.SEPARATOR + groupName);
String serialized = "";
serialized = clusterData.entrySet().stream()
.<String>map((entry) -> {
return entry.getKey() + DELIMITER + serializer.toString(entry.getValue());
})
.collect(Collectors.joining(SEPARATOR));
Path p = getTargetPath(groupName);
try {
// if (!p.toFile().exists())
// p.toFile().createNewFile();
Files.createDirectories(p.getParent());
Files.write(p, serialized.getBytes());
} catch (IOException e) {
log.error("FAILED saving state to [" + p.toUri().toString() + "]", e);
}
} catch (HazelcastInstanceNotActiveException e) {
log.error("Hazelcast instance is not active for group [" + groupName + "]", e);
}
Thread.currentThread().setContextClassLoader(originalClassLoader);

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@ -25,6 +25,8 @@
*/
package ru.entaxy.esb.platform.core.cluster.persistence;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@ -106,7 +108,7 @@ public class PersistenceManager<T> {
try {
log.debug("~~> UPDATE_TASK :: RUN :: sleeping");
Thread.currentThread().sleep(15000);
log.debug("~~> UPDATE_TASK :: RUN :: processig");
log.debug("~~> UPDATE_TASK :: RUN :: processing");
// TODO add support for different groups
this.helper.saveClusterState("default");
log.debug("~~> UPDATE_TASK :: RUN :: processed");
@ -125,6 +127,10 @@ public class PersistenceManager<T> {
private Executor executor = new Executor();
private List<PersistenceManager<?>> dependents = new ArrayList<>();
private Object dependentsLock = new Object();
public PersistenceManager(ServiceProvider serviceProvider, String mapBaseName, String classifier,
Class<T> dataClass) {
@ -132,6 +138,12 @@ public class PersistenceManager<T> {
}
public void addDependent(PersistenceManager<?> manager) {
synchronized (dependentsLock) {
dependents.add(manager);
}
}
public void restore() {
// this is called only once before the consumer started
// so we can call helper directly
@ -155,6 +167,10 @@ public class PersistenceManager<T> {
marker.update();
}
runExecutor();
synchronized (dependentsLock) {
for (PersistenceManager<?> dep : dependents)
dep.updated();
}
}
protected synchronized void clear() {

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* hazelcast-test
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@ -25,8 +25,8 @@
*/
package ru.entaxy.esb.platform.core.cluster.persistence.activator;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.karaf.cellar.bundle.BundleState;
@ -35,6 +35,7 @@ import org.apache.karaf.cellar.bundle.management.CellarBundleMBean;
import org.apache.karaf.cellar.core.ClusterManager;
import org.apache.karaf.cellar.core.GroupManager;
import org.apache.karaf.cellar.core.event.EventHandler;
import org.apache.karaf.cellar.features.FeatureState;
import org.apache.karaf.features.FeaturesService;
import org.apache.karaf.util.tracker.BaseActivator;
import org.apache.karaf.util.tracker.annotation.ProvideService;
@ -53,46 +54,60 @@ import com.hazelcast.core.MembershipListener;
import ru.entaxy.esb.platform.core.cluster.persistence.PersistenceManager;
import ru.entaxy.esb.platform.core.cluster.persistence.ServiceProvider;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalBundleEventHandler;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalConfigurationEventHandler;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalEventHandlerRegistryDispatcher;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalFeaturesEventHandler;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalHandlerRegistry;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalRepositoryEventHandler;
import ru.entaxy.esb.platform.core.cluster.persistence.handler.LocalTopicConsumer;
@Services(requires = {
@RequireService(ClusterManager.class),
@RequireService(GroupManager.class),
@RequireService(CellarBundleMBean.class),
@RequireService(ConfigurationAdmin.class),
@RequireService(FeaturesService.class),
@RequireService(HazelcastInstance.class)
},
provides = {
@ProvideService(EventHandler.class)
}
)
@RequireService(ClusterManager.class),
@RequireService(GroupManager.class),
@RequireService(CellarBundleMBean.class),
@RequireService(ConfigurationAdmin.class),
@RequireService(FeaturesService.class),
@RequireService(HazelcastInstance.class)
},
provides = {
@ProvideService(EventHandler.class)
})
public class Activator extends BaseActivator implements ServiceProvider, MembershipListener {
private static final String CLASSIFIER_BUNDLE = "bundle";
private static final Logger log = LoggerFactory.getLogger(BaseActivator.class);
private LocalBundleEventHandler bundleEventHandler;
private LocalTopicConsumer consumer;
private static final String CLASSIFIER_BUNDLE = "bundle";
private LocalEventHandlerRegistryDispatcher dispatcher;
private LocalHandlerRegistry handlerRegistry;
private ClusterManager clusterManager;
private GroupManager groupManager;
private HazelcastInstance hazelcastInstance;
private Map<String, PersistenceManager> managers = new ConcurrentHashMap<>();
@Override
protected void doStart() throws Exception {
private static final String CLASSIFIER_CONFIG = "config";
private static final String CLASSIFIER_REPOSITORY = "repository";
private static final String CLASSIFIER_FEATURE = "feature";
private static final Logger log = LoggerFactory.getLogger(BaseActivator.class);
private LocalBundleEventHandler bundleEventHandler;
private LocalConfigurationEventHandler configEventHandler;
private LocalRepositoryEventHandler repositoryEventHandler;
private LocalFeaturesEventHandler featuresEventHandler;
private LocalTopicConsumer consumer;
private LocalEventHandlerRegistryDispatcher dispatcher;
private LocalHandlerRegistry handlerRegistry;
private ClusterManager clusterManager;
private GroupManager groupManager;
private HazelcastInstance hazelcastInstance;
private Map<String, PersistenceManager> managers = new ConcurrentHashMap<>();
@Override
protected void doStart() throws Exception {
clusterManager = getTrackedService(ClusterManager.class);
if (clusterManager == null)
return;
@ -105,23 +120,21 @@ public class Activator extends BaseActivator implements ServiceProvider, Members
FeaturesService featuresService = getTrackedService(FeaturesService.class);
if (featuresService == null)
return;
hazelcastInstance = getTrackedService(HazelcastInstance.class);
if (hazelcastInstance == null)
return;
return;
handlerRegistry = new LocalHandlerRegistry<>();
/*
* bundle management
*/
PersistenceManager<BundleState> bundlePersistenceManager = new PersistenceManager<>(this
, Constants.BUNDLE_MAP
, CLASSIFIER_BUNDLE
, BundleState.class);
PersistenceManager<BundleState> bundlePersistenceManager =
new PersistenceManager<>(this, Constants.BUNDLE_MAP, CLASSIFIER_BUNDLE, BundleState.class);
this.managers.put(CLASSIFIER_BUNDLE, bundlePersistenceManager);
bundleEventHandler = new LocalBundleEventHandler();
bundleEventHandler.setConfigurationAdmin(configurationAdmin);
bundleEventHandler.setClusterManager(clusterManager);
@ -131,26 +144,79 @@ public class Activator extends BaseActivator implements ServiceProvider, Members
bundleEventHandler.setPersistenceManager(bundlePersistenceManager);
bundleEventHandler.init();
handlerRegistry.addHandler(bundleEventHandler);
/*
* config management
*/
PersistenceManager<Properties> configPersistenceManager =
new PersistenceManager<>(this, org.apache.karaf.cellar.config.Constants.CONFIGURATION_MAP,
CLASSIFIER_CONFIG, Properties.class);
this.managers.put(CLASSIFIER_CONFIG, configPersistenceManager);
configEventHandler = new LocalConfigurationEventHandler();
configEventHandler.setConfigurationAdmin(configurationAdmin);
configEventHandler.setClusterManager(clusterManager);
configEventHandler.setGroupManager(groupManager);
configEventHandler.setPersistenceManager(configPersistenceManager);
configEventHandler.init();
handlerRegistry.addHandler(configEventHandler);
/*
* feature repository management
*/
PersistenceManager<String> repositoryPersistenceManager = new PersistenceManager<>(
this,
org.apache.karaf.cellar.features.Constants.REPOSITORIES_MAP,
CLASSIFIER_REPOSITORY,
String.class);
this.managers.put(CLASSIFIER_REPOSITORY, repositoryPersistenceManager);
repositoryEventHandler = new LocalRepositoryEventHandler();
repositoryEventHandler.setConfigurationAdmin(configurationAdmin);
repositoryEventHandler.setClusterManager(clusterManager);
repositoryEventHandler.setGroupManager(groupManager);
repositoryEventHandler.setFeaturesService(featuresService);
repositoryEventHandler.setPersistenceManager(repositoryPersistenceManager);
repositoryEventHandler.init(bundleContext);
handlerRegistry.addHandler(repositoryEventHandler);
/*
* feature management
*/
// TODO
PersistenceManager<FeatureState> featurePersistenceManager = new PersistenceManager<>(
this,
org.apache.karaf.cellar.features.Constants.FEATURES_MAP,
CLASSIFIER_FEATURE,
FeatureState.class);
this.managers.put(CLASSIFIER_FEATURE, featurePersistenceManager);
featuresEventHandler = new LocalFeaturesEventHandler();
featuresEventHandler.setConfigurationAdmin(configurationAdmin);
featuresEventHandler.setClusterManager(clusterManager);
featuresEventHandler.setGroupManager(groupManager);
featuresEventHandler.setFeaturesService(featuresService);
featuresEventHandler.setPersistenceManager(featurePersistenceManager);
featuresEventHandler.init(bundleContext);
handlerRegistry.addHandler(featuresEventHandler);
repositoryPersistenceManager.addDependent(featurePersistenceManager);
/*
* kar management
*/
// TODO
/*
* common services
*/
dispatcher = new LocalEventHandlerRegistryDispatcher<>();
dispatcher.setHandlerRegistry(handlerRegistry);
dispatcher.init();
consumer = new LocalTopicConsumer();
consumer.setInstance(hazelcastInstance);
consumer.setDispatcher(dispatcher);
@ -158,76 +224,77 @@ public class Activator extends BaseActivator implements ServiceProvider, Members
consumer.setConfigurationAdmin(configurationAdmin);
consumer.init();
if (iAmAlone()) {
restoreAll();
restoreAll();
}
consumer.start();
consumer.start();
}
protected void checkStartStopConsumer() {
if (iAmAlone())
consumer.start();
else
consumer.stop();
}
}
protected void restoreAll() {
for (PersistenceManager pm: managers.values())
pm.restore();
}
protected void persistAll() {
for (PersistenceManager pm: managers.values())
pm.persist();
}
protected boolean iAmAlone() {
if (hazelcastInstance.getCluster().getMembers().size()>1)
return false;
return true;
}
@Override
protected void doStop() {
// TODO Auto-generated method stub
super.doStop();
}
protected void checkStartStopConsumer() {
if (iAmAlone())
consumer.start();
else
consumer.stop();
}
@Override
public ClusterManager getClusterManager() {
return clusterManager;
}
protected void restoreAll() {
for (PersistenceManager pm : managers.values())
pm.restore();
}
@Override
public GroupManager getGroupManager() {
return groupManager;
}
@Override
public void memberAdded(MembershipEvent membershipEvent) {
Member member = membershipEvent.getMember();
Member local = hazelcastInstance.getCluster().getLocalMember();
checkStartStopConsumer();
}
@Override
public void memberAttributeChanged(MemberAttributeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void memberRemoved(MembershipEvent membershipEvent) {
Member member = membershipEvent.getMember();
Member local = hazelcastInstance.getCluster().getLocalMember();
if (member.equals(local))
consumer.stop();
else if (iAmAlone()) {
// all other nodes gone
persistAll();
consumer.start();
}
}
protected void persistAll() {
for (PersistenceManager pm : managers.values())
pm.persist();
}
protected boolean iAmAlone() {
if (hazelcastInstance.getCluster().getMembers().size() > 1)
return false;
return true;
}
@Override
protected void doStop() {
if (consumer != null)
consumer.stop();
super.doStop();
}
@Override
public ClusterManager getClusterManager() {
return clusterManager;
}
@Override
public GroupManager getGroupManager() {
return groupManager;
}
@Override
public void memberAdded(MembershipEvent membershipEvent) {
Member member = membershipEvent.getMember();
Member local = hazelcastInstance.getCluster().getLocalMember();
checkStartStopConsumer();
}
@Override
public void memberAttributeChanged(MemberAttributeEvent event) {
// TODO Auto-generated method stub
}
@Override
public void memberRemoved(MembershipEvent membershipEvent) {
Member member = membershipEvent.getMember();
Member local = hazelcastInstance.getCluster().getLocalMember();
if (member.equals(local))
consumer.stop();
else if (iAmAlone()) {
// all other nodes gone
persistAll();
consumer.start();
}
}
}

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@ -24,22 +24,21 @@
* ~~~~~~/licensing~~~~~~
*/
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package ru.entaxy.esb.platform.core.cluster.persistence.handler;
import java.util.List;
import org.apache.karaf.cellar.bundle.BundleEventHandler;
import org.apache.karaf.cellar.bundle.BundleState;
import org.apache.karaf.cellar.bundle.BundleSupport;
import org.apache.karaf.cellar.bundle.ClusterBundleEvent;
import org.apache.karaf.cellar.bundle.Constants;
@ -50,19 +49,13 @@ import org.apache.karaf.cellar.core.control.SwitchStatus;
import org.apache.karaf.cellar.core.event.EventHandler;
import org.apache.karaf.cellar.core.event.EventType;
import org.apache.karaf.features.Feature;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleException;
import org.osgi.framework.wiring.FrameworkWiring;
import org.osgi.service.cm.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.entaxy.esb.platform.core.cluster.persistence.PersistenceManager;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* The BundleEventHandler is responsible to process received cluster event for bundles.
*/
@ -75,7 +68,7 @@ public class LocalBundleEventHandler extends BundleSupport implements EventHandl
private final Switch eventSwitch = new BasicSwitch(SWITCH_ID);
private PersistenceManager persistenceManager;
/**
* Handle received bundle cluster events.
*
@ -91,20 +84,22 @@ public class LocalBundleEventHandler extends BundleSupport implements EventHandl
}
if (groupManager == null) {
//in rare cases for example right after installation this happens!
log.error("CELLAR BUNDLE: retrieved event {} while groupManager is not available yet!", event);
return;
// in rare cases for example right after installation this happens!
log.error("CELLAR BUNDLE: retrieved event {} while groupManager is not available yet!", event);
return;
}
// check if the group is local
if (!groupManager.isLocalGroup(event.getSourceGroup().getName())) {
log.debug("CELLAR BUNDLE: node is not part of the event cluster group {}", event.getSourceGroup().getName());
log.debug("CELLAR BUNDLE: node is not part of the event cluster group {}",
event.getSourceGroup().getName());
return;
}
try {
// check if it's not a "local" event
if (event.getLocal() != null && event.getLocal().getId().equalsIgnoreCase(clusterManager.getNode().getId())) {
if (event.getLocal() != null
&& event.getLocal().getId().equalsIgnoreCase(clusterManager.getNode().getId())) {
log.trace("CELLAR BUNDLE: cluster event is local (coming from local synchronizer or listener)");
return;
}
@ -114,21 +109,25 @@ public class LocalBundleEventHandler extends BundleSupport implements EventHandl
List<Feature> matchingFeatures = retrieveFeature(event.getLocation());
for (Feature feature : matchingFeatures) {
if (!isAllowed(event.getSourceGroup(), "feature", feature.getName(), EventType.INBOUND)) {
log.trace("CELLAR BUNDLE: bundle {} is contained in feature {} marked BLOCKED INBOUND for cluster group {}", event.getLocation(), feature.getName(), event.getSourceGroup().getName());
log.trace(
"CELLAR BUNDLE: bundle {} is contained in feature {} marked BLOCKED INBOUND for cluster group {}",
event.getLocation(), feature.getName(), event.getSourceGroup().getName());
return;
}
}
// TODO mark cluster state as needed to be saved
log.info("-->> WE NEED TO SAVE CLUSTER STATE");
log.debug("-->> WE NEED TO SAVE CLUSTER STATE");
this.persistenceManager.updated();
} else
log.trace("CELLAR BUNDLE: bundle {} is marked BLOCKED INBOUND for cluster group {}", event.getSymbolicName(), event.getSourceGroup().getName());
log.trace("CELLAR BUNDLE: bundle {} is marked BLOCKED INBOUND for cluster group {}",
event.getSymbolicName(), event.getSourceGroup().getName());
} catch (BundleException e) {
log.error("CELLAR BUNDLE: failed to install bundle {}/{}.", new Object[]{event.getSymbolicName(), event.getVersion()}, e);
log.error("CELLAR BUNDLE: failed to install bundle {}/{}.",
new Object[] {event.getSymbolicName(), event.getVersion()}, e);
} catch (Exception e) {
log.error("CELLAR BUNDLE: failed to handle bundle event", e);
log.error("CELLAR BUNDLE: failed to handle bundle event", e);
}
}
@ -151,9 +150,9 @@ public class LocalBundleEventHandler extends BundleSupport implements EventHandl
try {
Configuration configuration = configurationAdmin.getConfiguration(Configurations.NODE, null);
if (configuration != null) {
Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER
+ "."
+ BundleEventHandler.class.getName()));
Boolean status = new Boolean((String) configuration.getProperties().get(Configurations.HANDLER
+ "."
+ BundleEventHandler.class.getName()));
if (status) {
eventSwitch.turnOn();
} else {
@ -165,12 +164,12 @@ public class LocalBundleEventHandler extends BundleSupport implements EventHandl
}
return eventSwitch;
}
public void setPersistenceManager(PersistenceManager persistenceManager) {
this.persistenceManager = persistenceManager;
}
/**
public void setPersistenceManager(PersistenceManager persistenceManager) {
this.persistenceManager = persistenceManager;
}
/**
* Get the cluster event type.
*
* @return the cluster bundle event type.

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@ -24,17 +24,15 @@
* ~~~~~~/licensing~~~~~~
*/
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package ru.entaxy.esb.platform.core.cluster.persistence.handler;
@ -103,7 +101,7 @@ public class LocalEventDispatchTask<E extends Event> implements Runnable {
}
}
if (!dispatched) {
LOGGER.warn("Failed to retrieve handler for cluster event {}", event.getClass());
LOGGER.trace("Failed to retrieve handler for cluster event {}", event.getClass());
}
} catch (Exception ex) {
LOGGER.error("Error while dispatching task", ex);

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* cluster-persistence-service
* ==========
* Copyright (C) 2020 - 2023 EmDev LLC
* Copyright (C) 2020 - 2024 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@ -3,7 +3,7 @@
<parent>
<groupId>ru.entaxy.esb.platform.runtime</groupId>
<artifactId>core</artifactId>
<version>1.9.0</version>
<version>1.10.0</version>
</parent>
<groupId>ru.entaxy.esb.platform.runtime.core</groupId>
<artifactId>cluster</artifactId>