<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:21:39 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>[NETVIRT-472] Incorrect Usage of AsyncListenerBase class from GENIUS</title>
                <link>https://jira.opendaylight.org/browse/NETVIRT-472</link>
                <project id="10144" key="NETVIRT">netvirt</project>
                    <description>&lt;p&gt;Hi All,&lt;br/&gt;
  We have been doing some scale testing of tunnel creation downstream, and were doing a lot of analysis on where more time is spent.&lt;/p&gt;

&lt;p&gt;Basic issue we figured out is, all interface-states were populated fast, however ITM tunnel-state takes a long time to update.&lt;br/&gt;
The issue further was narrowed down as interface-state listener events for ITM being triggered very slow. Here are the findings:&lt;/p&gt;

&lt;p&gt;1.      The various listeners on operational/interface-state across various applications were using the &#8220;AsyncDataTreeChangeListenerBase&#8221; / &#8220;AsyncClusteredDataTreeChangeListenerBase&#8221;&lt;br/&gt;
In mdsalutil which is having a THREAD_POOL_SIZE=1, and finally all the add(), update(), and remove() methods handling the application logic were on the same thread.&lt;br/&gt;
This in turn was delaying all the interface-state listeners, ITM being one among them. We just changed the listener in ITM to a separate thread and avoided all DS reads in the path, and observed 20 mins reduction in the worstcase bringup time.&lt;br/&gt;
For further proving the theory, the various listeners in applications were commented out, and what we observed is the worstcase ITM tunnel bringup time changed again reduced drastically.&lt;br/&gt;
This is just a root cause analysis, and will ask applications to take calls when and how to fix this. The primary purpose of having AsyncListenerBases in mdsalutil was to take the event from MD-SAL and u take it one at a time, provided you use DatastoreJobCoordinator further to parallelize it. &lt;br/&gt;
These are the various listeners in netvirt and genius which has the above mentioned problem:&lt;/p&gt;

&lt;p&gt;Genius/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java&lt;br/&gt;
Genius/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/monitoring/ItmTunnelEventListener.java&lt;br/&gt;
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/listeners/AclInterfaceStateListener.java&lt;br/&gt;
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceStateChangeListener.java&lt;br/&gt;
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceStateClusteredListener.java&lt;br/&gt;
vpnservice/ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/Ipv6ServiceInterfaceEventListener.java&lt;br/&gt;
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/InterfaceStateEventListener.java&lt;br/&gt;
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatInterfaceStateChangeListener.java&lt;br/&gt;
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatTunnelInterfaceStateListener.java&lt;br/&gt;
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/InterfaceStateChangeListener.java&lt;br/&gt;
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/SubnetRouteInterfaceStateChangeListener.java&lt;/p&gt;

&lt;p&gt;2.      Lot of Datastore reads on the listener processing and no caches.&lt;/p&gt;

&lt;p&gt;3.      Some of the interface-state listeners are still on DCNs instead of DTCNs.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="20393">NETVIRT-472</key>
            <summary>Incorrect Usage of AsyncListenerBase class from GENIUS</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="xcheara">Chetan Arakere Gowdru</assignee>
                                    <reporter username="k.faseela">Faseela K</reporter>
                        <labels>
                    </labels>
                <created>Fri, 10 Feb 2017 18:40:49 +0000</created>
                <updated>Fri, 15 Dec 2017 20:30:24 +0000</updated>
                            <resolved>Mon, 3 Apr 2017 20:12:08 +0000</resolved>
                                    <version>Carbon</version>
                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="37207" author="vorburger" created="Tue, 14 Feb 2017 10:10:09 +0000"  >&lt;p&gt;&amp;gt; 2.Lot of Datastore reads on the listener processing and no caches.&lt;/p&gt;

&lt;p&gt;Perhaps the working upcoming in &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/48920/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/48920/&lt;/a&gt; will be of value in this regard?&lt;/p&gt;</comment>
                            <comment id="37208" author="xcheara" created="Thu, 16 Feb 2017 13:51:49 +0000"  >&lt;p&gt;NAT fix to use DJC  provided - &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/51783/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/51783/&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>7775</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=7775]]></customfieldvalue>

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

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