<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:46 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-422] DataObjectModification.getModificationType() throws ISE on UNMODIFIED</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-422</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;This problem is handled by OVSDB&apos;s TransactCommandAggregator, which explicitly catches the ISE generated by DataObjectModification.getModificationType().&lt;/p&gt;

&lt;p&gt;The ISE is generated because modified children of a SUBTREE_MODIFIED node include a MERGE operation which turned out to be an UNMODIFIED node &#8211; which Binding cannot map, as it has only DELETE/WRITE/SUBTREE_MODIFIED options.&lt;/p&gt;

&lt;p&gt;Direct users usually handle this gracefully by ignoring the unmodified node when iterating over the nodes &#8211; but Binding would have to always filter modified nodes.&lt;/p&gt;

&lt;p&gt;This poses an interesting lifecycle problem: the node should really be pruned from the DataTreeCandidate, so that if this is the only modification within a SUBTREE_MODIFIED parent, that parent would turn into UNMODIFIED, and cascade upwards.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="31423">MDSAL-422</key>
            <summary>DataObjectModification.getModificationType() throws ISE on UNMODIFIED</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</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>Fri, 8 Feb 2019 12:22:11 +0000</created>
                <updated>Tue, 19 Mar 2019 14:33:19 +0000</updated>
                            <resolved>Tue, 19 Mar 2019 14:33:19 +0000</resolved>
                                    <version>Fluorine SR2</version>
                    <version>3.0.6</version>
                                    <fixVersion>Fluorine SR3</fixVersion>
                    <fixVersion>3.0.7</fixVersion>
                                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="66435" author="rovarga" created="Mon, 11 Feb 2019 15:30:10 +0000"  >&lt;p&gt;Testing with current 2.1.9-SNAPSHOT, the problem is that multiple child nodes are being modified, hence the change will not be completely squashed, i.e. it will contain a both UNMODIFIED and WRITE children. I think the problem is the getModifiedChild() contract, which specifies null return &quot;if child was not modified / does not exists&quot;. RecursiveUnmodifiedCandidateNode is in direct violation of this contract, as it will actively allow descent into child nodes, pretending all of them are unmodified.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="66436" author="rovarga" created="Mon, 11 Feb 2019 15:41:55 +0000"  >&lt;p&gt;We also do not check for these nodes in AbstractModifiedNodeBasedCandidateNode, and expose them through both getChildNodes() and getModifiedChild(). I think the best approach is to fix the issue in MDSAL/Controller and clarify the API contract in 3.0.0.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="31426">YANGTOOLS-954</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|i03mk7:</customfieldvalue>

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