<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:56:03 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[YANGTOOLS-1404] Deviation of augmented node causes NPE</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1404</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>
&lt;p&gt;An augmented data node changed by deviation (not-supported) can cause a null pointer exception or fail to verify non-null requirement while writing NormalizedNode.&lt;/p&gt;

&lt;p&gt;For example, the following 3 models together have two leaves (&lt;tt&gt;bar&lt;/tt&gt; &amp;amp; &lt;tt&gt;qux&lt;/tt&gt;) under &lt;tt&gt;foo&lt;/tt&gt; - &lt;tt&gt;baz&lt;/tt&gt; is removed by &lt;tt&gt;deviate.yang&lt;/tt&gt;:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;orig.yang&lt;/tt&gt;&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module orig {
    namespace &quot;urn:orig&quot;;
    prefix orig;

    container foo {
        leaf bar {
            type string;
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;tt&gt;aug.yang&lt;/tt&gt;&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module aug {
    namespace &quot;urn:aug&quot;;
    prefix aug;

    import orig {
        prefix orig;
    }

    augment /orig:foo {
        leaf baz {
            type string;
        }

        leaf qux {
            type string;
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;tt&gt;deviate.yang&lt;/tt&gt;&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module deviate {
    namespace &quot;urn:deviate&quot;;
    prefix dev;

    import orig {
        prefix orig;
    }
    import aug {
        prefix aug;
    }

    deviation /orig:foo/aug:baz {
        deviate not-supported;
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;When PUT request is submitted like below:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;PUT /rests/data/network-topology:network-topology/topology=topology-netconf/node=node1/yang-ext:mount/orig:foo

{
    &quot;orig:foo&quot;: {
        &quot;bar&quot;: &quot;apple&quot;,
        &quot;aug:qux&quot;: &quot;orange&quot;
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This causes the following exception although status code of 201 is returned by the controller:&lt;/p&gt;

&lt;p&gt;yangtools 7.0.12&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;2022-02-03T23:12:08,009 | ERROR | opendaylight-cluster-data-akka.actor.default-dispatcher-4 | OneForOneStrategy                | 213 - org.opendaylight.controller.repackaged-akka - 4.0.8 | No child matching (urn:aug)baz found
com.google.common.base.VerifyException: No child matching (urn:aug)baz found
	at com.google.common.base.Verify.verify(Verify.java:124) ~[bundleFile:?]
	at com.google.common.base.Verify.verifyNotNull(Verify.java:500) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.model.api.DataNodeContainer.getDataChildByName(DataNodeContainer.java:84) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema.create(EffectiveAugmentationSchema.java:67) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.util.NormalizedNodeStreamWriterStack.startAugmentationNode(NormalizedNodeStreamWriterStack.java:301) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.codec.xml.SchemaAwareXMLStreamNormalizedNodeStreamWriter.startAugmentationNode(SchemaAwareXMLStreamNormalizedNodeStreamWriter.java:136) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.ForwardingNormalizedNodeStreamWriter.startAugmentationNode(ForwardingNormalizedNodeStreamWriter.java:87) ~[bundleFile:?]
	at org.opendaylight.yangtools.rfc7952.data.util.NormalizedNodeStreamWriterMetadataDecorator.startAugmentationNode(NormalizedNodeStreamWriterMetadataDecorator.java:121) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:222) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:102) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:189) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:205) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:102) ~[bundleFile:?]
	at org.opendaylight.yangtools.rfc7952.data.util.NormalizedMetadataWriter.write(NormalizedMetadataWriter.java:114) ~[bundleFile:?]
	at org.opendaylight.netconf.util.NetconfUtil.writeNormalizedNode(NetconfUtil.java:182) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.createEditConfigAnyxml(NetconfMessageTransformUtil.java:377) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcStructureTransformer.createEditConfigStructure(NetconfRpcStructureTransformer.java:64) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.createEditConfigStructure(NetconfBaseOps.java:431) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.sal.AbstractNetconfDataTreeService.replace(AbstractNetconfDataTreeService.java:297) ~[bundleFile:?]
	at org.opendaylight.netconf.topology.singleton.impl.actors.NetconfDataTreeServiceActor.onReceive(NetconfDataTreeServiceActor.java:104) ~[?:?]
	at akka.actor.UntypedAbstractActor$$anonfun$receive$1.applyOrElse(AbstractActor.scala:332) ~[bundleFile:?]
	at akka.actor.Actor.aroundReceive(Actor.scala:537) ~[bundleFile:?]
	at akka.actor.Actor.aroundReceive$(Actor.scala:535) ~[bundleFile:?]
	at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220) ~[bundleFile:?]
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:580) [bundleFile:?]
	at akka.actor.ActorCell.invoke(ActorCell.scala:548) [bundleFile:?]
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) [bundleFile:?]
	at akka.dispatch.Mailbox.run(Mailbox.scala:231) [bundleFile:?]
	at akka.dispatch.Mailbox.exec(Mailbox.scala:243) [bundleFile:?]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) [?:?]
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) [?:?]
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) [?:?]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) [?:?]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) [?:?]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;yangtools 6.0.12:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;2022-02-03T23:47:18,614 | ERROR | opendaylight-cluster-data-akka.actor.default-dispatcher-6 | OneForOneStrategy                | 212 - org.opendaylight.controller.repackaged-akka - 3.0.16 | null
java.lang.NullPointerException: null
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:878) ~[bundleFile:?]
	at com.google.common.collect.ImmutableSet.construct(ImmutableSet.java:199) ~[bundleFile:?]
	at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:236) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema.&amp;lt;init&amp;gt;(EffectiveAugmentationSchema.java:46) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema.create(EffectiveAugmentationSchema.java:69) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker.startAugmentationNode(SchemaTracker.java:262) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.codec.xml.SchemaAwareXMLStreamNormalizedNodeStreamWriter.startAugmentationNode(SchemaAwareXMLStreamNormalizedNodeStreamWriter.java:133) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.ForwardingNormalizedNodeStreamWriter.startAugmentationNode(ForwardingNormalizedNodeStreamWriter.java:87) ~[bundleFile:?]
	at org.opendaylight.yangtools.rfc7952.data.util.NormalizedNodeStreamWriterMetadataDecorator.startAugmentationNode(NormalizedNodeStreamWriterMetadataDecorator.java:121) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:228) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:103) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:190) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:206) ~[bundleFile:?]
	at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:103) ~[bundleFile:?]
	at org.opendaylight.yangtools.rfc7952.data.util.NormalizedMetadataWriter.write(NormalizedMetadataWriter.java:114) ~[bundleFile:?]
	at org.opendaylight.netconf.util.NetconfUtil.writeNormalizedNode(NetconfUtil.java:180) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.createEditConfigAnyxml(NetconfMessageTransformUtil.java:414) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcStructureTransformer.createEditConfigStructure(NetconfRpcStructureTransformer.java:64) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.createEditConfigStrcture(NetconfBaseOps.java:431) ~[bundleFile:?]
	at org.opendaylight.netconf.sal.connect.netconf.sal.AbstractNetconfDataTreeService.replace(AbstractNetconfDataTreeService.java:298) ~[bundleFile:?]
	at org.opendaylight.netconf.topology.singleton.impl.actors.NetconfDataTreeServiceActor.onReceive(NetconfDataTreeServiceActor.java:104) ~[?:?]
	at akka.actor.UntypedAbstractActor$$anonfun$receive$1.applyOrElse(AbstractActor.scala:332) ~[bundleFile:?]
	at akka.actor.Actor.aroundReceive(Actor.scala:537) ~[bundleFile:?]
	at akka.actor.Actor.aroundReceive$(Actor.scala:535) ~[bundleFile:?]
	at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220) ~[bundleFile:?]
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:580) [bundleFile:?]
	at akka.actor.ActorCell.invoke(ActorCell.scala:548) [bundleFile:?]
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270) [bundleFile:?]
	at akka.dispatch.Mailbox.run(Mailbox.scala:231) [bundleFile:?]
	at akka.dispatch.Mailbox.exec(Mailbox.scala:243) [bundleFile:?]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) [?:?]
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) [?:?]
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) [?:?]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) [?:?]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) [?:?]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Note that the problem goes away If augmentation is done separately for each node, i.e. if the following is used for &lt;tt&gt;aug.yang&lt;/tt&gt; instead:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;module aug {
    namespace &quot;urn:aug&quot;;
    prefix aug;

    import orig {
        prefix orig;
    }

    augment /orig:foo {
        leaf baz {
            type string;
        }
    }

    augment /orig:foo {
        leaf qux {
            type string;
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="35216">YANGTOOLS-1404</key>
            <summary>Deviation of augmented node causes NPE</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="sangwookha">Sangwook Ha</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Thu, 3 Feb 2022 23:48:25 +0000</created>
                <updated>Wed, 2 Mar 2022 14:50:34 +0000</updated>
                            <resolved>Wed, 2 Mar 2022 14:50:34 +0000</resolved>
                                    <version>6.0.0</version>
                    <version>7.0.0</version>
                    <version>7.0.9</version>
                    <version>6.0.12</version>
                    <version>7.0.14</version>
                                    <fixVersion>8.0.0</fixVersion>
                    <fixVersion>7.0.15</fixVersion>
                                    <component>model-util</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="70511" author="rovarga" created="Fri, 4 Feb 2022 08:07:01 +0000"  >&lt;p&gt;Can you provide the corresponding XML payloads, please?&lt;/p&gt;</comment>
                            <comment id="70514" author="JIRAUSER13318" created="Fri, 4 Feb 2022 09:24:09 +0000"  >&lt;p&gt;You mean the payload of the PUT call above? It&apos;s like this:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&amp;lt;foo xmlns=&quot;urn:orig&quot;&amp;gt;
    &amp;lt;bar&amp;gt;apple&amp;lt;/bar&amp;gt;
    &amp;lt;qux xmlns=&quot;urn:aug&quot;&amp;gt;orange&amp;lt;/qux&amp;gt;
&amp;lt;/foo&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="70515" author="rovarga" created="Fri, 4 Feb 2022 09:50:14 +0000"  >&lt;p&gt;Sorry, I mistook the stack trace for an inbound message. ENOCOFFEE.&lt;/p&gt;</comment>
                            <comment id="70516" author="rovarga" created="Fri, 4 Feb 2022 10:13:44 +0000"  >&lt;p&gt;Hmm, is it happening in a single-node or is the request made to one node and the exception is on the other?&lt;/p&gt;

&lt;p&gt;Because it looks as though the NormalizedNode structure was created without the deviate and is being interpreted with the deviate, leading to a mismatch.&lt;/p&gt;</comment>
                            <comment id="70517" author="JIRAUSER13318" created="Fri, 4 Feb 2022 17:33:09 +0000"  >&lt;p&gt;In the NormalizedNode, the YangInstanceIdentifier for the AugmentationNode has both augmented leaf nodes, &lt;tt&gt;baz&lt;/tt&gt;, removed by deviate.yang, as well as &lt;tt&gt;qux&lt;/tt&gt;.&lt;br/&gt;
Also, AugmentEffectiveStatement has both &lt;tt&gt;baz&lt;/tt&gt; &amp;amp; &lt;tt&gt;qux&lt;/tt&gt; leaf nodes in dataChildren but not in the schemaTree of EffectiveStatement for container &lt;tt&gt;foo&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;So when trying to set &lt;tt&gt;aug&lt;/tt&gt;,&#160;the process of creating EffectiveAugmentationSchema&#160;fails because AugmentationSchemaNode has both &lt;tt&gt;baz&lt;/tt&gt; &amp;amp; &lt;tt&gt;qux&lt;/tt&gt; but its parent DataNodeContainer does not have &lt;tt&gt;baz&lt;/tt&gt;.&lt;/p&gt;</comment>
                            <comment id="70524" author="rovarga" created="Tue, 8 Feb 2022 11:41:36 +0000"  >&lt;p&gt;I strongly believe this has to do with how NETCONF topology operates, hence we need to investigate it there.&lt;/p&gt;</comment>
                            <comment id="70531" author="JIRAUSER13318" created="Thu, 10 Feb 2022 18:45:43 +0000"  >&lt;p&gt;By the time effective statements are generated from the models, augmented effective statements include the &apos;not-supported&apos; node but schema tree does not. And when creating&#160;EffectiveAugmentationSchema it enforces that all the children in the AugemntationSchema exist in its parent container. Both of these are done by yangtools, so I&apos;m not sure how this can be addressed with NETCONF topology.&lt;/p&gt;</comment>
                            <comment id="70532" author="rovarga" created="Thu, 10 Feb 2022 19:10:27 +0000"  >&lt;p&gt;Well, the thing is we parsed the payload without the deviation, hence the AugmentationIdentifier containing &apos;baz&apos;, but then we arrive at the mount point primary and try to send it out &#8211; and that primary does not see &apos;baz&apos;.&lt;/p&gt;

&lt;p&gt;This related to yang-data treating augmentations specially, which is also an upgrade concern, tracked in some yangtools issue (sorry, takes to long to loot it up), but in a consistent cluster this should not be an issue and we need to understand what netconf-topology-singleton is doing before assigning blame.&lt;/p&gt;</comment>
                            <comment id="70559" author="ivanhrasko" created="Thu, 24 Feb 2022 13:59:39 +0000"  >&lt;p&gt;The problem is reproducible in single node deployment. We are afraid that the problem can be that #fromInstanceId method returns data with identifier including also deviated leaf. Thus we need to first get rid of #fromInstanceId to be sure where the problem is. Lets wait for &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1392&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;YANGTOOLS-1392&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="70607" author="rovarga" created="Tue, 1 Mar 2022 21:06:43 +0000"  >&lt;p&gt;That is interesting. I strongly suspect this is related to the area &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1403&quot; title=&quot;Integrate EffectiveAugmentationSchema into AugmentationSchemaNode/AugmentEffectiveStatement}&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1403&quot;&gt;&lt;del&gt;YANGTOOLS-1403&lt;/del&gt;&lt;/a&gt; is touching &amp;#8211; yang.model.util.EffectiveAugmentationSchema. There is a (not very) subtle difference between an AugmentationSchemaNode (and EffectiveAugmentStatement) produced by the parser and what needs to be considered when codecs come into play.&lt;br/&gt;
The former reflects closely how the augment was declared, e.g. it is without effects of deviate/augment statements further targeting the augment target node. The latter is a a view corresponding to how the target sees the augmentation &amp;#8211; and includes the effects of deviate.&lt;/p&gt;

&lt;p&gt;All codec paths should be working on top of the latter, really. I suggest looking at code paths to see whether there is a disconnect involving one side using EffectiveAgumentationSchema and the other not. Note this may mean that AugmentationIdentifiers can get out of whack as well &amp;#8211; the EffectiveAugmentationSchema view can have fewer children, so cross-referencing them back to the model may be challenging.&lt;/p&gt;

&lt;p&gt;What is suspect is this bit:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;class &lt;/span&gt;AugmentationContextNode &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; DataContainerContextNode&amp;lt;AugmentationIdentifier&amp;gt; {
    AugmentationContextNode(&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; AugmentationSchemaNode augmentation, &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; DataNodeContainer schema) {
        &lt;span class=&quot;code-keyword&quot;&gt;super&lt;/span&gt;(augmentationIdentifierFrom(augmentation), EffectiveAugmentationSchema.create(augmentation, schema), &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;);
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;so we are deriving the identifier from the declared view, but pass down the effective view &amp;#8211; and therefore emit AugmentationIdentifier &lt;b&gt;with&lt;/b&gt; leaf which was deviated away.&lt;/p&gt;</comment>
                            <comment id="70609" author="rovarga" created="Wed, 2 Mar 2022 08:17:54 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=sangwookha&quot; class=&quot;user-hover&quot; rel=&quot;sangwookha&quot;&gt;sangwookha&lt;/a&gt; can you give &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/99930&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/99930&lt;/a&gt; a try, please?&lt;/p&gt;</comment>
                            <comment id="70610" author="JIRAUSER13318" created="Wed, 2 Mar 2022 09:08:43 +0000"  >&lt;p&gt;Yes, the patch works.&lt;/p&gt;

&lt;p&gt;The following request generated config data as expected:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;PUT /rests/data/network-topology:network-topology/topology=topology-netconf/node=ncserver/yang-ext:mount/orig:foo
{
    &quot;orig:foo&quot;: {
        &quot;bar&quot;: &quot;apple&quot;,
        &quot;aug:qux&quot;: &quot;orange&quot;
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;09:02:10.705 TRACE [globalWorkerGroup-3-2] Finished sending request &amp;lt;rpc message-id=&quot;m-18&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;
    &amp;lt;edit-config&amp;gt;
        &amp;lt;target&amp;gt;
            &amp;lt;candidate/&amp;gt;
        &amp;lt;/target&amp;gt;
        &amp;lt;error-option&amp;gt;rollback-on-error&amp;lt;/error-option&amp;gt;
        &amp;lt;config&amp;gt;
            &amp;lt;foo xmlns=&quot;urn:orig&quot; xmlns:op=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; op:operation=&quot;replace&quot;&amp;gt;
                &amp;lt;bar&amp;gt;apple&amp;lt;/bar&amp;gt;
                &amp;lt;qux xmlns=&quot;urn:aug&quot;&amp;gt;orange&amp;lt;/qux&amp;gt;
            &amp;lt;/foo&amp;gt;
        &amp;lt;/config&amp;gt;
    &amp;lt;/edit-config&amp;gt;
&amp;lt;/rpc&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="35307">YANGTOOLS-1403</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="17354" name="Steps to reproduce.odt" size="18640" author="SamoSchneider" created="Thu, 17 Feb 2022 10:01:37 +0000"/>
                            <attachment id="17310" name="aug.yang" size="242" author="sangwookha" created="Thu, 3 Feb 2022 23:58:48 +0000"/>
                            <attachment id="17311" name="deviate.yang" size="225" author="sangwookha" created="Thu, 3 Feb 2022 23:58:48 +0000"/>
                            <attachment id="17353" name="karaf.log" size="403084" author="SamoSchneider" created="Thu, 17 Feb 2022 10:01:31 +0000"/>
                            <attachment id="17312" name="orig.yang" size="140" author="sangwookha" created="Thu, 3 Feb 2022 23:58:48 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i041fj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>