<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:56:15 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-1474] Fail to process augmentation with empty grouping</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1474</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Parsing of YANG models may fail with the following conditions:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;YANG models include augmentation with an empty grouping&lt;/li&gt;
	&lt;li&gt;Parsing is done with no supported features&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;For example, parsing of the following two YANG modules with no supported features - the augmentation effectively does nothing but there is a such data model actually used in the device, believe it or not:&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;;

  container foo {
    leaf foo-leaf {
      type string;
    }
  }
}
&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;
  }

  grouping bar-group {
  }

  augment &quot;/foo:foo&quot; {
    uses bar-group;
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;may trigger the following exception:&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.SomeModifiersUnresolvedException: Some of EFFECTIVE_MODEL modifiers for statements were not resolved.
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:233)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.transformEffective(BuildGlobalContext.java:263)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:208)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:232)
	at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.stmt.TestUtils.parseYangSource(TestUtils.java:95)
	at org.opendaylight.yangtools.yang.parser.rfc7950@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.stmt.AbstractYangTest.assertEffectiveModel(AbstractYangTest.java:44)
	... 72 more
Caused by: com.google.common.base.VerifyException: expected a non-null reference
	at com.google.common@31.1-jre/com.google.common.base.Verify.verifyNotNull(Verify.java:503)
	at com.google.common@31.1-jre/com.google.common.base.Verify.verifyNotNull(Verify.java:479)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.mutableDeclaredSubstatements(AbstractResumedStatement.java:67)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext$Mutable.declaredSubstatements(StmtContext.java:234)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.checkFeatureSupport(StmtContextUtils.java:221)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.isSupportedByFeatures(ReactorStmtCtx.java:490)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.declaredSubstatements(AbstractStatementSupport.java:174)
	at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:84)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:131)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:116)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
	at org.opendaylight.yangtools.yang.parser.reactor@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.transformEffective(BuildGlobalContext.java:261)
	... 76 more
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;One thing to note is that the two conditions listed above appear to be necessary but not sufficient because the error is not triggered predictably.&lt;/p&gt;</description>
                <environment></environment>
        <key id="36513">YANGTOOLS-1474</key>
            <summary>Fail to process augmentation with empty grouping</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>
                    </labels>
                <created>Wed, 4 Jan 2023 06:38:32 +0000</created>
                <updated>Mon, 30 Jan 2023 12:27:11 +0000</updated>
                            <resolved>Mon, 30 Jan 2023 12:27:11 +0000</resolved>
                                    <version>8.0.9</version>
                    <version>10.0.2</version>
                    <version>9.0.6</version>
                                    <fixVersion>8.0.10</fixVersion>
                    <fixVersion>10.0.3</fixVersion>
                    <fixVersion>9.0.7</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="71808" author="JIRAUSER13318" created="Wed, 4 Jan 2023 07:03:25 +0000"  >&lt;p&gt;Among the 4 test cases from &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/103918/1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/103918/1&lt;/a&gt;, 3 test cases failed and one passed although the 4 test cases use the exactly same YANG files:&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;06:47:34 [ERROR] Failures: 
