-
Bug
-
Resolution: Duplicate
-
Medium
-
None
-
None
-
None
when parsing module ietf-ipv6-unicast-routing it contains some of the when statements like this:
when "derived-from-or-self(../../rt:address-family, " + "'v6ur:ipv6-unicast')" {
parsing this module gives me following error
java.lang.IllegalStateException: Failed to assemble SchemaContext at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseSources(YangParserTestUtils.java:366) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseYangFiles(YangParserTestUtils.java:204) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseYangFiles(YangParserTestUtils.java:190) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseYangResourceDirectory(YangParserTestUtils.java:263) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseYangResourceDirectory(YangParserTestUtils.java:228) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseYangResourceDirectory(YangParserTestUtils.java:216) at org.opendaylight.yangtools.yang.model.util.ut.YT1111Test.testFindDataSchemaNode(YT1111Test.java:18) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: org.opendaylight.yangtools.yang.model.parser.api.YangParserException: Failed to assemble sources at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.decodeReactorException(YangParserImpl.java:110) at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.buildEffectiveModel(YangParserImpl.java:104) at org.opendaylight.yangtools.yang.test.util.YangParserTestUtils.parseSources(YangParserTestUtils.java:364) ... 31 more Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException: Some of FULL_DECLARATION modifiers for statements were not resolved. at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:259) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:325) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatements(BuildGlobalContext.java:315) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.java:221) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:233) at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:232) at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.buildEffectiveModel(YangParserImpl.java:102) ... 32 more Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Argument "derived-from-or-self(../../rt:address-family, 'v6ur:ipv6-unicast')" is not valid XPath string [at /home/miroslav/projects/java/yangtools/yang/yang-model-util-ut/target/test-classes/1111/ietf-ipv6-unicast-routing@2018-03-13.yang:81:4] at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport.parseXPath(XPathSupport.java:42) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.when.WhenStatementSupport.parseArgumentValue(WhenStatementSupport.java:46) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.when.WhenStatementSupport.parseArgumentValue(WhenStatementSupport.java:25) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.parseArgumentValue(StatementDefinitionContext.java:47) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SubstatementContext.<init>(SubstatementContext.java:37) at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createSubstatement(AbstractResumedStatement.java:149) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.createDeclaredChild(SourceSpecificContext.java:142) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.startStatement(StatementContextWriter.java:70) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:110) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:119) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:119) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.visit(StatementContextVisitor.java:46) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.writeFull(YangStatementStreamSource.java:126) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:369) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:323) ... 37 more Caused by: javax.xml.xpath.XPathExpressionException: java.lang.IllegalArgumentException: Prefix rt is not bound at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:277) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.parseExpression(AntlrXPathParser.java:151) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport.parseXPath(XPathSupport.java:40) ... 56 more Caused by: java.lang.IllegalArgumentException: Prefix rt is not bound at com.google.common.base.Preconditions.checkArgument(Preconditions.java:217) at org.opendaylight.yangtools.yang.common.YangNamespaceContext.createQName(YangNamespaceContext.java:63) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createQName(AntlrXPathParser.java:158) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createStep(AntlrXPathParser.java:164) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createStep(AntlrXPathParser.java:141) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.createStep(AntlrXPathParser.java:248) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseStep(AntlrXPathParser.java:620) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseLocationPathSteps(AntlrXPathParser.java:462) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseLocationPath(AntlrXPathParser.java:375) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parsePathExpr(AntlrXPathParser.java:409) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnion(AntlrXPathParser.java:503) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnary(AntlrXPathParser.java:491) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseMultiplicative(AntlrXPathParser.java:391) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAdditive(AntlrXPathParser.java:306) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseRelational(AntlrXPathParser.java:449) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseEquality(AntlrXPathParser.java:324) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAnd(AntlrXPathParser.java:313) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:295) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseFunctionCall(AntlrXPathParser.java:352) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parsePrimary(AntlrXPathParser.java:439) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseFilter(AntlrXPathParser.java:330) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parsePathExpr(AntlrXPathParser.java:412) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnion(AntlrXPathParser.java:503) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnary(AntlrXPathParser.java:491) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseMultiplicative(AntlrXPathParser.java:391) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAdditive(AntlrXPathParser.java:306) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseRelational(AntlrXPathParser.java:449) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseEquality(AntlrXPathParser.java:324) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAnd(AntlrXPathParser.java:313) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:295) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:275) ... 58 more
which is saying that it can not parse XPath String because it doesn t know what rt is. We have this import in a yang file
import ietf-routing { prefix "rt"; description "An 'ietf-routing' module version that is compatible with the Network Management Datastore Architecture (NMDA) is required."; }
Weird thing is that this does not happen always. If I run test 10 times it will sometimes pass and most of the times fail.
When I tried to debug it I found out that interface YangNamespaceContextNamespace has following code
static @NonNull YangNamespaceContext computeIfAbsent(final StmtContext<?, ?, ?> ctx) { final StmtContext<?, ?, ?> root = ctx.getRoot(); YangNamespaceContext ret = root.getFromNamespace(YangNamespaceContextNamespace.class, Empty.getInstance()); if (ret == null) { verify(ctx instanceof Mutable, "Cannot populate namespace context to %s", ctx); ret = new StmtNamespaceContext(ctx); ((Mutable<?, ?, ?>)ctx).addToNs(YangNamespaceContextNamespace.class, Empty.getInstance(), ret); } return ret; }
which sometimes returns YangNamespaceContext for module ietf-ipv6-unicast-routing with moduleToPrefix
{QNameModule@2999} "QNameModule{ns=urn:ietf:params:xml:ns:yang:ietf-inet-types, rev=2013-07-15}" -> inet {QNameModule@3001} "QNameModule{ns=urn:ietf:params:xml:ns:yang:ietf-ip, rev=2018-02-22}" -> ip {QNameModule@3003} "QNameModule{ns=urn:ietf:params:xml:ns:yang:ietf-interfaces, rev=2018-02-20}" -> if
this is when it failes and sometimes it returns only
{QNameModule@3008} "QNameModule{ns=urn:ietf:params:xml:ns:yang:ietf-inet-types, rev=2013-07-15}" -> inet {QNameModule@3011} "QNameModule{ns=urn:ietf:params:xml:ns:yang:ietf-routing, rev=2018-03-13}" -> rt
where we have our rt and parsing will run fine..
- duplicates
-
YANGTOOLS-1138 Intermittent failure to resolve prefixes in XPath
- Resolved