<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:57:01 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>[CONTROLLER-2028] Thousands of guava Finalizer threads in waiting</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-2028</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;Distribution: onap-karaf-0.15.1&lt;br/&gt;
Features installed:&#160;odl-netconf-topology,&#160;odl-restconf-nb-rfc8040,&#160;odl-mdsal-apidocs, jolokia&lt;/p&gt;

&lt;p&gt;Situation:&lt;/p&gt;

&lt;p&gt;Mounting of 10 000 netconf-testtool devices (sending of PUT mount requests one after the other) is causing 10 000 threads in &quot;waiting&quot;.&lt;/p&gt;

&lt;p&gt;Thread dump (jstack &amp;lt;pid&amp;gt;) was captured during mounting 10k devices&lt;/p&gt;

&lt;p&gt;&lt;em&gt;before-mount-dump10k.txt -&lt;/em&gt;&#160;thread dump after ODL starts, before sending PUT requests&lt;br/&gt;
&lt;em&gt;2000kdump10k.txt -&lt;/em&gt; thread dump after 2k PUT mount requests&lt;br/&gt;
&lt;em&gt;5000kdump10k.txt&lt;/em&gt;&#160;&lt;em&gt;-&lt;/em&gt; &lt;em&gt;thread dump after 5k PUT mount requests&lt;/em&gt;&lt;br/&gt;
&lt;em&gt;7000kdump10k.txt&lt;/em&gt;&#160;&lt;em&gt;-&lt;/em&gt;&#160;&lt;em&gt;thread dump after 7k PUT mount requests&lt;/em&gt;&lt;br/&gt;
&lt;em&gt;10000kdump10k.txt&lt;/em&gt;&#160;&lt;em&gt;-&lt;/em&gt; &lt;em&gt;thread dump after 10k PUT mount requests&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Snippet of a thread in waiting:&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-quote&quot;&gt;&quot;com.google.common.base.internal.Finalizer&quot;&lt;/span&gt; #4549 daemon prio=5 os_prio=0 cpu=0.09ms elapsed=76.30s tid=0x00007f4e8c1f9800 nid=0x7a78 in &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;.wait()&#160; [0x00007f4d50f50000]&lt;span class=&quot;code-quote&quot;&gt;&quot;com.google.common.base.internal.Finalizer&quot;&lt;/span&gt; #4549 daemon prio=5 os_prio=0 cpu=0.09ms elapsed=76.30s tid=0x00007f4e8c1f9800 nid=0x7a78 in &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;.wait()&#160; [0x00007f4d50f50000]&#160; &#160;java.lang.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.State: WAITING (on object monitor) at java.lang.&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;.wait(java.base@11.0.12/Native Method) - waiting on &amp;lt;no object reference available&amp;gt; at java.lang.ref.ReferenceQueue.remove(java.base@11.0.12/ReferenceQueue.java:155) - waiting to re-lock in wait() &amp;lt;0x00000007272f7b60&amp;gt; (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(java.base@11.0.12/ReferenceQueue.java:176) at com.google.common.base.internal.Finalizer.run(Finalizer.java:145) at java.lang.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.run(java.base@11.0.12/&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.java:829)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I found only this reference which uses Finalizer internally:&lt;br/&gt;
&lt;a href=&quot;https://github.com/opendaylight/controller/blob/37e9a32e285a174443c312ef257fc1df359b50d9/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextCleanup.java#L33&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/opendaylight/controller/blob/37e9a32e285a174443c312ef257fc1df359b50d9/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextCleanup.java#L33&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;based on:&lt;br/&gt;
&lt;a href=&quot;https://guava.dev/releases/7.0/api/docs/com/google/common/base/internal/Finalizer.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://guava.dev/releases/7.0/api/docs/com/google/common/base/internal/Finalizer.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="35121">CONTROLLER-2028</key>
            <summary>Thousands of guava Finalizer threads in waiting</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="10003">Cannot Reproduce</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="msunal">Martin Sunal</reporter>
                        <labels>
                    </labels>
                <created>Mon, 24 Jan 2022 12:56:04 +0000</created>
                <updated>Fri, 4 Feb 2022 08:23:48 +0000</updated>
                            <resolved>Thu, 3 Feb 2022 10:06:02 +0000</resolved>
                                    <version>4.0.7</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="70510" author="rovarga" created="Thu, 3 Feb 2022 10:06:02 +0000"  >&lt;p&gt;I cannot reproduce the problem with the information provided.&lt;br/&gt;
Furthermore even if I could, the referenced field cannot reasonably be the cause for the issue &amp;#8211; it is a static field and the JLS is rather clear on how those work.&lt;/p&gt;</comment>
                            <comment id="70513" author="JIRAUSER13148" created="Fri, 4 Feb 2022 08:23:48 +0000"  >&lt;p&gt;I tried it on different system and I cannot reproduce it there.&lt;/p&gt;

&lt;p&gt;In case I figure out conditions when it can be reproduced I will open this issue again.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="17216" name="10000kdump10k.txt" size="7566211" author="msunal" created="Mon, 24 Jan 2022 12:48:33 +0000"/>
                            <attachment id="17219" name="2000kdump10k.txt" size="2027118" author="msunal" created="Mon, 24 Jan 2022 12:48:24 +0000"/>
                            <attachment id="17218" name="5000kdump10k.txt" size="3923788" author="msunal" created="Mon, 24 Jan 2022 12:48:30 +0000"/>
                            <attachment id="17217" name="7000kdump10k.txt" size="5495083" author="msunal" created="Mon, 24 Jan 2022 12:48:32 +0000"/>
                            <attachment id="17215" name="before-mount-dump10k.txt" size="92384" author="msunal" created="Mon, 24 Jan 2022 12:48:09 +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|i0419j:</customfieldvalue>

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