<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:56:16 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-1480] Fail to process deviation/augmentation from multiple modules</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1480</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Parsing of data models with deviations/augmentations from multiple modules targeting a path defined using a grouping may fail.&lt;/p&gt;

&lt;p&gt;The following is such an example.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;foo.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 foo {
  namespace &quot;urn:foo&quot;;
  prefix &quot;foo&quot;;

  grouping foo-group {
    container foo {
      container cntr {
      }
    }
  }

  uses foo-group;
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;tt&gt;bar.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 bar {
  namespace &quot;urn:bar&quot;;
  prefix &quot;bar&quot;;

  import foo {
    prefix foo;
  }

  deviation /foo:foo/foo:cntr {
    deviate not-supported;
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;tt&gt;baz.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 baz {
  namespace &quot;urn:baz&quot;;
  prefix &quot;baz&quot;;

  import foo {
    prefix foo;
  }

  augment /foo:foo {
    container cntr {
      leaf baz-leaf {
        type string;
      }
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;tt&gt;qux.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 qux {
  namespace &quot;urn:qux&quot;;
  prefix &quot;qux&quot;;

  import foo {
    prefix foo;
  }

  import baz {
    prefix baz;
  }

  deviation /foo:foo/baz:cntr/baz:baz-leaf {
    deviate add {
      default &quot;baz&quot;;
    }
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Apparently there are a couple of code paths that end up with an error.&lt;/p&gt;

&lt;p&gt;In the first case parsing fails with a name collision for &lt;tt&gt;foo:cntr&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;Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Error in module &apos;foo&apos;: cannot add &apos;(urn:foo)cntr&apos;. Node name collision: &apos;(urn:foo)cntr&apos; already declared at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1480/foo.yang:7:7 [at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1480/foo.yang:7:7]
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespaceBehaviour.addTo(SchemaTreeNamespaceBehaviour.java:64)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespaceBehaviour.addTo(SchemaTreeNamespaceBehaviour.java:27)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SimpleNamespaceContext.addTo(SimpleNamespaceContext.java:44)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.NamespaceStorageSupport.addToNamespace(NamespaceStorageSupport.java:83)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.addToNs(StatementContextBase.java:268)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport.onStatementAdded(AbstractSchemaTreeStatementSupport.java:115)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onStatementAdded(StatementDefinitionContext.java:66)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.childCopyOf(StatementContextBase.java:812)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.childCopyOf(StatementContextBase.java:782)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.copyAsChildOfImpl(StatementContextBase.java:747)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.copyAsChildOf(StatementContextBase.java:729)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.copySubstatement(InferredStatementContext.java:623)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext.requestSchemaTreeChild(InferredStatementContext.java:458)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespaceBehaviour.requestFrom(SchemaTreeNamespaceBehaviour.java:70)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespaceBehaviour.getFrom(SchemaTreeNamespaceBehaviour.java:47)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespaceBehaviour.getFrom(SchemaTreeNamespaceBehaviour.java:27)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.NamespaceBehaviourWithListeners.getFrom(NamespaceBehaviourWithListeners.java:109)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.namespaceItem(ReactorStmtCtx.java:318)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceStmtCtx.getFromNamespace(NamespaceStmtCtx.java:85)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.onNamespaceItemAddedAction(StatementContextBase.java:598)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$AbstractPathPrerequisite.hookOnto(ModifierImpl.java:369)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$AbstractPathPrerequisite.namespaceItemAdded(ModifierImpl.java:350)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase$1.onValueAdded(StatementContextBase.java:608)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.NamespaceBehaviourWithListeners.notifyListeners(NamespaceBehaviourWithListeners.java:88)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SimpleNamespaceContext.addTo(SimpleNamespaceContext.java:47)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.NamespaceStorageSupport.addToNamespace(NamespaceStorageSupport.java:83)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.addToNs(StatementContextBase.java:268)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport.onStatementAdded(AbstractSchemaTreeStatementSupport.java:115)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onStatementAdded(StatementDefinitionContext.java:66)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.childCopyOf(StatementContextBase.java:812)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.childCopyOf(StatementContextBase.java:782)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.copyAsChildOfImpl(StatementContextBase.java:747)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.copyAsChildOf(StatementContextBase.java:729)
	at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.uses.UsesStatementSupport.copyFromSourceToTarget(UsesStatementSupport.java:199)
	at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.uses.UsesStatementSupport$1.apply(UsesStatementSupport.java:106)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.tryApply(ModifierImpl.java:146)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl$AddedToNamespace.phaseFinished(ModifierImpl.java:420)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.runPhaseListeners(StatementContextBase.java:578)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.onPhaseCompleted(StatementContextBase.java:523)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.doTryToCompletePhase(StatementContextBase.java:457)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.tryToCompletePhase(ReactorStmtCtx.java:449)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.completeChildren(StatementContextBase.java:466)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.doTryToCompletePhase(StatementContextBase.java:456)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.tryToCompletePhase(ReactorStmtCtx.java:449)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.tryToCompletePhase(SourceSpecificContext.java:299)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.completePhaseActions(BuildGlobalContext.java:364)
	... 116 more
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In the second case the parser complains that the target path (&lt;tt&gt;/foo:foo/baz:cntr/baz:baz-leaf&lt;/tt&gt;) is not found:&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;Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException: Deviation target &apos;Absolute{qnames=[(urn:foo)foo, (urn:baz)cntr, baz-leaf]}&apos; not found. [at /volumes/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1480/qux.yang:13:3]
	at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.AbstractDeviateStatementSupport$1.prerequisiteFailed(AbstractDeviateStatementSupport.java:167)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl.failModifier(ModifierImpl.java:86)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.failModifiers(SourceSpecificContext.java:375)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.addSourceExceptions(BuildGlobalContext.java:307)
	... 117 more
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="36628">YANGTOOLS-1480</key>
            <summary>Fail to process deviation/augmentation from multiple modules</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</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>Tue, 31 Jan 2023 00:21:09 +0000</created>
                <updated>Wed, 15 Mar 2023 18:59:26 +0000</updated>
                            <resolved>Wed, 15 Mar 2023 18:59:26 +0000</resolved>
                                    <version>8.0.9</version>
                    <version>7.0.18</version>
                    <version>9.0.6</version>
                    <version>10.0.3</version>
                                    <fixVersion>11.0.0</fixVersion>
                    <fixVersion>8.0.10</fixVersion>
                    <fixVersion>9.0.7</fixVersion>
                    <fixVersion>10.0.5</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="72004" author="rovarga" created="Tue, 14 Feb 2023 10:57:06 +0000"  >&lt;p&gt;The second case is a dead ringer for &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1485&quot; title=&quot;Fail to process deviation of augmented node without feature support&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1485&quot;&gt;&lt;del&gt;YANGTOOLS-1485&lt;/del&gt;&lt;/a&gt;. The failure there may be impacting the second case here as well.&lt;/p&gt;</comment>
                            <comment id="72049" author="rovarga" created="Mon, 13 Mar 2023 18:16:26 +0000"  >&lt;p&gt;Okay this is a case of us re-entering during uses statement inlining:&lt;/p&gt;

&lt;p&gt;&#160;&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;Thread [main] (Suspended (breakpoint at line 58 in SchemaTreeNamespaceBehaviour)) &#160; &#160;
    SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.addTo(NamespaceStorageNode, QName, StmtContext&amp;lt;QName,D,E&amp;gt;) line: 58 &#160; &#160;
    SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.addTo(NamespaceBehaviour$NamespaceStorageNode, Object, Object) line: 27 &#160; &#160;
[3] SimpleNamespaceContext&amp;lt;K,V&amp;gt;.addTo(NamespaceStorageNode, K, V) line: 44 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(NamespaceStorageSupport).addToNamespace(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 83 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).addToNs(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 268 &#160; &#160;
&#160; &#160; ContainerStatementSupport(AbstractSchemaTreeStatementSupport&amp;lt;D,E&amp;gt;).onStatementAdded(Mutable&amp;lt;QName,D,E&amp;gt;) line: 115 &#160; &#160;
&#160; &#160; StatementDefinitionContext&amp;lt;A,D,E&amp;gt;.onStatementAdded(Mutable&amp;lt;A,D,E&amp;gt;) line: 66 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StatementContextBase&amp;lt;X,Y,Z&amp;gt;, CopyType, QNameModule) line: 812 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StmtContext&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 782 &#160; &#160;
&#160; &#160; SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOfImpl(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 747 &#160; &#160;
&#160; &#160; SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOf(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 729 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;.copySubstatement(StmtContext&amp;lt;X,Y,Z&amp;gt;) line: 623 &#160; &#160;
[2] InferredStatementContext&amp;lt;A,D,E&amp;gt;.requestSchemaTreeChild(QName) line: 458 &#160; &#160;
&#160; &#160; SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.requestFrom(NamespaceStorageNode, QName) line: 70 &#160; &#160;
&#160; &#160; SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.getFrom(NamespaceStorageNode, QName) line: 47 &#160; &#160;
&#160; &#160; SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.getFrom(NamespaceBehaviour$NamespaceStorageNode, Object) line: 27 &#160; &#160;
&#160; &#160; SimpleNamespaceContext&amp;lt;K,V&amp;gt;(NamespaceBehaviourWithListeners&amp;lt;K,V&amp;gt;).getFrom(NamespaceStorageNode, K) line: 109 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(ReactorStmtCtx&amp;lt;A,D,E&amp;gt;).namespaceItem(ParserNamespace&amp;lt;K,V&amp;gt;, T) line: 318 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(NamespaceStmtCtx).getFromNamespace(ParserNamespace&amp;lt;K,V&amp;gt;, T) line: 85 &#160; &#160;
&#160; &#160; InferredStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).onNamespaceItemAddedAction(ParserNamespace&amp;lt;K,V&amp;gt;, K, OnNamespaceItemAdded) line: 598 &#160; &#160;
&#160; &#160; ModifierImpl$PhaseModificationInNamespacePath&amp;lt;C,K&amp;gt;(ModifierImpl$AbstractPathPrerequisite&amp;lt;C,K&amp;gt;).hookOnto(StatementContextBase&amp;lt;?,?,?&amp;gt;, ParserNamespace&amp;lt;?,?&amp;gt;, K) line: 377 &#160; &#160;
&#160; &#160; ModifierImpl$PhaseModificationInNamespacePath&amp;lt;C,K&amp;gt;(ModifierImpl$AbstractPathPrerequisite&amp;lt;C,K&amp;gt;).namespaceItemAdded(StatementContextBase&amp;lt;?,?,?&amp;gt;, ParserNamespace&amp;lt;?,?&amp;gt;, Object, Object) line: 358 &#160; &#160;
&#160; &#160; StatementContextBase$1.onValueAdded(Object) line: 608 &#160; &#160;
&#160; &#160; SimpleNamespaceContext&amp;lt;K,V&amp;gt;(NamespaceBehaviourWithListeners&amp;lt;K,V&amp;gt;).notifyListeners(NamespaceStorageNode, Iterator&amp;lt;KeyedValueAddedListener&amp;lt;K&amp;gt;&amp;gt;, V) line: 88 &#160; &#160;
[1] SimpleNamespaceContext&amp;lt;K,V&amp;gt;.addTo(NamespaceStorageNode, K, V) line: 47 &#160; &#160;
&#160; &#160; RootStatementContext&amp;lt;A,D,E&amp;gt;(NamespaceStorageSupport).addToNamespace(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 83 &#160; &#160;
&#160; &#160; RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).addToNs(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 268 &#160; &#160;
&#160; &#160; ContainerStatementSupport(AbstractSchemaTreeStatementSupport&amp;lt;D,E&amp;gt;).onStatementAdded(Mutable&amp;lt;QName,D,E&amp;gt;) line: 115 &#160; &#160;
&#160; &#160; StatementDefinitionContext&amp;lt;A,D,E&amp;gt;.onStatementAdded(Mutable&amp;lt;A,D,E&amp;gt;) line: 66 &#160; &#160;
[0] RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StatementContextBase&amp;lt;X,Y,Z&amp;gt;, CopyType, QNameModule) line: 812 &#160; &#160;
&#160; &#160; RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StmtContext&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 782 &#160; &#160;
&#160; &#160; SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOfImpl(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 747 &#160; &#160;
&#160; &#160; SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOf(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 729 &#160; &#160;
&#160; &#160; UsesStatementSupport.copyFromSourceToTarget(StmtContext&amp;lt;?,?,?&amp;gt;, Mutable&amp;lt;?,?,?&amp;gt;, Mutable&amp;lt;QName,UsesStatement,UsesEffectiveStatement&amp;gt;) line: 199 &#160; &#160;
&#160; &#160; UsesStatementSupport$1.apply(ModelActionBuilder$InferenceContext) line: 106 &#160; &#160;
&#160; &#160; ModifierImpl.tryApply() line: 146
[...]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So we are:&lt;br/&gt;
-&#160;0 copying nodes from a grouping to the root of the module (foo.yang), as part of which we are&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;1 populating SchemaTree namespace with &apos;container foo&apos;, as part of which we are&lt;/li&gt;
	&lt;li&gt;2 triggering request for &apos;container cntr&apos;, which is part of the deviation statement in bar.yang&lt;/li&gt;
	&lt;li&gt;3 we are adding it to the namespace&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;But at some point we end up re-entering to requestSchemaTreeChild() even though we have the namespace populated and the substatement materialized:&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;Thread [main] (Suspended (breakpoint at line 427 in InferredStatementContext))	
	InferredStatementContext&amp;lt;A,D,E&amp;gt;.requestSchemaTreeChild(QName) line: 427	
	SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.requestFrom(NamespaceStorageNode, QName) line: 70	
	SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.getFrom(NamespaceStorageNode, QName) line: 47	
	SchemaTreeNamespaceBehaviour&amp;lt;D,E&amp;gt;.getFrom(NamespaceBehaviour$NamespaceStorageNode, Object) line: 27	
	SimpleNamespaceContext&amp;lt;K,V&amp;gt;(NamespaceBehaviourWithListeners&amp;lt;K,V&amp;gt;).getFrom(NamespaceStorageNode, K) line: 109	
	InferredStatementContext&amp;lt;A,D,E&amp;gt;(ReactorStmtCtx&amp;lt;A,D,E&amp;gt;).namespaceItem(ParserNamespace&amp;lt;K,V&amp;gt;, T) line: 318	
	InferredStatementContext&amp;lt;A,D,E&amp;gt;(NamespaceStmtCtx).getFromNamespace(ParserNamespace&amp;lt;K,V&amp;gt;, T) line: 85	
	InferredStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).onNamespaceItemAddedAction(ParserNamespace&amp;lt;K,V&amp;gt;, K, OnNamespaceItemAdded) line: 598	
	ModifierImpl$PhaseModificationInNamespacePath&amp;lt;C,K&amp;gt;(ModifierImpl$AbstractPathPrerequisite&amp;lt;C,K&amp;gt;).hookOnto(StatementContextBase&amp;lt;?,?,?&amp;gt;, ParserNamespace&amp;lt;?,?&amp;gt;, K) line: 377	
	ModifierImpl$PhaseModificationInNamespacePath&amp;lt;C,K&amp;gt;(ModifierImpl$AbstractPathPrerequisite&amp;lt;C,K&amp;gt;).namespaceItemAdded(StatementContextBase&amp;lt;?,?,?&amp;gt;, ParserNamespace&amp;lt;?,?&amp;gt;, Object, Object) line: 358	
	StatementContextBase$1.onValueAdded(Object) line: 608	
	SimpleNamespaceContext&amp;lt;K,V&amp;gt;(NamespaceBehaviourWithListeners&amp;lt;K,V&amp;gt;).notifyListeners(NamespaceStorageNode, Iterator&amp;lt;KeyedValueAddedListener&amp;lt;K&amp;gt;&amp;gt;, V) line: 88	
	SimpleNamespaceContext&amp;lt;K,V&amp;gt;.addTo(NamespaceStorageNode, K, V) line: 47	
	RootStatementContext&amp;lt;A,D,E&amp;gt;(NamespaceStorageSupport).addToNamespace(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 83	
	RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).addToNs(ParserNamespace&amp;lt;K,V&amp;gt;, T, U) line: 268	
	ContainerStatementSupport(AbstractSchemaTreeStatementSupport&amp;lt;D,E&amp;gt;).onStatementAdded(Mutable&amp;lt;QName,D,E&amp;gt;) line: 115	
	StatementDefinitionContext&amp;lt;A,D,E&amp;gt;.onStatementAdded(Mutable&amp;lt;A,D,E&amp;gt;) line: 66	
	RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StatementContextBase&amp;lt;X,Y,Z&amp;gt;, CopyType, QNameModule) line: 812	
	RootStatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).childCopyOf(StmtContext&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 782	
	SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOfImpl(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 747	
	SubstatementContext&amp;lt;A,D,E&amp;gt;(StatementContextBase&amp;lt;A,D,E&amp;gt;).copyAsChildOf(Mutable&amp;lt;?,?,?&amp;gt;, CopyType, QNameModule) line: 729	
	UsesStatementSupport.copyFromSourceToTarget(StmtContext&amp;lt;?,?,?&amp;gt;, Mutable&amp;lt;?,?,?&amp;gt;, Mutable&amp;lt;QName,UsesStatement,UsesEffectiveStatement&amp;gt;) line: 199	
	UsesStatementSupport$1.apply(ModelActionBuilder$InferenceContext) line: 106	
	ModifierImpl.tryApply() line: 146	
[...]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="72059" author="rovarga" created="Wed, 15 Mar 2023 16:21:51 +0000"  >&lt;p&gt;Alright, so I see what is going on: the problem is that we have both (foo)cntr and (baz)cntr meeting in InferredStatement.requestSchemaTree() &amp;#8211; which looks uses (foo)cntr to materialize the statement and &amp;#8211; we end up creating the same statement again (because it&apos;s name will be instantiated again, leading to the first reported error.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="36648">YANGTOOLS-1485</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="33488">YANGTOOLS-1160</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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|i04433:</customfieldvalue>

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