Details
Description
This is detected in feature-aware MD-SAL SchemaService in conjuction with a partially-implemented ietf-keystore used through ietf-ssh-server:
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Leaf is missing a 'type' statement [at [{name=(urn:ietf:params:xml:ns:yang:ietf-keystore?revision=2022-12-12)ietf-keystore}]:246:9]
at org.opendaylight.yangtools.yang.parser.spi.source.SourceException.throwIfNull(SourceException.java:205) ~[?:?]
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.validateEffective(LeafStatementSupport.java:107) ~[?:?]
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.createEffective(LeafStatementSupport.java:93) ~[?:?]
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport.createEffective(LeafStatementSupport.java:45) ~[?:?]
at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:85) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:131) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createInferredEffective(AbstractResumedStatement.java:138) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:236) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createInferredEffective(InferredStatementContext.java:229) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.createEffective(InferredStatementContext.java:225) ~[?:?]
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:375) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371) ~[?:?]
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine.RefineStatementSupport.createEffective(RefineStatementSupport.java:96) ~[?:?]
at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine.RefineStatementSupport.createEffective(RefineStatementSupport.java:34) ~[?:?]
at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:85) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:131) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:116) ~[?:?]
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:375) ~[?:?]
at org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:139) ~[?:?]
[...]
The problem stems from InferredStatementContext.isSupportedByFeatures() not working correctly due to it having empty declared substatements, which is what checkFeatureSupport() checks. The second problem is that UsesStatementSupport.performRefine() does not consult isSupportedByFeatures().
Attachments
Issue Links
- blocks
-
NETCONF-590 Refactor NETCONF transport layer
-
- Resolved
-
- relates to
-
MDSAL-829 Runtime types fail with leafref typedef and disabled features
-
- Resolved
-
-
MDSAL-790 mdsal-dom-schema-osgi needs to propagate YangFeatureProviders
-
- Resolved
-
-
YANGTOOLS-1393 InferenceException thrown when uses/augment is conditional on unsupported feature
-
- Resolved
-