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

Yangtools Null Pointer when running a binding API call to a mounted device with a new model

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • None
    • netconf
    • None
    • Operating System: All
      Platform: All

    • 5967

      This is a continuation of NETCONF-70.

      Two issues are put forward:
      1) The 4350 defect is not actually adequately solved by the 4577 fix, which provides an impractical workaround (it is not realistic to expect an operator/user to mount and maintain a separate cache for each device)
      2) Tests with the 4577 fix in Beryllium show that the problem is still there, although at a different point, with a null exception error.

      The scenario for this is to have a binding aware app, which uses device-model version X, attempt to commit via mounted netconf a configuration on a device running device-model version Y (Y>X).

      2016-05-25 13:23:25,357 | ERROR | on-dispatcher-60 | DataChangeListener | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.3.2.SNAPSHOT | Error notifying listener org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.GBPListenerImpl
      java.lang.NullPointerException: Cannot find (http://www.cisco.com/yang/cisco-vpp?revision=2015-10-05)vpp node in schema context. Instance identifier has to start from root
      at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:250)[64:com.google.guava:18.0.0]
      at org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.fromInstanceId(ImmutableNodes.java:134)[103:org.opendaylight.yangtools.yang-data-impl:0.8.2.SNAPSHOT]
      at org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.fromInstanceId(ImmutableNodes.java:105)[103:org.opendaylight.yangtools.yang-data-impl:0.8.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toFilterStructure(NetconfMessageTransformUtil.java:165)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.getConfig(NetconfBaseOps.java:161)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.getConfigRunning(NetconfBaseOps.java:174)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadOnlyTx.readConfigurationData(ReadOnlyTx.java:69)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadOnlyTx.read(ReadOnlyTx.java:125)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadWriteTx.read(ReadWriteTx.java:70)[316:org.opendaylight.netconf.sal-netconf-connector:1.3.2.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doRead(AbstractForwardedTransaction.java:63)[147:org.opendaylight.controller.sal-binding-broker-impl:1.3.2.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.BindingDOMReadWriteTransactionAdapter.read(BindingDOMReadWriteTransactionAdapter.java:31)[147:org.opendaylight.controller.sal-binding-broker-impl:1.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.commands.BridgeDomainCommand.addBridge(BridgeDomainCommand.java:89)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.commands.BridgeDomainCommand.execute(BridgeDomainCommand.java:72)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.store.CommandExecutor.process(CommandExecutor.java:68)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.GBPListenerImpl.execVhostuserConfigCommand(GBPListenerImpl.java:249)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.GBPListenerImpl.add(GBPListenerImpl.java:208)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.GBPListenerImpl.add(GBPListenerImpl.java:41)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.AbstractGBPListenerImpl.createData(AbstractGBPListenerImpl.java:83)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.groupbasedpolicy.renderer.vpp.listeners.impl.AbstractGBPListenerImpl.onDataChanged(AbstractGBPListenerImpl.java:64)[326:org.opendaylight.groupbasedpolicy.vpp-l2-renderer:0.3.2.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:143)[147:org.opendaylight.controller.sal-binding-broker-impl:1.3.2.SNAPSHOT]
      at org.opendaylight.controller.cluster.datastore.DataChangeListener.dataChanged(DataChangeListener.java:66)[172:org.opendaylight.controller.sal-distributed-datastore:1.3.2.SNAPSHOT]
      at org.opendaylight.controller.cluster.datastore.DataChangeListener.handleReceive(DataChangeListener.java:39)[172:org.opendaylight.controller.sal-distributed-datastore:1.3.2.SNAPSHOT]
      at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[168:org.opendaylight.controller.sal-clustering-commons:1.3.2.SNAPSHOT]
      at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[157:com.typesafe.akka.actor:2.3.14]
      at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[157:com.typesafe.akka.actor:2.3.14]
      at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[157:com.typesafe.akka.actor:2.3.14]
      at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[157:com.typesafe.akka.actor:2.3.14]
      at akka.actor.ActorCell.invoke(ActorCell.scala:487)[157:com.typesafe.akka.actor:2.3.14]
      at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)[157:com.typesafe.akka.actor:2.3.14]
      at akka.dispatch.Mailbox.run(Mailbox.scala:220)[157:com.typesafe.akka.actor:2.3.14]
      at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)[157:com.typesafe.akka.actor:2.3.14]
      at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[154:org.scala-lang.scala-library:2.11.7.v20150622-112736-1fbce4612c]
      at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[154:org.scala-lang.scala-library:2.11.7.v20150622-112736-1fbce4612c]
      at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[154:org.scala-lang.scala-library:2.11.7.v20150622-112736-1fbce4612c]
      at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[154:org.scala-lang.scala-library:2.11.7.v20150622-112736-1fbce4612c]

            Unassigned Unassigned
            wojdec Wojciech Dec
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: