<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:34:06 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-1068] Optimize MatchEntrySerializer</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-1068</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;MatchEntrySerializer interface has a non-optimal design, as its only use is &apos;serialize-if-present&apos;, which is split into two distinct methods (matchTypeCheck() and serialize()). This leads to implementations not being able to retain information extracted during &apos;if-present&apos; phase and they have to walk the Match DTOs twice and for cases where information needs to be split out (like Ipv4Prefix), they end up performing the same operations.&lt;/p&gt;

&lt;p&gt;Rework MatchEntrySerializer to have a serializeIfPresent() method, which performs a fused check and serialization, allowing implementations to reuse data they extract from the Match structure.&lt;/p&gt;

&lt;p&gt;The implementation side of things, in org.opendaylight.openflowplugin.impl.protocol.serialization.match, the code structure is heavily impacted by the API design. It also trades code for memory, which does not make sense as the implementation objects each have a single instance. One example is header bytes, which can have at most two values, yet these are computed for each emitted match.&lt;/p&gt;

&lt;p&gt;Furthermore the overall class hierarchy design does not abstract the header/body part too well, nor does it provide any sort of code-sharing, leading to large chunks of duplicated code. Worse yet, execution speed is hampered by each step requiring a megamorphic (i.e. type-specific) invocation, which hurts devirtualization and inlining.&lt;/p&gt;

&lt;p&gt;Rework serializer implementations to cache their headers, share code where possible and perform check-and-serialize retaining enough information between the two phases, so we do not perform duplicate work unless absolutely necessary.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="31484">OPNFLWPLUG-1068</key>
            <summary>Optimize MatchEntrySerializer</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</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="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Thu, 7 Mar 2019 10:58:50 +0000</created>
                <updated>Sun, 19 Jul 2020 11:04:22 +0000</updated>
                            <resolved>Thu, 11 Apr 2019 22:23:07 +0000</resolved>
                                                    <fixVersion>Sodium</fixVersion>
                                    <component>openflowjava-api</component>
                    <component>openflowjava-impl</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="33069">OPNFLWPLUG-1100</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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|i03mxb:</customfieldvalue>

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