<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:00: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>[GENIUS-240] IdPoolListener equals() on DataObject seems to cause huge object allocation overhead</title>
                <link>https://jira.opendaylight.org/browse/GENIUS-240</link>
                <project id="10126" key="GENIUS">genius</project>
                    <description>&lt;p&gt;I&apos;m looking at a Java Flight Recording obtained from (internal) scale lab testing, based on Oxygen SR3 code,&#160;and thought it was curious / interesting that the second biggest &quot;TLAB allocation&quot; (85 GiB!) is the one below (top is &lt;a href=&quot;https://jira.opendaylight.org/browse/OPNFLWPLUG-1047&quot; title=&quot;NodeConfiguratorImpl JobQueueHandler iterator() causing extensive object allocation&quot; class=&quot;issue-link&quot; data-issue-key=&quot;OPNFLWPLUG-1047&quot;&gt;&lt;del&gt;OPNFLWPLUG-1047&lt;/del&gt;&lt;/a&gt;), long before and much bigger than other problems related to MDSAL and Akka, is the code path below, originating from genius.&lt;/p&gt;

&lt;p&gt;I&apos;m just wondering if IdPoolListener&apos;s update could be optimized - equals() on individual attributes instead of full DataObject?&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;ConcurrentHashMap$Node[] java.util.concurrent.ConcurrentHashMap.initTable()	16066
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; java.util.concurrent.ConcurrentHashMap.putVal(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt;)	16066
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; java.util.concurrent.ConcurrentHashMap.putIfAbsent(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	16066
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.getBindingData(Method)	16066
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, Method, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	8543
&lt;span class=&quot;code-object&quot;&gt;Long&lt;/span&gt; com.sun.proxy.$Proxy169.getId()	7078
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; sun.reflect.GeneratedMethodAccessor495.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	7078
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; sun.reflect.DelegatingMethodAccessorImpl.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	7078
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; java.lang.reflect.Method.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.bindingEquals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, Method, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; com.sun.proxy.$Proxy169.equals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; java.util.AbstractList.equals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; java.util.Objects.equals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.bindingEquals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt; org.opendaylight.mdsal.binding.dom.codec.impl.LazyDataObject.invoke(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;, Method, &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;[])	7078
&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; com.sun.proxy.$Proxy168.equals(&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;)	7078
void org.opendaylight.genius.idmanager.IdPoolListener.update(IdPool, IdPool)	7078
void org.opendaylight.genius.idmanager.IdPoolListener.update(DataObject, DataObject)	7078
void org.opendaylight.serviceutils.tools.mdsal.listener.DataTreeChangeListenerActions.update(InstanceIdentifier, DataObject, DataObject)	7078
void org.opendaylight.serviceutils.tools.mdsal.listener.DataTreeChangeListenerActions.onDataTreeChanged(Collection, DataStoreMetrics)	7078
void org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredAsyncDataTreeChangeListener.lambda$onDataTreeChanged$0(Collection)	7078
void org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredAsyncDataTreeChangeListener$$Lambda$1177.355435203.run()	7078
void java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)	7078
void java.util.concurrent.ThreadPoolExecutor$Worker.run()	7078
void java.lang.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.run()	7078&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="31018">GENIUS-240</key>
            <summary>IdPoolListener equals() on DataObject seems to cause huge object allocation overhead</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="ankit.ericsson">Ankit Jain</assignee>
                                    <reporter username="vorburger">Michael Vorburger</reporter>
                        <labels>
                    </labels>
                <created>Tue, 13 Nov 2018 13:20:27 +0000</created>
                <updated>Thu, 22 Nov 2018 06:47:31 +0000</updated>
                            <resolved>Thu, 22 Nov 2018 06:47:31 +0000</resolved>
                                    <version>Oxygen-SR3</version>
                                    <fixVersion>Oxygen-SR4</fixVersion>
                    <fixVersion>Fluorine-SR2</fixVersion>
                    <fixVersion>Neon</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="65705" author="vorburger" created="Mon, 19 Nov 2018 09:56:29 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=ankit.ericsson&quot; class=&quot;user-hover&quot; rel=&quot;ankit.ericsson&quot;&gt;ankit.ericsson&lt;/a&gt; thanks for &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/77766/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;c/77766&lt;/a&gt;&#160;.. will you also apply to Fluorine &amp;amp; Oxygen?&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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03kf3:</customfieldvalue>

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