<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:57 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-498] Use VarHandles to manage mdsal-binding-dom-codec proxy state</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-498</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;mdsal-binding-dom codec uses volatile fields in a number of places to implement thread-safe lazily-populated cache:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;CodecDataObject.cachedHashcode (double-checked locking)&lt;/li&gt;
	&lt;li&gt;DataContainerCodecContext.eventStreamSerializer (concurrently-loaded cache)&lt;/li&gt;
	&lt;li&gt;DataContainerCodecPrototype.instance (double-checked locking)&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Accessing these fields causes synchronization actions and thus is subject to global synchronization order (&lt;a href=&quot;https://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.4.4)&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://docs.oracle.com/javase/specs/jls/se11/html/jls-17.html#jls-17.4.4)&lt;/a&gt; . This is strictly not necessary, as the objects being held by the field are immutable (#1), stateless (#2) or effectively-immutable (#3, with a documented quirk).&lt;/p&gt;

&lt;p&gt;Of these, #3 is by far the most interesting, as it is accessed each time the corresponding CodecDataObject&apos;s property is filled &#8211; forcing these fills to occur&#160; in program order. Each such property is effectively immutable, hence this constraint of execution is not really needed.&lt;/p&gt;

&lt;p&gt;Java 9+ allows us to improve the situation here by loosening synchronization to acquire/release on the field. This retains the basic semantics (fill-once) while allowing the runtime to better reorder accesses.&lt;/p&gt;</description>
                <environment></environment>
        <key id="32249">MDSAL-498</key>
            <summary>Use VarHandles to manage mdsal-binding-dom-codec proxy state</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, 11 Dec 2019 12:17:29 +0000</created>
                <updated>Wed, 11 Dec 2019 14:18:48 +0000</updated>
                            <resolved>Wed, 11 Dec 2019 14:18:48 +0000</resolved>
                                                    <fixVersion>5.0.6</fixVersion>
                                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                        <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|i03qcf:</customfieldvalue>

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