Code Review
/
netconf.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Fix logging arguments
[netconf.git]
/
netconf
/
netconf-topology-singleton
/
src
/
main
/
java
/
org
/
opendaylight
/
netconf
/
topology
/
singleton
/
impl
/
NetconfTopologyContext.java
diff --git
a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java
b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java
index 3d74d07d308efbf27b47c4731d4ef40842041829..09e0fefc685871052a4c3e436258fec286a3293a 100644
(file)
--- a/
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java
+++ b/
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java
@@
-5,7
+5,6
@@
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.netconf.topology.singleton.impl;
import static org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils.DEFAULT_SCHEMA_REPOSITORY;
package org.opendaylight.netconf.topology.singleton.impl;
import static org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils.DEFAULT_SCHEMA_REPOSITORY;
@@
-18,7
+17,9
@@
import akka.util.Timeout;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nonnull;
import javax.annotation.Nonnull;
+import org.opendaylight.mdsal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
@@
-32,34
+33,35
@@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scala.concurrent.Future;
import org.slf4j.LoggerFactory;
import scala.concurrent.Future;
-class NetconfTopologyContext implements ClusterSingletonService {
+class NetconfTopologyContext implements ClusterSingletonService
, AutoCloseable
{
private static final Logger LOG = LoggerFactory.getLogger(NetconfTopologyContext.class);
private final ServiceGroupIdentifier serviceGroupIdent;
private final Timeout actorResponseWaitTime;
private static final Logger LOG = LoggerFactory.getLogger(NetconfTopologyContext.class);
private final ServiceGroupIdentifier serviceGroupIdent;
private final Timeout actorResponseWaitTime;
+ private final DOMMountPointService mountService;
+
private NetconfTopologySetup netconfTopologyDeviceSetup;
private RemoteDeviceId remoteDeviceId;
private RemoteDeviceConnector remoteDeviceConnector;
private NetconfNodeManager netconfNodeManager;
private NetconfTopologySetup netconfTopologyDeviceSetup;
private RemoteDeviceId remoteDeviceId;
private RemoteDeviceConnector remoteDeviceConnector;
private NetconfNodeManager netconfNodeManager;
- private boolean finalClose = false;
- private boolean closed = false;
- private boolean isMaster;
-
private ActorRef masterActorRef;
private ActorRef masterActorRef;
+ private final AtomicBoolean closed = new AtomicBoolean(false);
+ private final AtomicBoolean stopped = new AtomicBoolean(false);
+ private volatile boolean isMaster;
NetconfTopologyContext(final NetconfTopologySetup netconfTopologyDeviceSetup,
final ServiceGroupIdentifier serviceGroupIdent,
NetconfTopologyContext(final NetconfTopologySetup netconfTopologyDeviceSetup,
final ServiceGroupIdentifier serviceGroupIdent,
- final Timeout actorResponseWaitTime) {
+ final Timeout actorResponseWaitTime
, final DOMMountPointService mountService
) {
this.netconfTopologyDeviceSetup = Preconditions.checkNotNull(netconfTopologyDeviceSetup);
this.serviceGroupIdent = serviceGroupIdent;
this.actorResponseWaitTime = actorResponseWaitTime;
this.netconfTopologyDeviceSetup = Preconditions.checkNotNull(netconfTopologyDeviceSetup);
this.serviceGroupIdent = serviceGroupIdent;
this.actorResponseWaitTime = actorResponseWaitTime;
+ this.mountService = mountService;
remoteDeviceId = NetconfTopologyUtils.createRemoteDeviceId(netconfTopologyDeviceSetup.getNode().getNodeId(),
remoteDeviceId = NetconfTopologyUtils.createRemoteDeviceId(netconfTopologyDeviceSetup.getNode().getNodeId(),
- netconfTopologyDeviceSetup.getNode().
getA
ugmentation(NetconfNode.class));
+ netconfTopologyDeviceSetup.getNode().
a
ugmentation(NetconfNode.class));
- remoteDeviceConnector = new RemoteDeviceConnectorImpl(netconfTopologyDeviceSetup, remoteDeviceId,
- actorResponseWaitTime);
+ remoteDeviceConnector = new RemoteDeviceConnectorImpl(netconfTopologyDeviceSetup, remoteDeviceId);
netconfNodeManager = createNodeDeviceManager();
}
netconfNodeManager = createNodeDeviceManager();
}
@@
-76,14
+78,15
@@
class NetconfTopologyContext implements ClusterSingletonService {
netconfNodeManager = null;
}
netconfNodeManager = null;
}
- if (!finalClose) {
- final String masterAddress = Cluster.get(netconfTopologyDeviceSetup.getActorSystem()).selfAddress().toString();
+ if (!closed.get()) {
+ final String masterAddress =
+ Cluster.get(netconfTopologyDeviceSetup.getActorSystem()).selfAddress().toString();
masterActorRef = netconfTopologyDeviceSetup.getActorSystem().actorOf(NetconfNodeActor.props(
netconfTopologyDeviceSetup, remoteDeviceId, DEFAULT_SCHEMA_REPOSITORY, DEFAULT_SCHEMA_REPOSITORY,
masterActorRef = netconfTopologyDeviceSetup.getActorSystem().actorOf(NetconfNodeActor.props(
netconfTopologyDeviceSetup, remoteDeviceId, DEFAULT_SCHEMA_REPOSITORY, DEFAULT_SCHEMA_REPOSITORY,
- actorResponseWaitTime),
+ actorResponseWaitTime
, mountService
),
NetconfTopologyUtils.createMasterActorName(remoteDeviceId.getName(), masterAddress));
NetconfTopologyUtils.createMasterActorName(remoteDeviceId.getName(), masterAddress));
- remoteDeviceConnector.startRemoteDeviceConnection(
masterActorRef
);
+ remoteDeviceConnector.startRemoteDeviceConnection(
newMasterSalFacade()
);
}
}
}
}
@@
-92,13
+95,13
@@
class NetconfTopologyContext implements ClusterSingletonService {
@Override
public ListenableFuture<Void> closeServiceInstance() {
@Override
public ListenableFuture<Void> closeServiceInstance() {
- if (!
finalClose
) {
+ if (!
closed.get()
) {
// in case that master changes role to slave, new NodeDeviceManager must be created and listener registered
netconfNodeManager = createNodeDeviceManager();
}
stopDeviceConnectorAndActor();
// in case that master changes role to slave, new NodeDeviceManager must be created and listener registered
netconfNodeManager = createNodeDeviceManager();
}
stopDeviceConnectorAndActor();
- return Futures.immediate
Checked
Future(null);
+ return Futures.immediateFuture(null);
}
@Override
}
@Override
@@
-108,16
+111,18
@@
class NetconfTopologyContext implements ClusterSingletonService {
private NetconfNodeManager createNodeDeviceManager() {
final NetconfNodeManager ndm =
private NetconfNodeManager createNodeDeviceManager() {
final NetconfNodeManager ndm =
- new NetconfNodeManager(netconfTopologyDeviceSetup, remoteDeviceId, DEFAULT_SCHEMA_REPOSITORY,
- DEFAULT_SCHEMA_REPOSITORY, actorResponseWaitTime);
+ new NetconfNodeManager(netconfTopologyDeviceSetup, remoteDeviceId, actorResponseWaitTime, mountService);
ndm.registerDataTreeChangeListener(netconfTopologyDeviceSetup.getTopologyId(),
ndm.registerDataTreeChangeListener(netconfTopologyDeviceSetup.getTopologyId(),
- netconfTopologyDeviceSetup.getNode().
getK
ey());
+ netconfTopologyDeviceSetup.getNode().
k
ey());
return ndm;
}
return ndm;
}
- void closeFinal() throws Exception {
- finalClose = true;
+ @Override
+ public void close() {
+ if (!closed.compareAndSet(false, true)) {
+ return;
+ }
if (netconfNodeManager != null) {
netconfNodeManager.close();
if (netconfNodeManager != null) {
netconfNodeManager.close();
@@
-127,13
+132,13
@@
class NetconfTopologyContext implements ClusterSingletonService {
}
/**
}
/**
- *
If configuration data was changed
+ *
Refresh, if configuration data was changed.
* @param setup new setup
*/
void refresh(@Nonnull final NetconfTopologySetup setup) {
netconfTopologyDeviceSetup = Preconditions.checkNotNull(setup);
remoteDeviceId = NetconfTopologyUtils.createRemoteDeviceId(netconfTopologyDeviceSetup.getNode().getNodeId(),
* @param setup new setup
*/
void refresh(@Nonnull final NetconfTopologySetup setup) {
netconfTopologyDeviceSetup = Preconditions.checkNotNull(setup);
remoteDeviceId = NetconfTopologyUtils.createRemoteDeviceId(netconfTopologyDeviceSetup.getNode().getNodeId(),
- netconfTopologyDeviceSetup.getNode().
getA
ugmentation(NetconfNode.class));
+ netconfTopologyDeviceSetup.getNode().
a
ugmentation(NetconfNode.class));
if (isMaster) {
remoteDeviceConnector.stopRemoteDeviceConnection();
if (isMaster) {
remoteDeviceConnector.stopRemoteDeviceConnection();
@@
-141,7
+146,7
@@
class NetconfTopologyContext implements ClusterSingletonService {
if (!isMaster) {
netconfNodeManager.refreshDevice(netconfTopologyDeviceSetup, remoteDeviceId);
}
if (!isMaster) {
netconfNodeManager.refreshDevice(netconfTopologyDeviceSetup, remoteDeviceId);
}
- remoteDeviceConnector = new RemoteDeviceConnectorImpl(netconfTopologyDeviceSetup, remoteDeviceId
, actorResponseWaitTime
);
+ remoteDeviceConnector = new RemoteDeviceConnectorImpl(netconfTopologyDeviceSetup, remoteDeviceId);
if (isMaster) {
final Future<Object> future = Patterns.ask(masterActorRef, new RefreshSetupMasterActorData(
if (isMaster) {
final Future<Object> future = Patterns.ask(masterActorRef, new RefreshSetupMasterActorData(
@@
-149,19
+154,19
@@
class NetconfTopologyContext implements ClusterSingletonService {
future.onComplete(new OnComplete<Object>() {
@Override
future.onComplete(new OnComplete<Object>() {
@Override
- public void onComplete(final Throwable failure, final Object success)
throws Throwable
{
+ public void onComplete(final Throwable failure, final Object success) {
if (failure != null) {
if (failure != null) {
- LOG.error("Failed to refresh master actor data
: {}
", failure);
+ LOG.error("Failed to refresh master actor data", failure);
return;
}
return;
}
- remoteDeviceConnector.startRemoteDeviceConnection(
masterActorRef
);
+ remoteDeviceConnector.startRemoteDeviceConnection(
newMasterSalFacade()
);
}
}, netconfTopologyDeviceSetup.getActorSystem().dispatcher());
}
}
}
}, netconfTopologyDeviceSetup.getActorSystem().dispatcher());
}
}
- private
synchronized
void stopDeviceConnectorAndActor() {
- if (
closed
) {
+ private void stopDeviceConnectorAndActor() {
+ if (
!stopped.compareAndSet(false, true)
) {
return;
}
if (remoteDeviceConnector != null) {
return;
}
if (remoteDeviceConnector != null) {
@@
-172,6
+177,10
@@
class NetconfTopologyContext implements ClusterSingletonService {
netconfTopologyDeviceSetup.getActorSystem().stop(masterActorRef);
masterActorRef = null;
}
netconfTopologyDeviceSetup.getActorSystem().stop(masterActorRef);
masterActorRef = null;
}
- closed = true;
+ }
+
+ protected MasterSalFacade newMasterSalFacade() {
+ return new MasterSalFacade(remoteDeviceId, netconfTopologyDeviceSetup.getActorSystem(), masterActorRef,
+ actorResponseWaitTime, mountService, netconfTopologyDeviceSetup.getDataBroker());
}
}
}
}