Uploaded image for project: 'netconf'
  1. netconf
  2. NETCONF-1146

Operational data of netconf-topology node may not be removed

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Highest Highest
    • 6.0.3
    • 6.0.0, 6.0.1, 6.0.2
    • netconf-topology

      Discovered in netconf-csit-1node-userfeatures-all-master #283.

      The operational state data of the NETCONF node in netconf-topology may not be removed when its configuration is deleted. The following shows the Karaf log when this happens:

      2023-08-31T22:31:51,157 | INFO  | pipe-log:log "ROBOT MESSAGE: Starting test netconf-userfeatures.txt.CRUD.CRUD-RPC.Deconfigure_Device_From_Netconf_Temporarily" | core                             | 120 - org.apache.karaf.log.core - 4.4.3 | ROBOT MESSAGE: Starting test netconf-userfeatures.txt.CRUD.CRUD-RPC.Deconfigure_Device_From_Netconf_Temporarily
      2023-08-31T22:31:51,418 | INFO  | CommitFutures-1  | NetconfTopologyRPCProvider       | 292 - org.opendaylight.netconf.topology - 7.0.0.SNAPSHOT | delete-device RPC: Removed netconf node successfully.
      2023-08-31T22:31:51,419 | WARN  | opendaylight-cluster-data-notification-dispatcher-36 | NetconfDeviceCommunicator        | 265 - org.opendaylight.netconf.client-mdsal - 7.0.0.SNAPSHOT | RemoteDeviceId[name=netconf-test-device, address=/10.30.171.220:17830]: Session terminated Session closed
      2023-08-31T22:31:51,426 | WARN  | globalWorkerGroup-3-6 | NetconfClientSessionImpl         | 291 - org.opendaylight.netconf.shaded-sshd - 7.0.0.SNAPSHOT | exceptionCaught(NetconfClientSessionImpl[admin@/10.30.171.220:17830])[state=Graceful] SshException: Write attempt on closing session: SSH_MSG_CHANNEL_EOF
      2023-08-31T22:31:51,428 | WARN  | opendaylight-cluster-data-shard-dispatcher-29 | ShardDataTree                    | 210 - org.opendaylight.controller.sal-distributed-datastore - 8.0.1 | member-1-shard-topology-operational: Unexpected failure in validation phase
      java.util.ConcurrentModificationException: null
      	at java.util.HashMap$HashIterator.nextNode(HashMap.java:1597) ~[?:?]
      	at java.util.HashMap$ValueIterator.next(HashMap.java:1625) ~[?:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:374) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractDataTreeTip.validate(AbstractDataTreeTip.java:37) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.lambda$processNextPendingTransaction$4(ShardDataTree.java:838) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPending(ShardDataTree.java:884) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPendingTransaction(ShardDataTree.java:831) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.startCanCommit(ShardDataTree.java:986) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.SimpleShardDataTreeCohort.canCommit(SimpleShardDataTreeCohort.java:99) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.directCommit(FrontendReadWriteTransaction.java:433) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.handleCommitLocalTransaction(FrontendReadWriteTransaction.java:524) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.doHandleRequest(FrontendReadWriteTransaction.java:193) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendTransaction.handleRequest(FrontendTransaction.java:138) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.AbstractFrontendHistory.handleTransactionRequest(AbstractFrontendHistory.java:122) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.LeaderFrontendState$Enabled.handleTransactionRequest(LeaderFrontendState.java:137) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleRequest(Shard.java:638) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleRequestEnvelope(Shard.java:440) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:368) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:270) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction$OrElse.apply(PartialFunction.scala:266) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction$OrElse.apply(PartialFunction.scala:266) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:93) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:29) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at scala.runtime.AbstractPartialFunction.applyOrElse(AbstractPartialFunction.scala:27) ~[bundleFile:?]
      	at akka.actor.Actor.aroundReceive(Actor.scala:537) ~[bundleFile:?]
      	at akka.actor.Actor.aroundReceive$(Actor.scala:535) ~[bundleFile:?]
      	at akka.persistence.AbstractPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:295) ~[bundleFile:?]
      	at akka.persistence.Eventsourced$$anon$4.stateReceive(Eventsourced.scala:917) ~[bundleFile:?]
      	at akka.persistence.Eventsourced.aroundReceive(Eventsourced.scala:245) ~[bundleFile:?]
      	at akka.persistence.Eventsourced.aroundReceive$(Eventsourced.scala:244) ~[bundleFile:?]
      	at akka.persistence.AbstractPersistentActor.aroundReceive(PersistentActor.scala:295) ~[bundleFile:?]
      	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:579) ~[bundleFile:?]
      	at akka.actor.ActorCell.invoke(ActorCell.scala:547) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.run(Mailbox.scala:231) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.exec(Mailbox.scala:243) ~[bundleFile:?]
      	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
      	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
      	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
      	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
      	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
      2023-08-31T22:31:51,455 | WARN  | CommitFutures-2  | NetconfDeviceTopologyAdapter     | 292 - org.opendaylight.netconf.topology - 7.0.0.SNAPSHOT | RemoteDeviceId[name=netconf-test-device, address=/10.30.171.220:17830]: TransactionChain(org.opendaylight.mdsal.binding.dom.adapter.BindingDOMTransactionChainAdapter@348f00d1) DOM-CHAIN-2-2 FAILED!
      org.opendaylight.mdsal.common.api.TransactionCommitFailedException: canCommit encountered an unexpected failure
      	at org.opendaylight.mdsal.dom.broker.TransactionCommitFailedExceptionMapper.newWithCause(TransactionCommitFailedExceptionMapper.java:37) ~[bundleFile:?]
      	at org.opendaylight.mdsal.dom.broker.TransactionCommitFailedExceptionMapper.newWithCause(TransactionCommitFailedExceptionMapper.java:18) ~[bundleFile:?]
      	at org.opendaylight.yangtools.util.concurrent.ExceptionMapper.apply(ExceptionMapper.java:99) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker.handleException(ConcurrentDOMDataBroker.java:164) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.databroker.ConcurrentDOMDataBroker$1.onFailure(ConcurrentDOMDataBroker.java:108) ~[bundleFile:?]
      	at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1119) ~[bundleFile:?]
      	at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31) ~[bundleFile:?]
      	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1286) ~[bundleFile:?]
      	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:1055) ~[bundleFile:?]
      	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:807) ~[bundleFile:?]
      	at com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:55) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.databroker.actors.dds.AbstractProxyTransaction.lambda$directCommit$4(AbstractProxyTransaction.java:517) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ConnectionEntry.complete(ConnectionEntry.java:47) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.AbstractClientConnection.receiveResponse(AbstractClientConnection.java:494) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.AbstractReceivingClientConnection.receiveResponse(AbstractReceivingClientConnection.java:68) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ClientActorBehavior.onResponse(ClientActorBehavior.java:184) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ClientActorBehavior.onRequestFailure(ClientActorBehavior.java:196) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ClientActorBehavior.internalOnRequestFailure(ClientActorBehavior.java:248) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ClientActorBehavior.onReceiveCommand(ClientActorBehavior.java:155) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.ClientActorBehavior.onReceiveCommand(ClientActorBehavior.java:48) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.access.client.AbstractClientActor.onReceiveCommand(AbstractClientActor.java:74) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:269) ~[bundleFile:?]
      	at akka.actor.Actor.aroundReceive(Actor.scala:537) ~[bundleFile:?]
      	at akka.actor.Actor.aroundReceive$(Actor.scala:535) ~[bundleFile:?]
      	at akka.persistence.AbstractPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:295) ~[bundleFile:?]
      	at akka.persistence.Eventsourced$$anon$4.stateReceive(Eventsourced.scala:917) ~[bundleFile:?]
      	at akka.persistence.Eventsourced.aroundReceive(Eventsourced.scala:245) ~[bundleFile:?]
      	at akka.persistence.Eventsourced.aroundReceive$(Eventsourced.scala:244) ~[bundleFile:?]
      	at akka.persistence.AbstractPersistentActor.aroundReceive(PersistentActor.scala:295) ~[bundleFile:?]
      	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:579) ~[bundleFile:?]
      	at akka.actor.ActorCell.invoke(ActorCell.scala:547) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.run(Mailbox.scala:231) ~[bundleFile:?]
      	at akka.dispatch.Mailbox.exec(Mailbox.scala:243) ~[bundleFile:?]
      	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
      	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
      	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
      	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
      	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
      Caused by: java.util.ConcurrentModificationException
      	at java.util.HashMap$HashIterator.nextNode(HashMap.java:1597) ~[?:?]
      	at java.util.HashMap$ValueIterator.next(HashMap.java:1625) ~[?:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:409) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkMergeApplicable(AbstractNodeContainerModificationStrategy.java:396) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:111) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkChildPreconditions(AbstractNodeContainerModificationStrategy.java:415) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.checkTouchApplicable(AbstractNodeContainerModificationStrategy.java:374) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:109) ~[bundleFile:?]
      	at org.opendaylight.yangtools.yang.data.tree.impl.AbstractDataTreeTip.validate(AbstractDataTreeTip.java:37) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.lambda$processNextPendingTransaction$4(ShardDataTree.java:838) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPending(ShardDataTree.java:884) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.processNextPendingTransaction(ShardDataTree.java:831) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.ShardDataTree.startCanCommit(ShardDataTree.java:986) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.SimpleShardDataTreeCohort.canCommit(SimpleShardDataTreeCohort.java:99) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.directCommit(FrontendReadWriteTransaction.java:433) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.handleCommitLocalTransaction(FrontendReadWriteTransaction.java:524) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendReadWriteTransaction.doHandleRequest(FrontendReadWriteTransaction.java:193) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.FrontendTransaction.handleRequest(FrontendTransaction.java:138) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.AbstractFrontendHistory.handleTransactionRequest(AbstractFrontendHistory.java:122) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.LeaderFrontendState$Enabled.handleTransactionRequest(LeaderFrontendState.java:137) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleRequest(Shard.java:638) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleRequestEnvelope(Shard.java:440) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:368) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:270) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction$OrElse.apply(PartialFunction.scala:266) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) ~[bundleFile:?]
      	at scala.PartialFunction$OrElse.apply(PartialFunction.scala:266) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:93) ~[bundleFile:?]
      	at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:29) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse(PartialFunction.scala:214) ~[bundleFile:?]
      	at scala.PartialFunction.applyOrElse$(PartialFunction.scala:213) ~[bundleFile:?]
      	at scala.runtime.AbstractPartialFunction.applyOrElse(AbstractPartialFunction.scala:27) ~[bundleFile:?]
      	... 17 more
      

      It appears that there is a race between NetconfDeviceTopologyAdapter.updateDeviceData() to update operational data of the node after the device is disconnected and NetconfDeviceTopologyAdapter.close() to delete the node.

            rovarga Robert Varga
            sangwookha Sangwook Ha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: