[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: Zip Archive augment-if-feature.zip    
Issue Links:
Relates
relates to YANGTOOLS-1485 Fail to process deviation of augmente... Resolved

 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. 

Generated at Wed Feb 07 20:55:57 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.