<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:42 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>[CONTROLLER-1497] Improve DataTreeModification pruning on recovery</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1497</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;The PruningDataTreeModification prunes nodes based on namespace. This works fine when an entire schema namespace is removed.&lt;/p&gt;

&lt;p&gt;But it fails if a schema element is removed but the namespace is still valid. Eg, given the following schema:&lt;/p&gt;

&lt;p&gt;module test {&lt;br/&gt;
  namespace &quot;urn:test&quot;;&lt;br/&gt;
  ...&lt;br/&gt;
  container container1 {&lt;br/&gt;
  }&lt;/p&gt;

&lt;p&gt;  container container2 {&lt;br/&gt;
  }&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;If container1 is removed, on persistence recovery, the PruningDataTreeModification tries to merge the node but it fails with a SchemaValidationFailedException. It then checks if the namespace(s) in the path are valid. If it isn&apos;t, it discards it with an &quot;Invalid node identifier ...&quot; message. But in this case the namespace is still valid so it assumes a child node was invalid and tries to prune the node tree. However the NormalizedNodePruner also checks namespaces so nothing is pruned and tries to merge it again which fails again with SchemaValidationFailedException. This gets propagated to akka and recovery fails rendering the Shard unusable.&lt;/p&gt;

&lt;p&gt;What we need to do is check if the QNames in the path and nodes are valid, same as the data tree does. I prototyped a solution for this.&lt;/p&gt;

&lt;p&gt;Another issue I found is that merge validates the structure but write doesn&apos;t. The SchemaValidationFailedException occurs later on ready. So we need to also catch SchemaValidationFailedException on ready and re-apply the modification tree with pruning.&lt;/p&gt;

&lt;p&gt;I think it would be ideal and more efficient to do the pruning in the InMemoryDataTreeModification, i.e. a pruning version of it. But I think that would be part of a bigger effort for schema migration support.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="26051">CONTROLLER-1497</key>
            <summary>Improve DataTreeModification pruning on recovery</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="10000">Done</resolution>
                                        <assignee username="tpantelis">Tom Pantelis</assignee>
                                    <reporter username="tpantelis">Tom Pantelis</reporter>
                        <labels>
                    </labels>
                <created>Wed, 9 Mar 2016 21:34:18 +0000</created>
                <updated>Wed, 13 Apr 2016 11:34:22 +0000</updated>
                            <resolved>Wed, 13 Apr 2016 11:34:22 +0000</resolved>
                                    <version>Beryllium</version>
                                                    <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="51360" author="tpantelis" created="Thu, 10 Mar 2016 03:50:14 +0000"  >&lt;p&gt;Submitted &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/36013/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/36013/&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5485</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=5485]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10340"><![CDATA[Boron-M2]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10301"><![CDATA[Normal]]></customfieldvalue>

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

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