[YANGTOOLS-1370] NPE in parser reactor with if-feature inference Created: 22/Nov/21 Updated: 13/Mar/23 Resolved: 17/Dec/21 |
|
| Status: | Resolved |
| Project: | yangtools |
| Component/s: | parser |
| Affects Version/s: | 6.0.6 |
| Fix Version/s: | 8.0.0, 6.0.9, 7.0.10 |
| Type: | Bug | Priority: | Medium |
| Reporter: | Lovaraju Kajulooti | 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 |
|
I have tried parsing the attached yang files (augment-if-feature.zip) it is failed with below exception Caused by: java.lang.NullPointerExceptionCaused by: java.lang.NullPointerException at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$PhaseModificationInNamespacePath.namespaceItemAdded(ModifierImpl.java:406) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.onNamespaceItemAddedAction(StatementContextBase.java:682) at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$PhaseModificationInNamespacePath.hookOnto(ModifierImpl.java:426) Reason: "notification subscription-started" is defined under "configured" if-feature, but the augmenting node doesn't have this if-feature difined.
If I uncomment the line number 31 in ietf-yang-push (that is defining if-feature "sn:configured" for augment node), above error was not seen. |
| Comments |
| Comment by Lovaraju Kajulooti [ 22/Nov/21 ] |
|
The full exception trace is :
Caused by: SchemaResolutionException{unsatisfiedImports={}}
at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$AssembleSources.apply(SharedSchemaContextFactory.java:240)
at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$AssembleSources.apply(SharedSchemaContextFactory.java:188)
at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:213)
at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:202)
at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:118)
at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1138)
at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:707)
at com.google.common.util.concurrent.FluentFuture$TrustedFuture.addListener(FluentFuture.java:104)
at com.google.common.util.concurrent.AbstractTransformFuture.create(AbstractTransformFuture.java:39)
at com.google.common.util.concurrent.Futures.transformAsync(Futures.java:471)
at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory.createSchemaContext(SharedSchemaContextFactory.java:103)
at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory.createEffectiveModelContext(SharedSchemaContextFactory.java:74)
at org.broadband_forum.obbaa.netconf.api.parser.YangParserUtil.parseSchemaSources(YangParserUtil.java:81)
... 12 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:256)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:310)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatements(BuildGlobalContext.java:300)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.java:218)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:230)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:232)
at org.opendaylight.yangtools.yang.parser.repo.SharedSchemaContextFactory$AssembleSources.apply(SharedSchemaContextFactory.java:238)
... 25 more
Caused by: java.lang.NullPointerException
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$PhaseModificationInNamespacePath.namespaceItemAdded(ModifierImpl.java:406)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.onNamespaceItemAddedAction(StatementContextBase.java:682)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$PhaseModificationInNamespacePath.hookOnto(ModifierImpl.java:426)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$PhaseModificationInNamespacePath.hookOnto(ModifierImpl.java:421)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.mutatesEffectiveCtxPath(ModifierImpl.java:250)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.mutatesEffectiveCtxPath(ModifierImpl.java:39)
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AbstractAugmentStatementSupport.onFullDefinitionDeclared(AbstractAugmentStatementSupport.java:98)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onDeclarationFinished(StatementDefinitionContext.java:84)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.endDeclared(StatementContextBase.java:654)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.endStatement(StatementContextWriter.java:76)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:134)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:118)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:101)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:127)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:118)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:101)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.visit(StatementContextVisitor.java:49)
at org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.writeFull(YangStatementStreamSource.java:150)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:372)
at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:308)
... 30 more
|
| Comment by Lovaraju Kajulooti [ 07/Dec/21 ] |
|
It was also observed that, As mentioned in the description, If I uncomment the line number 31 in ietf-yang-push (that is defining if-feature "sn:configured" for augment node), above error was not seen. Above case is working when I don't set the supported-fatures (that means, it will consider all if-features are supported), But if I set supported-features explicitly without "configured" feature, it is still failing. |