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

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

XMLWordPrintable

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

      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().

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

              Created:
              Updated:
              Resolved: