[YANGTOOLS-1436] Unexpected error while processing submodule references Created: 20/May/22 Updated: 17/Aug/22 Resolved: 17/Aug/22 |
|
| Status: | Resolved |
| Project: | yangtools |
| Component/s: | parser |
| Affects Version/s: | 9.0.0, 8.0.5, 7.0.17 |
| Fix Version/s: | 10.0.0, 8.0.7, 9.0.1 |
| Type: | Bug | Priority: | Medium |
| Reporter: | Sangwook Ha | Assignee: | Robert Varga |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||
| Issue Links: |
|
||||||||
| Description |
|
Building effective model fails for some OpenConfig models because of unresolved EFFECTIVE_MODEL modifiers cause by VerifyException. For example, yang-model-validator generates the following errors for openconfig-network-instance.yang: $ java -jar "$YANGTOOLS/tools/yang-model-validator/target/yang-model-validator-9.0.0-SNAPSHOT-jar-with-dependencies.jar" \
--recursive --path "$OPENCONFIG/release/models:$YANG_MODELS/standard/iana:$YANG_MODELS/standard/ietf" \
"$OPENCONFIG/release/models/network-instance/openconfig-network-instance.yang"
22:36:43.765 [main] WARN org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext - Unexpected error processing source SourceIdentifier [openconfig-network-instance@2022-04-20]. Please file an issue with this model attached.
com.google.common.base.VerifyException: expected a non-null reference
at com.google.common.base.Verify.verifyNotNull(Verify.java:503)
at com.google.common.base.Verify.verifyNotNull(Verify.java:479)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.mutableDeclaredSubstatements(AbstractResumedStatement.java:65)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.RootStatementContext.mutableDeclaredSubstatements(RootStatementContext.java:49)
at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext$Mutable.declaredSubstatements(StmtContext.java:236)
at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.getRootModuleQName(StmtContextUtils.java:560)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.moduleName(ReactorStmtCtx.java:240)
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AbstractAugmentStatementSupport.lambda$new$0(AbstractAugmentStatementSupport.java:57)
at org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport$StatementPolicy$EqualSemantics.canReuseCurrent(StatementSupport.java:171)
at org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport.canReuseCurrent(StatementSupport.java:276)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReusePrototype(InferredStatementContext.java:239)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:219)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:389)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:385)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:139)
at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:83)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:125)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createInferredEffective(AbstractResumedStatement.java:132)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:230)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:223)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReuseSubstatements(InferredStatementContext.java:307)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.tryToReusePrototype(InferredStatementContext.java:240)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:219)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:389)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:385)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
...
$YANGTOOLS: path for yangtools repository Attached is the DEBUG output of the command. A couple observations:
|
| Comments |
| Comment by Sangwook Ha [ 07/Jun/22 ] |
|
It appears that yangtools fails to build effective model if a grouping defined in a submodule is augmented in another submodule. |