<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:33:10 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>[OPNFLWPLUG-702] Excessive data in inventory in Beryllium SR2</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-702</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;Staring in Beryllium SR2, we get ~1440 lines of JSON for table features for &lt;b&gt;every&lt;/b&gt; table in every switch, which for OVS results in ~368,640 lines and 18 MB per switch. While I applaud us gathering all the information we can, we need to find a way to make this less painful.&lt;/p&gt;

&lt;p&gt;See the attached JSON for querying:&lt;br/&gt;
restconf/operational/opendaylight-inventory:nodes/node/openflow:212&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27970">OPNFLWPLUG-702</key>
            <summary>Excessive data in inventory in Beryllium SR2</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="10001">Won&apos;t Do</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="colindixon">Colin Dixon</reporter>
                        <labels>
                    </labels>
                <created>Tue, 24 May 2016 15:03:36 +0000</created>
                <updated>Mon, 27 Sep 2021 09:01:49 +0000</updated>
                            <resolved>Tue, 6 Jun 2017 07:21:03 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="57921" author="colin@colindixon.com" created="Tue, 24 May 2016 15:03:36 +0000"  >&lt;p&gt;Attachment odl-inv.json.zip has been added with description: json for a single OVS switch in the inventory generating 18MB of data&lt;/p&gt;</comment>
                            <comment id="57908" author="mirehak@cisco.com" created="Tue, 24 May 2016 15:58:05 +0000"  >&lt;p&gt;Hi Colin - right, those huge ugly data are table-features.&lt;br/&gt;
In my opinion these shall not be stored in DS/operational. This would decrease size of stored data. &lt;/p&gt;

&lt;p&gt;But app working with table-features would have to read it every time via rpc. Which is probably a good trade off, but we need to discuss that with NIC and DIDM the impact.&lt;/p&gt;</comment>
                            <comment id="57909" author="colin@colindixon.com" created="Tue, 24 May 2016 17:33:30 +0000"  >&lt;p&gt;That would be one approach and it would certainly be better than the current situation. It&apos;s unfortunate that we can&apos;t have the data there but not read it by default.&lt;/p&gt;</comment>
                            <comment id="57910" author="vishnoianil@gmail.com" created="Tue, 24 May 2016 19:30:21 +0000"  >&lt;p&gt;I think recently we added a nob to the enable/disable the table features in lithium plugin and we are working on implementing the same in He plugin as well. But this is short term solution, but i agree we should go with rpc based solution. RPCs are accessible to both controller internal application as well as external application, so both type of application can fetch it. The issue with rpc approach is, if number of application increases and plugin start getting more table feature request, that will put load on the openflowjava, for processing the same information. Alternate solution is to dump these table features under different tree node &quot;/node/openflow:xxx/table-features/1/&quot;, so if application need to read it, they should go to other path, rather than the &quot;node/table/flow&quot; path where frequently used information is stored.&lt;/p&gt;</comment>
                            <comment id="57911" author="mirehak@cisco.com" created="Wed, 25 May 2016 07:28:42 +0000"  >&lt;p&gt;Also we can create new root container to hold large table features (outside inventory). &lt;br/&gt;
There will be similar structure so that current functionality can be supported (listening to changes in DS/operational and changing tables via DS/config).&lt;/p&gt;</comment>
                            <comment id="57912" author="vishnoianil@gmail.com" created="Wed, 25 May 2016 08:01:23 +0000"  >&lt;p&gt;That will scatter the node related information across the model and that probably will create more problem for the applications. What about another augmentation on the node &amp;#8211; &quot;flow-capable-node-table-features&quot;?&lt;/p&gt;</comment>
                            <comment id="57913" author="mirehak@cisco.com" created="Wed, 25 May 2016 08:14:31 +0000"  >&lt;p&gt;That would open optimization door for java-api access (reading, listening).&lt;br/&gt;
