[YANGTOOLS-1408] Deviation of augmented case node fails Created: 16/Mar/22  Updated: 19/Mar/22  Resolved: 19/Mar/22

Status: Resolved
Project: yangtools
Component/s: None
Affects Version/s: 8.0.0, 7.0.14, 8.0.1
Fix Version/s: 7.0.15, 8.0.2

Type: Bug Priority: Medium
Reporter: Sangwook Ha Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Parsing of Yang sources with a deviated case node fails if the case node was created with augmentation without explicit case statement.

For example, parsing of the following two modules fails.

module orig {
    namespace "urn:orig";
    prefix orig;

    container foo {
        choice bar {
            leaf bar1 {
                type string;
            }
        }
    }

    augment /foo/bar {
        leaf bar2 {
            type string;
        }
    }
}
module deviate {
    namespace "urn:deviate";
    prefix dev;

    import orig {
        prefix orig;
    }

    deviation /orig:foo/orig:bar/orig:bar2 {
        deviate not-supported;
    }
}

Error message says that the case node is not found:

16:34:32.334 [main] ERROR org.opendaylight.yangtools.yang.parser.stmt.reactor.            BuildGlobalContext - Failed to parse YANG from source SourceSpecificContext               [source=YangStatementStreamSource{identifier=RevisionSourceIdentifier [name=deviate]},    current=EFFECTIVE_MODEL, finished=FULL_DECLARATION]
org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException: Deviation target      'Absolute{qnames=[(urn:orig)foo, bar, bar2]}' not found. [at /root/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1408/aug-choice-deviate-case/       deviate.yang:9:5]
    at org.opendaylight.yangtools.yang.parser.rfc7950@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.rfc7950.stmt.deviate.AbstractDeviateStatementSupport$1.             prerequisiteFailed(AbstractDeviateStatementSupport.java:175)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.ModifierImpl.failModifier(ModifierImpl.java:87)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.SourceSpecificContext.                                 failModifiers(SourceSpecificContext.java:383)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.BuildGlobalContext.                                    addSourceExceptions(BuildGlobalContext.java:307)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.BuildGlobalContext.                                    completePhaseActions(BuildGlobalContext.java:398)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.   java:199)
    at org.opendaylight.yangtools.yang.parser.reactor@8.0.2-SNAPSHOT/org.opendaylight.    yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.  java:210)


 Comments   
Comment by Sangwook Ha [ 16/Mar/22 ]

Tests to reproduce this issue: https://git.opendaylight.org/gerrit/c/yangtools/+/100137

Comment by Robert Varga [ 19/Mar/22 ]

Interesting, this looks like a failure to populate SchemaTreeNamespace, as the same problem with augment.

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