Details
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
$OPENCONFIG: path for OpenConfig public repository
$YANG_MODELS: path for YangModels yang repository
Attached is the DEBUG output of the command.
—
A couple observations:
- This build issue depends on the environment. Even with the same container image with Maven & JDK pre-installed on top of RHEL8 UBI (Universal Base Image), validation result was not consistent across different container hosts. For example, openconfig-network-instance.yang was built successfully on Alpine Linux (Linux 5.15.32) VM on macOS but not on RHEL 7 (Linux 3.10.0) or RHEL 8 (Linux 4.18.0) VM.
- This inconsistent behavior was found for master, 8.0.x & 7.0.x branches but not for 6.0.x.
Attachments
Issue Links
- relates to
-
YANGTOOLS-1434 Building SchemaContext fails when augmenting submodel data
-
- Resolved
-