From 763a90ededfb2d7b64737617e7b93eebe4b48ea7 Mon Sep 17 00:00:00 2001 From: Thomas Jaeckle Date: Wed, 13 Jul 2022 18:06:58 +0200 Subject: [PATCH] only start BlockedNamespacesUpdater in one service: policies * as it must only exist once in the cluster (previously in concierge) Signed-off-by: Thomas Jaeckle --- .../ditto/policies/service/starter/PoliciesRootActor.java | 2 ++ .../ditto/things/service/starter/ThingsRootActor.java | 8 +------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/policies/service/src/main/java/org/eclipse/ditto/policies/service/starter/PoliciesRootActor.java b/policies/service/src/main/java/org/eclipse/ditto/policies/service/starter/PoliciesRootActor.java index 0c6d5db0f7..41a1953dc7 100755 --- a/policies/service/src/main/java/org/eclipse/ditto/policies/service/starter/PoliciesRootActor.java +++ b/policies/service/src/main/java/org/eclipse/ditto/policies/service/starter/PoliciesRootActor.java @@ -84,6 +84,8 @@ private PoliciesRootActor(final PoliciesConfig policiesConfig, final BlockedNamespaces blockedNamespaces = BlockedNamespaces.of(actorSystem); // start cluster singleton that writes to the distributed cache of blocked namespaces + // this must only be started for one service in the cluster - which "policies" was chosen for ... + // this BlockedNamespacesUpdater updates the DData "BlockedNamespaces" data structure final Props blockedNamespacesUpdaterProps = BlockedNamespacesUpdater.props(blockedNamespaces, pubSubMediator); ClusterUtil.startSingleton(actorSystem, getContext(), PoliciesMessagingConstants.CLUSTER_ROLE, BlockedNamespacesUpdater.ACTOR_NAME, blockedNamespacesUpdaterProps); diff --git a/things/service/src/main/java/org/eclipse/ditto/things/service/starter/ThingsRootActor.java b/things/service/src/main/java/org/eclipse/ditto/things/service/starter/ThingsRootActor.java index 1fc1cd2977..9c2802f390 100755 --- a/things/service/src/main/java/org/eclipse/ditto/things/service/starter/ThingsRootActor.java +++ b/things/service/src/main/java/org/eclipse/ditto/things/service/starter/ThingsRootActor.java @@ -21,7 +21,6 @@ import org.eclipse.ditto.internal.utils.aggregator.ThingsAggregatorActor; import org.eclipse.ditto.internal.utils.aggregator.ThingsAggregatorConfig; import org.eclipse.ditto.internal.utils.akka.logging.DittoLoggerFactory; -import org.eclipse.ditto.internal.utils.cluster.ClusterUtil; import org.eclipse.ditto.internal.utils.cluster.DistPubSubAccess; import org.eclipse.ditto.internal.utils.cluster.RetrieveStatisticsDetailsResponseSupplier; import org.eclipse.ditto.internal.utils.cluster.ShardRegionExtractor; @@ -30,7 +29,6 @@ import org.eclipse.ditto.internal.utils.health.DefaultHealthCheckingActorFactory; import org.eclipse.ditto.internal.utils.health.HealthCheckingActorOptions; import org.eclipse.ditto.internal.utils.namespaces.BlockedNamespaces; -import org.eclipse.ditto.internal.utils.namespaces.BlockedNamespacesUpdater; import org.eclipse.ditto.internal.utils.persistence.mongo.MongoClientWrapper; import org.eclipse.ditto.internal.utils.persistence.mongo.MongoHealthChecker; import org.eclipse.ditto.internal.utils.persistence.mongo.config.MongoDbConfig; @@ -40,8 +38,8 @@ import org.eclipse.ditto.internal.utils.pubsub.DistributedPub; import org.eclipse.ditto.internal.utils.pubsubthings.LiveSignalPub; import org.eclipse.ditto.internal.utils.pubsubthings.ThingEventPubSubFactory; -import org.eclipse.ditto.policies.enforcement.PolicyEnforcerProvider; import org.eclipse.ditto.policies.enforcement.DefaultPolicyEnforcerProvider; +import org.eclipse.ditto.policies.enforcement.PolicyEnforcerProvider; import org.eclipse.ditto.things.api.ThingsMessagingConstants; import org.eclipse.ditto.things.model.signals.events.ThingEvent; import org.eclipse.ditto.things.service.common.config.ThingsConfig; @@ -90,10 +88,6 @@ private ThingsRootActor(final ThingsConfig thingsConfig, final LiveSignalPub liveSignalPub = LiveSignalPub.of(getContext(), distributedAcks); final BlockedNamespaces blockedNamespaces = BlockedNamespaces.of(actorSystem); - // start cluster singleton that writes to the distributed cache of blocked namespaces - final Props blockedNamespacesUpdaterProps = BlockedNamespacesUpdater.props(blockedNamespaces, pubSubMediator); - ClusterUtil.startSingleton(actorSystem, getContext(), CLUSTER_ROLE, - BlockedNamespacesUpdater.ACTOR_NAME, blockedNamespacesUpdaterProps); final PolicyEnforcerProvider policyEnforcerProvider = DefaultPolicyEnforcerProvider.getInstance(actorSystem); final Props thingSupervisorActorProps = getThingSupervisorActorProps(pubSubMediator, distributedPubThingEventsForTwin,