[BGPCEP-772] Example topology not instantiating Created: 22/Mar/18 Updated: 26/Mar/18 Resolved: 26/Mar/18 |
|
| Status: | Verified |
| Project: | bgpcep |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Medium |
| Reporter: | Tomas Markovic | Assignee: | Claudio David Gasparini |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
Steps to reproduce locally: And after this I get error in the karaf console> Exception in thread "Thread-58" java.lang.NullPointerException at org.opendaylight.bgpcep.config.loader.protocols.ProtocolsConfigFileProcessor.loadConfiguration(ProtocolsConfigFileProcessor.java:85) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl.handleConfigFile(ConfigLoaderImpl.java:82) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl.access$300(ConfigLoaderImpl.java:46) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.lambda$handleEvent$1(ConfigLoaderImpl.java:190) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1696) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.handleEvent(ConfigLoaderImpl.java:190) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.handleChanges(ConfigLoaderImpl.java:178) at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.run(ConfigLoaderImpl.java:160) at java.lang.Thread.run(Thread.java:748) and in karaf.log with warning 2018-03-22T08:15:47,570 | WARN | Thread-58 | ConfigLoaderImpl | 366 - org.opendaylight.bgpcep.config-loader-impl - 0.9.0 | Failed to parse xml javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Premature end of file. at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:604) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1241) ~[?:?] at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.parse(XmlParserStream.java:166) ~[?:?] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl.parseDefaultConfigFile(ConfigLoaderImpl.java:97) ~[?:?] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl.handleConfigFile(ConfigLoaderImpl.java:76) ~[?:?] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl.access$300(ConfigLoaderImpl.java:46) ~[?:?] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.lambda$handleEvent$1(ConfigLoaderImpl.java:190) ~[?:?] at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) [?:?] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) [?:?] at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1696) [?:?] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) [?:?] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) [?:?] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) [?:?] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) [?:?] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [?:?] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) [?:?] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.handleEvent(ConfigLoaderImpl.java:190) [366:org.opendaylight.bgpcep.config-loader-impl:0.9.0] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.handleChanges(ConfigLoaderImpl.java:178) [366:org.opendaylight.bgpcep.config-loader-impl:0.9.0] at org.opendaylight.bgpcep.config.loader.impl.ConfigLoaderImpl$ConfigLoaderImplRunnable.run(ConfigLoaderImpl.java:160) [366:org.opendaylight.bgpcep.config-loader-impl:0.9.0] at java.lang.Thread.run(Thread.java:748) [?:?] 2018-03-22T08:15:47,571 | INFO | Thread-58 | ConfigLoaderImpl | 366 - org.opendaylight.bgpcep.config-loader-impl - 0.9.0 | Loading initial config protocols-config.xml 2018-03-22T08:15:47,575 | INFO | features-1-thread-1 | FeaturesServiceImpl | 7 - org.apache.karaf.features.core - 4.1.3 | Done. followed by error> 2018-03-22T08:18:41,366 | ERROR | opendaylight-cluster-data-akka.actor.default-dispatcher-19 | DataTreeChangeListenerProxy | 221 - org.opendaylight.controller.sal-distributed-datastore - 1.7.0 | CONFIGURATION: Failed to find local shard topology - DataTreeChangeListener org.opendaylight.bgpcep.bgp.topology.provider.config.BgpTopologyDeployerImpl@5f55a6f4 at path /(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology/topology/topology cannot be registered: {} org.opendaylight.controller.cluster.datastore.exceptions.NotInitializedException: Found primary shard member-1-shard-topology-config but it's not initialized yet. Please try again later at org.opendaylight.controller.cluster.datastore.shardmanager.ShardManager.createNotInitializedException(ShardManager.java:960) [221:org.opendaylight.controller.sal-distributed-datastore:1.7.0] at org.opendaylight.controller.cluster.datastore.shardmanager.ShardManager.onShardNotInitializedTimeout(ShardManager.java:784) [221:org.opendaylight.controller.sal-distributed-datastore:1.7.0] at org.opendaylight.controller.cluster.datastore.shardmanager.ShardManager.handleCommand(ShardManager.java:254) [221:org.opendaylight.controller.sal-distributed-datastore:1.7.0] at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:44) [214:org.opendaylight.controller.sal-clustering-commons:1.7.0] at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:274) [86:com.typesafe.akka.persistence:2.5.4] at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104) [214:org.opendaylight.controller.sal-clustering-commons:1.7.0] at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:545) [83:com.typesafe.akka.actor:2.5.4] at akka.actor.Actor.aroundReceive(Actor.scala:514) [83:com.typesafe.akka.actor:2.5.4] at akka.actor.Actor.aroundReceive$(Actor.scala:512) [83:com.typesafe.akka.actor:2.5.4] at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:272) [86:com.typesafe.akka.persistence:2.5.4] at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:663) [86:com.typesafe.akka.persistence:2.5.4] at akka.persistence.Eventsourced.aroundReceive(Eventsourced.scala:183) [86:com.typesafe.akka.persistence:2.5.4] at akka.persistence.Eventsourced.aroundReceive$(Eventsourced.scala:182) [86:com.typesafe.akka.persistence:2.5.4] at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:272) [86:com.typesafe.akka.persistence:2.5.4] at akka.actor.ActorCell.receiveMessage(ActorCell.scala:527) [83:com.typesafe.akka.actor:2.5.4] at akka.actor.ActorCell.invoke(ActorCell.scala:496) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.Mailbox.run(Mailbox.scala:224) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.Mailbox.exec(Mailbox.scala:234) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [83:com.typesafe.akka.actor:2.5.4] at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [83:com.typesafe.akka.actor:2.5.4] These errors are not observed on jenkins tests, however behaviour is similar resulting in script ./get_ipv4_topology.sh resulting in error> relevant data model does not exist. It does not happen very often. In dozens of local tests this is observed only few times across several days, and it is not reproducable straight forward. ADD1: attachement full karaf.log added. |
| Comments |
| Comment by Robert Varga [ 22/Mar/18 ] |
|
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] This is not a yangtools issue. Track down the XML file and examine it – I bet it is an XML with a leading empty line |
| Comment by Robert Varga [ 22/Mar/18 ] |
|
The problem is in ConfigLoader, namely there is nothing guarding against processing incompletely-copied files. So if the file is being copied to the directory, the thread will start processing it while it has not been fully copied – for example just after it has been open for writing. |
| Comment by Claudio David Gasparini [ 22/Mar/18 ] |
|
Thanks for the feedback rovarga, I'm looking into it. Regards, |
| Comment by Claudio David Gasparini [ 26/Mar/18 ] |
|
https://git.opendaylight.org/gerrit/#/q/topic:BGPCEP-770+(status:open+OR+status:merged) |