Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1514

Failed to process YANGs containing refine of a if-feature'd target

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • High
    • Resolution: Done
    • 9.0.0, 10.0.0, 7.0.18, 8.0.10, 9.0.8, 10.0.7
    • 11.0.0, 10.0.8, 9.0.9
    • parser

    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) ~[?:?]
      [...]
      

      as captured here: https://s3-logs.opendaylight.org/logs/releng/vex-yul-odl-jenkins-1/netconf-maven-verify-master-mvn38-openjdk17/3140/features/odl-netconf-transport/target/SFT/karaf.log.gz

      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

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              rovarga Robert Varga
              rovarga Robert Varga
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: