<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:27:42 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>[ODLPARENT-125] Oxygen development is limited by SingleFeatureTest running out of heap space</title>
                <link>https://jira.opendaylight.org/browse/ODLPARENT-125</link>
                <project id="10149" key="ODLPARENT">odlparent</project>
                    <description>&lt;p&gt;SingleFeatureTest is failing on odl-integration-all feature for some contributions, preventing them from merging (as distribution-check fails).&lt;/p&gt;

&lt;p&gt;As reported in e-mail &lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt;, there is a workaround (Distribution to set higher heap size in order for SingleFeatureTest to pass), which just needs Odlparent releasing 2.0.5 version.&lt;/p&gt;

&lt;p&gt;Local testing showed this might be just a consequence of &lt;a href=&quot;https://jira.opendaylight.org/browse/ODLPARENT-115&quot; title=&quot;Karaf is slow to start processing features after start&quot; class=&quot;issue-link&quot; data-issue-key=&quot;ODLPARENT-115&quot;&gt;&lt;del&gt;ODLPARENT-115&lt;/del&gt;&lt;/a&gt; Karaf 4.0.9 consumes not only time but also memory in excess. But it might be possible to fix memory consumption in a different way.&lt;/p&gt;

&lt;p&gt;Also, this Bug is more severe than &lt;a href=&quot;https://jira.opendaylight.org/browse/ODLPARENT-115&quot; title=&quot;Karaf is slow to start processing features after start&quot; class=&quot;issue-link&quot; data-issue-key=&quot;ODLPARENT-115&quot;&gt;&lt;del&gt;ODLPARENT-115&lt;/del&gt;&lt;/a&gt; as that has a workaround of just waiting for a longer time.&lt;/p&gt;

&lt;p&gt;Additional example of a Change failing distribution-check: &lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://lists.opendaylight.org/pipermail/odlparent-dev/2017-September/001341.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://lists.opendaylight.org/pipermail/odlparent-dev/2017-September/001341.html&lt;/a&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/63329&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/63329&lt;/a&gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="22248">ODLPARENT-125</key>
            <summary>Oxygen development is limited by SingleFeatureTest running out of heap space</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <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="vrpolak">Vratko Polak</reporter>
                        <labels>
                    </labels>
                <created>Wed, 27 Sep 2017 08:45:16 +0000</created>
                <updated>Fri, 13 Apr 2018 08:47:45 +0000</updated>
                            <resolved>Fri, 13 Apr 2018 08:47:45 +0000</resolved>
                                    <version>2.0.5</version>
                                    <fixVersion>3.1.0</fixVersion>
                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="42101" author="rovarga" created="Wed, 27 Sep 2017 09:08:40 +0000"  >&lt;p&gt;Based on a heap dump we&apos;ve got, it is something between karaf and felix resolver. The resolver is tasked to resolve 24837 requirements, which quickly falls over due to OpenHashMapList cloning during permutations (recorded 978 copies) and 24M CandidateSelector objects.&lt;/p&gt;

&lt;p&gt;Moreover there are huge numbers of duplicate karaf&apos;s SimpleFilter objects - in groups of 400-5000 objects, wasting around 5MB memory.&lt;/p&gt;

&lt;p&gt;Furthermore there is a ton of duplicate (Linked)HashMap entries retained from RequirementImpl &amp;#8211; typically containing only a single element, wasting quite a bit of memory there.&lt;/p&gt;

&lt;p&gt;To top it all off, there are 21K sparsely populated &amp;#8211; pre-allocated to 10 entries, but holding 1 or 2 entries &amp;#8211; most of which comes from SimpleFilter.&lt;/p&gt;</comment>
                            <comment id="42102" author="rovarga" created="Wed, 27 Sep 2017 12:15:43 +0000"  >&lt;p&gt;A test case is quite simple:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;download Nitrogen&lt;/li&gt;
	&lt;li&gt;JAVA_MAX_MEM=1g ./bin/karaf&lt;/li&gt;
	&lt;li&gt;repo-add mvn:org.opendaylight.integration/odl-integration-all/0.7.0/xml/features&lt;/li&gt;
	&lt;li&gt;feature:install odl-integration-all&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="42103" author="rovarga" created="Thu, 28 Sep 2017 17:57:06 +0000"  >&lt;p&gt;So this is definitely exposed by us packaging bundles multiple times. The problem is that felix resolver is performing SUBSTITUTE permutations, which are the memory hog.&lt;/p&gt;

