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
-