<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:49 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>[MDSAL-444] Switch  runtime codegen from Javassist to ByteBuddy</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-444</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;With the recent rework of runtime-generated code (&lt;a href=&quot;https://jira.opendaylight.org/browse/MDSAL-442&quot; title=&quot;Teach binding-dom-codec to keep its proxies in a separate ClassLoader&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MDSAL-442&quot;&gt;&lt;del&gt;MDSAL-442&lt;/del&gt;&lt;/a&gt;, &lt;a href=&quot;https://jira.opendaylight.org/browse/MDSAL-443&quot; title=&quot;Inline CodecDataObject&amp;#39;s NodeContextSuppliers&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MDSAL-443&quot;&gt;MDSAL-443&lt;/a&gt;, &lt;a href=&quot;https://jira.opendaylight.org/browse/MDSAL-401&quot; title=&quot;Teach AbstractStreamWriterGenerator to keep its mess in its own ClassLoader&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MDSAL-401&quot;&gt;&lt;del&gt;MDSAL-401&lt;/del&gt;&lt;/a&gt;), the shape of these classes ends up not containing any real logic as most of it is held in superclasses (CodecDataObject, CodecOpaqueObject and DataObjectStreamer). We are also in complete control of loading the resulting bytecode and class lookup by virtue of using CodecClassLoader.&lt;/p&gt;

&lt;p&gt;Thus we are at a point where Javassist is providing us with no real value and its programming paradigm (i.e. the need to load class bytecode before being able to operate on it) is actually hurting us &#8211; see DataObjectStreamerBridge.&lt;/p&gt;

&lt;p&gt;Switch to ByteBuddy, whose bytecode-oriented nature allows us to operate on java.lang.reflect-based constructs and emit pure bytecode without intermediate compilation. This should not only streamline our code by not having to deal with CtClasses, but also speed up startup (by virtue of no Exception-driven compilation in Javassist) and lower memory footprint (by virtue of not needing CtClass caches).&lt;/p&gt;</description>
                <environment></environment>
        <key id="31635">MDSAL-444</key>
            <summary>Switch  runtime codegen from Javassist to ByteBuddy</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>Wed, 24 Apr 2019 14:17:35 +0000</created>
                <updated>Tue, 30 Apr 2019 03:31:07 +0000</updated>
                            <resolved>Tue, 30 Apr 2019 03:31:07 +0000</resolved>
                                                    <fixVersion>4.0.1</fixVersion>
                                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="66731" author="rovarga" created="Thu, 25 Apr 2019 12:54:34 +0000"  >&lt;p&gt;Initial prototype looks promising, one snag though is ByteBuddy&apos;s size (mostly due to its DSL and organization) &#8211; it will bump our jar size by about 2.5M, making it +1.8M even when ditch javassist completely. At any rate, the Streamers need to be finished up before we know for sure.&lt;/p&gt;</comment>
                            <comment id="66732" author="rovarga" created="Thu, 25 Apr 2019 14:31:41 +0000"  >&lt;p&gt;Also ByteBuddy will require some bytecode loading too, it seems &#8211; but that probably can be better integrated with CodecClassLoader than ClassPool.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="31087">MDSAL-401</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="31630">MDSAL-443</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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|i03nkf:</customfieldvalue>

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