&lt;p&gt;These are emitted each time a bundle is duplicated &amp;#8211; e.g. bgp-parser-api, which is packaged three times adds two permutation candidates.&lt;/p&gt;

&lt;p&gt;I think suspect there is a bug in karaf, but we can definitely hide the issue by being careful with out packaging.&lt;/p&gt;</comment>
                            <comment id="42104" author="rovarga" created="Thu, 28 Sep 2017 19:35:22 +0000"  >&lt;p&gt;So this issue is a combination of us multi-packaging our features and how Karaf implements Resource, Capability and Requirement interfaces &amp;#8211; these have well-defined semantics and are tied together (i.e. they cross-reference each other). They are violating the API contract by not providing proper hashCode()/equals() as specified by the contract.&lt;/p&gt;

&lt;p&gt;While Capability and Requirement are easily retro-fitted, Karaf does not record Resource (i.e. bundle) content sufficiently to make Resource equals() not dependent on Capability.&lt;/p&gt;

&lt;p&gt;This has two impacts:&lt;br/&gt;
1) Each bundle declaration is treated as unique, hence multiple declarations in a feature (and even &lt;b&gt;within&lt;/b&gt; the same feature) are not squashed, even when they point to the same bundle.&lt;/p&gt;

&lt;p&gt;2) Felix Resolver is led to believe that duplicate bundles are actually different potential candidates, which provide same capabilities (expanding the search space along the permutation axis) and also treating each such bundle&apos;s requirements as unique (expanding the search space along the requirement axis).&lt;/p&gt;

&lt;p&gt;The end result is that the resolver has a large working set for each permutation and also has a large number of permutations &amp;#8211; quickly exhausting memory.&lt;/p&gt;

&lt;p&gt;Fixing this completely correctly on Karaf side is probably going to be a major surgery and a multi-week effort.&lt;/p&gt;

&lt;p&gt;Raising severity of this issue to blocker. Will re-target to Nitrogen SR1 and open per-project issues to once there is an SR1 milestone in bugzilla.&lt;/p&gt;</comment>
                            <comment id="42105" author="rovarga" created="Thu, 28 Sep 2017 19:49:16 +0000"  >&lt;p&gt;&lt;a href=&quot;https://issues.apache.org/jira/browse/KARAF-5395&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://issues.apache.org/jira/browse/KARAF-5395&lt;/a&gt; upstream.&lt;/p&gt;</comment>
                            <comment id="42106" author="vrpolak" created="Thu, 5 Oct 2017 13:42:47 +0000"  >&lt;p&gt;Even with Odlparent 2.0.5 (Karaf 4.0.10) we can run out of heap when installing large enough tree of features. See &lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Note that SingleFeatureTest during distribution-check currently uses 4 GB of heap space. But subsequent boot (to verify Restconf) uses only 3 GB.&lt;/p&gt;

&lt;p&gt;Distribution-check currently does not archive heap dump. Even if it did, .gz would have almost 900 MB, so Nexus upload would fail.&lt;br/&gt;
.xz would have around 120MB, it would take some time to make distribution-check archive that.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/61750/4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/61750/4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="42107" author="vrpolak" created="Fri, 6 Oct 2017 12:54:45 +0000"  >&lt;p&gt;&amp;gt; .xz would have around 120MB, it would take some time to make&lt;br/&gt;
&amp;gt; distribution-check archive that.&lt;/p&gt;

&lt;p&gt;Some time has passed, releng/builder improvement is ready: &lt;span class=&quot;error&quot;&gt;&amp;#91;3&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;3&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/63992&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/63992&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="42108" author="rovarga" created="Sat, 7 Oct 2017 22:06:02 +0000"  >&lt;p&gt;patches for individual projects are collected under &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/q/topic:bug9218&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/q/topic:bug9218&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="42109" author="vrpolak" created="Mon, 9 Oct 2017 10:45:29 +0000"  >&lt;p&gt;&amp;gt;&amp;gt; Even with Odlparent 2.0.5 (Karaf 4.0.10) we can run out of heap when&lt;br/&gt;
&amp;gt;&amp;gt; installing large enough tree of features. See &lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&amp;gt; releng/builder improvement is ready: &lt;span class=&quot;error&quot;&gt;&amp;#91;3&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Compressed heap dump is archived: &lt;span class=&quot;error&quot;&gt;&amp;#91;4&amp;#93;&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;4&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/distribution-check-nitrogen/425/hprof.tar.xz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/distribution-check-nitrogen/425/hprof.tar.xz&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9218</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=9218]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10323"><![CDATA[Oxygen]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i023gn:</customfieldvalue>

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