-
Bug
-
Resolution: Unresolved
-
None
-
unspecified
-
None
-
Operating System: All
Platform: All
-
7755
When a bundle tree is restarted (e.g. due to a change from config do operational ds and vice versa) and there are topo processing requests present in the DS, the processing fails with NPEs because of missing model support. This applies to any startup with requests present, but a typical problem occurs when a NTmodel support is loaded, request listener picks up a NT-based request, but fails to process the inventory underlay topologies, whose model-supporting is just booting up.
We need to provide a mechanism to:
1. gracefully refuse a topology processing request, when required model support is missing
2. schedule retriggering of refused requests, when required model support gets loaded
2017-02-07 17:46:37,220 | WARN | n-dispatcher-550 | TopologyRequestHandler | 217 - org.opendaylight.topoprocessing.impl - 0.3.0.SNAPSHOT | Processing new request for topology change failed.
java.lang.NullPointerException
at org.opendaylight.topoprocessing.impl.request.TopologyRequestHandler.initFiltration(TopologyRequestHandler.java:369)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestHandler.processNewRequest(TopologyRequestHandler.java:195)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestListener.processCreatedData(TopologyRequestListener.java:136)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestListener.onDataTreeChanged(TopologyRequestListener.java:100)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:54)[211:org.opendaylight.controller.sal-distributed-datastore:1.5.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:35)[211:org.opendaylight.controller.sal-distributed-datastore:1.5.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:28)[205:org.opendaylight.controller.sal-clustering-commons:1.5.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.Actor$class.aroundReceive(Actor.scala:496)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.ActorCell.invoke(ActorCell.scala:495)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.run(Mailbox.scala:224)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[178:com.typesafe.akka.actor:2.4.16]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
2017-02-07 17:46:37,222 | ERROR | n-dispatcher-550 | DataTreeChangeListenerActor | 205 - org.opendaylight.controller.sal-clustering-commons - 1.5.0.SNAPSHOT | Error notifying listener org.opendaylight.topoprocessing.nt.request.NTTopologyRequestListener@4f319383
java.lang.IllegalStateException: Processing new request for topology change failed.
at org.opendaylight.topoprocessing.impl.request.TopologyRequestHandler.processNewRequest(TopologyRequestHandler.java:217)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestListener.processCreatedData(TopologyRequestListener.java:136)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestListener.onDataTreeChanged(TopologyRequestListener.java:100)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:54)[211:org.opendaylight.controller.sal-distributed-datastore:1.5.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:35)[211:org.opendaylight.controller.sal-distributed-datastore:1.5.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:28)[205:org.opendaylight.controller.sal-clustering-commons:1.5.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.Actor$class.aroundReceive(Actor.scala:496)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[178:com.typesafe.akka.actor:2.4.16]
at akka.actor.ActorCell.invoke(ActorCell.scala:495)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.run(Mailbox.scala:224)[178:com.typesafe.akka.actor:2.4.16]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[178:com.typesafe.akka.actor:2.4.16]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[174:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
Caused by: java.lang.NullPointerException
at org.opendaylight.topoprocessing.impl.request.TopologyRequestHandler.initFiltration(TopologyRequestHandler.java:369)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
at org.opendaylight.topoprocessing.impl.request.TopologyRequestHandler.processNewRequest(TopologyRequestHandler.java:195)[217:org.opendaylight.topoprocessing.impl:0.3.0.SNAPSHOT]
... 17 more