But via restconf - augmentations are invisible - so exploration of whole device in inventory will still contain table-features.&lt;/p&gt;</comment>
                            <comment id="57914" author="colin@colindixon.com" created="Wed, 25 May 2016 13:58:06 +0000"  >&lt;p&gt;Do we know if the depth= parameter of RESTCONF still works? That might be a work around.&lt;/p&gt;

&lt;p&gt;Also, only storing non-empty tables would help a lot, but I understand it&apos;s still information.&lt;/p&gt;</comment>
                            <comment id="57915" author="colin@colindixon.com" created="Wed, 25 May 2016 16:58:22 +0000"  >&lt;p&gt;Was this a change in functionality between Beryllium release and SR2? My guess is most people would see generating an extra ~370,000 lines of data as a significant change in behavior to be introduced in an SR.&lt;/p&gt;

&lt;p&gt;I see this patch:&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/36506/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/36506/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;which seems to offer a way to disable this, but was just after SR2.&lt;/p&gt;

&lt;p&gt;Does that work? Would it be a partial fix?&lt;/p&gt;</comment>
                            <comment id="57916" author="vishnoianil@gmail.com" created="Thu, 26 May 2016 00:30:07 +0000"  >&lt;p&gt;Table features functionality was part of the beryllium release from the first release. We do have patches up for review that provides option to disable/enable the functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/39150/6&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/39150/6&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/39005/7&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/39005/7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Helium plugin, table features are enabled by default, because DIDM/NIC project needs table features. We can&apos;t disable it till they move to alternate way to fetch the table features (rpc) or enable it specifically for their own project.&lt;/p&gt;</comment>
                            <comment id="57917" author="mirehak@cisco.com" created="Mon, 30 May 2016 08:59:29 +0000"  >&lt;p&gt;The real reason for suddenly having table features is that ovs started to announce them since version 2.4. We had table features with cpqd during Li already.&lt;/p&gt;

&lt;p&gt;Now we have at least 2 projects (NIC, DIDM) which rely on reading table features from DS/operational. So disabling table features is not really a solution.&lt;/p&gt;

&lt;p&gt;I guess we should inspect first if use-cases of those projects conflict and need to get notified upon table features changed. If not then we can assume:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;table features are rather static (changing them automatically removes all flows so it makes sense to change these only once at the beginning or as part of preconfiguration / reconciliation)&lt;/li&gt;
	&lt;li&gt;table features can be evicted from DS/operational and will be accessible on demand via rpc without inflating DS/operational&lt;/li&gt;
	&lt;li&gt;if there is usecase where an app needs to track table features changes then we can use md-sal notification&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="57918" author="vishnoianil@gmail.com" created="Tue, 31 May 2016 20:28:49 +0000"  >&lt;p&gt;He design only fetch is once when switch connects to the controller, because as of now i believe table feature config is not supported. I think this is not just a problem with plugin performance, but for applications as well. It generates around 3.5 MB of data per switch, so any external application that&apos;s listening for the change notification through web socket, will get this huge amount of data and processing 3.5MB of data per switch will pretty much kill the performance of the external application. I personally feel that we should recommend applications to use rpc to fetch the table features.&lt;/p&gt;</comment>
                            <comment id="57919" author="colin@colindixon.com" created="Fri, 17 Jun 2016 13:05:47 +0000"  >&lt;p&gt;It sounds like, in the short-run, the only way to fix this would be to move the table features information somewhere else: either an RPC or a separate model. &lt;/p&gt;

&lt;p&gt;In the long run, it seems like we&apos;d like a more generic way for people get just want they want from RESTCONF. Maybe the answer is iterative depth-limited calls? That is you first get the list of switches, then you can just fetch what you want about the switches?&lt;/p&gt;</comment>
                            <comment id="57920" author="jozef.bacigal@pantheon.tech" created="Tue, 6 Jun 2017 07:21:03 +0000"  >&lt;p&gt;Closing this bug because there will be no more releases in Beryllium.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="14061" name="odl-inv.json.zip" size="532883" author="colindixon" created="Tue, 24 May 2016 15:03:36 +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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5954</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=5954]]></customfieldvalue>

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

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