X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fconfig%2Factor_system_provider%2Fimpl%2FActorSystemProviderImpl.java;fp=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fconfig%2Factor_system_provider%2Fimpl%2FActorSystemProviderImpl.java;h=ef2db4b0c19d5695c0327822ee66c973dc148098;hp=5b6e447d0b09e165e66178bb596bf6d813bf5d7d;hb=88620eacdbb3a8e4b8c3114f0628ff95a5c8b5f6;hpb=30535bcc4c2770cb8500469fe40bdfb37d8ade4d diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/actor_system_provider/impl/ActorSystemProviderImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/actor_system_provider/impl/ActorSystemProviderImpl.java index 5b6e447d0b..ef2db4b0c1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/actor_system_provider/impl/ActorSystemProviderImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/actor_system_provider/impl/ActorSystemProviderImpl.java @@ -9,22 +9,14 @@ package org.opendaylight.controller.config.yang.config.actor_system_provider.imp import akka.actor.ActorSystem; import akka.actor.Props; -import akka.osgi.BundleDelegatingClassLoader; import com.typesafe.config.Config; -import com.typesafe.config.ConfigFactory; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.concurrent.TimeUnit; import org.opendaylight.controller.cluster.ActorSystemProvider; import org.opendaylight.controller.cluster.ActorSystemProviderListener; -import org.opendaylight.controller.cluster.common.actor.AkkaConfigurationReader; -import org.opendaylight.controller.cluster.common.actor.FileAkkaConfigurationReader; import org.opendaylight.controller.cluster.common.actor.QuarantinedMonitorActor; import org.opendaylight.controller.cluster.datastore.TerminationMonitor; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.util.ListenerRegistry; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Await; @@ -32,33 +24,18 @@ import scala.concurrent.duration.Duration; public class ActorSystemProviderImpl implements ActorSystemProvider, AutoCloseable { private static final String ACTOR_SYSTEM_NAME = "opendaylight-cluster-data"; - private static final String CONFIGURATION_NAME = "odl-cluster-data"; static final Logger LOG = LoggerFactory.getLogger(ActorSystemProviderImpl.class); private final ActorSystem actorSystem; private final ListenerRegistry listeners = new ListenerRegistry<>(); - public ActorSystemProviderImpl(final BundleContext bundleContext) { + public ActorSystemProviderImpl( + final ClassLoader classLoader, final Props quarantinedMonitorActorProps, final Config akkaConfig) { LOG.info("Creating new ActorSystem"); - final Bundle bundle = bundleContext.getBundle(); - - final BundleDelegatingClassLoader classLoader = AccessController.doPrivileged( - (PrivilegedAction) () -> - new BundleDelegatingClassLoader(bundle, Thread.currentThread().getContextClassLoader())); - - final AkkaConfigurationReader configurationReader = new FileAkkaConfigurationReader(); - final Config akkaConfig = ConfigFactory.load(configurationReader.read()).getConfig(CONFIGURATION_NAME); - actorSystem = ActorSystem.create(ACTOR_SYSTEM_NAME, akkaConfig, classLoader); actorSystem.actorOf(Props.create(TerminationMonitor.class), TerminationMonitor.ADDRESS); - - actorSystem.actorOf(QuarantinedMonitorActor.props(() -> { - // restart the entire karaf container - LOG.warn("Restarting karaf container"); - System.setProperty("karaf.restart.jvm", "true"); - bundleContext.getBundle(0).stop(); - }), QuarantinedMonitorActor.ADDRESS); + actorSystem.actorOf(quarantinedMonitorActorProps, QuarantinedMonitorActor.ADDRESS); } @Override @@ -79,7 +56,7 @@ public class ActorSystemProviderImpl implements ActorSystemProvider, AutoCloseab try { Await.result(actorSystem.terminate(), Duration.create(10, TimeUnit.SECONDS)); - } catch (Exception e) { + } catch (final Exception e) { LOG.warn("Error awaiting actor termination", e); } }