06:47:34 [ERROR]   YT1474Test.testEmptyGroupingBarFoo1:32-&amp;gt;AbstractYangTest.assertEffectiveModel:47 Failed to assemble effective model
06:47:34 [ERROR]   YT1474Test.testEmptyGroupingFooBar1:22-&amp;gt;AbstractYangTest.assertEffectiveModel:47 Failed to assemble effective model
06:47:34 [ERROR]   YT1474Test.testEmptyGroupingFooBar2:27-&amp;gt;AbstractYangTest.assertEffectiveModel:47 Failed to assemble effective model
06:47:34 [INFO] 
06:47:34 [ERROR] Tests run: 565, Failures: 3, Errors: 0, Skipped: 0
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When the tests in &lt;tt&gt;YT1474Test&lt;/tt&gt; are run separately, different test cases fail. For example, on MacOS, the only one test case (&lt;tt&gt;testEmptyGroupingBarFoo2&lt;/tt&gt;) failed:&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;[ERROR] Failures:
[ERROR]   YT1474Test.testEmptyGroupingBarFoo2:37-&amp;gt;AbstractYangTest.assertEffectiveModel:47 Failed to assemble effective model
[INFO]
[ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 0
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But a different test case (&lt;tt&gt;testEmptyGroupingFooBar1&lt;/tt&gt;) failed when the tests were run in a Linux container:&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;[ERROR] Failures:
[ERROR]   YT1474Test.testEmptyGroupingFooBar1:22-&amp;gt;AbstractYangTest.assertEffectiveModel:47 Failed to assemble effective model
[INFO]
[ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 0
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="71924" author="rovarga" created="Tue, 17 Jan 2023 14:31:15 +0000"  >&lt;p&gt;The variance depends on what the processing order is going to be. In the failure case &apos;foo.yang&apos; is built first successfully and the failure occurs when &apos;bar.yang&apos; is being built.&lt;/p&gt;

&lt;p&gt;The grouping&apos;s refcount should be held down by parent&apos;s (module) statement&apos;s implicit reference, but that does not seem to be the case here. For non-empty groupings we end up being pinned down by our children (and hence the sweep takes a different codepath).&lt;/p&gt;

&lt;p&gt;Recording the sweep stack trace and propagating into the VerifyException shows the following codepath:&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: com.google.common.base.VerifyException: Substatements no longer available in SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(urn:bar)bar-group, refCount=SWEPT}
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.mutableDeclaredSubstatements(AbstractResumedStatement.java:78)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext$Mutable.declaredSubstatements(StmtContext.java:234)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.checkFeatureSupport(StmtContextUtils.java:221)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.isSupportedByFeatures(ReactorStmtCtx.java:490)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
 &#160;&#160;&#160;at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
 &#160;&#160;&#160;at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
 &#160;&#160;&#160;at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.declaredSubstatements(AbstractStatementSupport.java:174)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:84)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:142)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:127)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.transformEffective(BuildGlobalContext.java:261)
 &#160;&#160;&#160;... 75 more
Caused by: java.lang.Throwable: Drop org.opendaylight.yangtools.yang.parser.stmt.reactor.SubstatementContext@7048f722 name SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(urn:bar)bar-group, refCount=SWEEPING}
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.dropDeclaredSubstatements(AbstractResumedStatement.java:213)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx.sweepSubstatements(OriginalStmtCtx.java:145)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepState(ReactorStmtCtx.java:898)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.sweepOnDecrement(ReactorStmtCtx.java:783)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:380)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.rfc7950/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.uses.UsesStatementSupport.createEffective(UsesStatementSupport.java:143)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.rfc7950/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.uses.UsesStatementSupport.createEffective(UsesStatementSupport.java:1)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:85)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:142)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:127)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
 &#160;&#160;&#160;at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
 &#160;&#160;&#160;at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:139)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:83)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:142)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:127)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReplicaStatementContext.createEffective(ReplicaStatementContext.java:54)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
 &#160;&#160;&#160;at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
 &#160;&#160;&#160;at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:139)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:83)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:142)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createEffective(AbstractResumedStatement.java:127)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase.createEffective(StatementContextBase.java:426)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.loadEffective(ReactorStmtCtx.java:375)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.reactor/org.opendaylight.yangtools.yang.parser.stmt.reactor.ReactorStmtCtx.buildEffective(ReactorStmtCtx.java:371)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
 &#160;&#160;&#160;at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
 &#160;&#160;&#160;at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
 &#160;&#160;&#160;at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 &#160;&#160;&#160;at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.buildEffectiveSubstatements(AbstractStatementSupport.java:139)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.rfc7950/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module.ModuleStatementSupport.buildEffectiveSubstatements(ModuleStatementSupport.java:189)
 &#160;&#160;&#160;at org.opendaylight.yangtools.yang.parser.spi@10.0.3-SNAPSHOT/org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport.createEffective(AbstractStatementSupport.java:83)
 &#160;&#160;&#160;... 81 more

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The &quot;Drop &quot; exception is recorded when the substatements are dropped.&lt;/p&gt;</comment>
                            <comment id="71925" author="rovarga" created="Tue, 17 Jan 2023 15:22:32 +0000"  >&lt;p&gt;Okay, so the problem here is that:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;we determine that the grouping has only its reference&lt;/li&gt;
	&lt;li&gt;we enter calculateParentRefcount()&lt;/li&gt;
	&lt;li&gt;&apos;bar&apos;, being its parent, is undergoing effective build&lt;/li&gt;
	&lt;li&gt;it has refcount == 0 and then we re-enter bar&apos;s calculateParentRefcount()&lt;/li&gt;
	&lt;li&gt;&apos;bar&apos; being a module does not have a parent, hence reports PARENTREF_ABSENT&lt;/li&gt;
	&lt;li&gt;and thus we determine that grouping has PARENTREF_ABSENT and proceed to sweep it&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;now, some time later we resume building &apos;bar&apos; and iterate its children ... and boom.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="36612">YANGTOOLS-1475</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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|i043w7:</customfieldvalue>

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