device_add.logDescription:
Un-mounting a netconf device does not clean up MD-SAL DOM mountpoints
Topology:
ODL-Neon---------(junos netconf device)
Steps to reproduce:
- Mount Juniper-MX device to ODL with below payload.
Mount URL:(operation PUT)
xml_playload
<node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>Man-2</node-id> <host xmlns="urn:opendaylight:netconf-node-topology"><device IP></host> <password xmlns="urn:opendaylight:netconf-node-topology">pwd</password> <username xmlns="urn:opendaylight:netconf-node-topology">user</username> <port xmlns="urn:opendaylight:netconf-node-topology">830</port> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">2</keepalive-delay> </node>
2. observe that device status chages to connected , in couple of minutes. GET. http://<IP>:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/Man-2
3. Delete the device
Operation DELETE:
observe that ODL fails to clean up the mounted device properly.
if the device is remounted again , it complains below.
2019-05-21T14:15:08,756 | ERROR | remote-connector-processing-executor-14 | NetconfDevice | 293 - org.opendaylight.netconf.sal-netconf-connector - 1.9.0 | RemoteDevice\{Man-1}: Initialization in sal failed, disconnecting from device java.lang.IllegalStateException: Mount point already exists at com.google.common.base.Preconditions.checkState(Preconditions.java:507) ~[32:com.google.guava:25.1.0.jre] at org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl.createMountPoint(DOMMountPointServiceImpl.java:48) ~[253:org.opendaylight.mdsal.dom-broker:3.0.6] at Proxy0f2bd717_d90b_4019_b6ab_2db555b4c1be.createMountPoint(Unknown Source) ~[?:?] at Proxy86cb11c3_dc67_4420_95b9_7eb4b50e7d58.createMountPoint(Unknown Source) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalProvider$MountInstance.onTopologyDeviceConnected(NetconfDeviceSalProvider.java:130) ~[293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalProvider$MountInstance.onTopologyDeviceConnected(NetconfDeviceSalProvider.java:120) ~[293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.topology.singleton.impl.MasterSalFacade.registerMasterMountPoint(MasterSalFacade.java:148) ~[?:?] at org.opendaylight.netconf.topology.singleton.impl.MasterSalFacade.onDeviceConnected(MasterSalFacade.java:92) ~[?:?] at org.opendaylight.netconf.topology.singleton.impl.MasterSalFacade.onDeviceConnected(MasterSalFacade.java:79) ~[?:?] at org.opendaylight.netconf.topology.singleton.impl.MasterSalFacade.onDeviceConnected(MasterSalFacade.java:41) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade.onDeviceConnected(KeepaliveSalFacade.java:144) ~[293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade.onDeviceConnected(KeepaliveSalFacade.java:51) ~[293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.NetconfDevice.handleSalInitializationSuccess(NetconfDevice.java:243) [293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.NetconfDevice.access$500(NetconfDevice.java:79) [293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.NetconfDevice$SchemaSetup.setUpSchema(NetconfDevice.java:522) [293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at org.opendaylight.netconf.sal.connect.netconf.NetconfDevice$SchemaSetup.run(NetconfDevice.java:481) [293:org.opendaylight.netconf.sal-netconf-connector:1.9.0] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?] at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125) [32:com.google.guava:25.1.0.jre] at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57) [32:com.google.guava:25.1.0.jre] at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78) [32:com.google.guava:25.1.0.jre] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?] at java.lang.Thread.run(Thread.java:748) [?:?]
- relates to
-
NETCONF-784 ReconnectPromise keep reconnecting after device unregistered
- Resolved
- blocks
-
SDNC-1380 Loading...