<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:54:26 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-1001] Datastore write that automatically creates children broken</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1001</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;A change in the last 24-48 hrs broke a datastore write that asks for intermediate children to be created automatically. This has broken SFC and probably other projects.&lt;/p&gt;

&lt;p&gt;The following code has always worked (notice the &#8220;true&#8221;) &lt;/p&gt;

&lt;p&gt;        writeTx.merge(LogicalDatastoreType.CONFIGURATION,&lt;br/&gt;
                sftentryIID, sftServiceFunctionName, true);&lt;/p&gt;

&lt;p&gt;And now it barfs with the following.&lt;/p&gt;

&lt;p&gt;Caused by: org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException: Node /(urn:cisco:params:xml:ns:yang:sfc-sft?revision=2014-07-01)service-function-types does not exist. Cannot apply modification to its children.&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:164)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkChildPreconditions(NormalizedNodeContainerModificationStrategy.java:178)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.checkSubtreeModificationApplicable(NormalizedNodeContainerModificationStrategy.java:168)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.checkApplicable(SchemaAwareApplyOperation.java:135)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.impl.schema.tree.RootModificationApplyOperation.checkApplicable(RootModificationApplyOperation.java:72)&lt;span class=&quot;error&quot;&gt;&amp;#91;90:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25555">CONTROLLER-1001</key>
            <summary>Datastore write that automatically creates children broken</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="tony.tkacik@gmail.com">Tony Tkacik</assignee>
                                    <reporter username="repenno">Reinaldo Penno</reporter>
                        <labels>
                    </labels>
                <created>Thu, 6 Nov 2014 01:59:43 +0000</created>
                <updated>Thu, 27 Nov 2014 10:48:36 +0000</updated>
                            <resolved>Thu, 27 Nov 2014 10:48:36 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>mdsal</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="49738" author="tony.tkacik@gmail.com" created="Thu, 6 Nov 2014 08:57:24 +0000"  >&lt;p&gt;Moved to Controller MD-SAL since this functionality is provided by DataBroker, not underlying DataTree (which only reported error).&lt;/p&gt;

&lt;p&gt;Error you got, is only and only possible if there was two transactions like:&lt;/p&gt;

&lt;p&gt;delTx = newReadWriteTransaction() // started from same point (service-function-types exists in transaction)&lt;br/&gt;
wrTx = newReadWriteTransaction() // started from same point (service-function-types exists in transaction)&lt;/p&gt;

&lt;p&gt;delTx.delete(CONFIGURATION,&quot;service-function-types&quot;) // deletes container service-function-types&lt;br/&gt;
wrTx.merge(CONFIGURATION,sfentryId,sfName,true)      // service-function-types exists in transaction, no need to create it&lt;br/&gt;
delTx.commit().get()  // delTx got commited, service-function-types is removed&lt;br/&gt;
wrTx.commit().get() // write Transaction is submitted, service-function-types does not exist (transaction does not contains instruction to create it since it existed at original time, this leads to error).&lt;/p&gt;

&lt;p&gt;So in short during your configuration of sfc data some other code external to MD-SAL deleted it.&lt;/p&gt;

&lt;p&gt;Behaviour probably should be that these nodes should be introduced again, but underlying problem is there were two excecutions in system which modified same subtree in different ways - race condition.&lt;/p&gt;


&lt;p&gt;Since Helium no code was changed in createParents = true implementation, so if it is bug in MD-SAL that bug was present&lt;br/&gt;
since createParents was introduced.&lt;/p&gt;</comment>
                            <comment id="49739" author="rapenno@gmail.com" created="Thu, 6 Nov 2014 09:02:01 +0000"  >&lt;p&gt;thanks Tony,&lt;/p&gt;

&lt;p&gt;I will investigate further. Lowered the priority.&lt;/p&gt;</comment>
                            <comment id="49740" author="tony.tkacik@gmail.com" created="Thu, 6 Nov 2014 09:30:10 +0000"  >&lt;p&gt;Stable/helium patch, once reviewed and merged will be cherrypick to helium&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/12544/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/12544/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="49741" author="rapenno@gmail.com" created="Thu, 6 Nov 2014 21:47:32 +0000"  >&lt;p&gt;I finished investigation and it is as you hinted.&lt;/p&gt;

&lt;p&gt;The Python regression script and external app perform transactions at the same time simulating multiple real external apps. &lt;/p&gt;

&lt;p&gt;I&apos;m not sure why I&apos;m seeing this messages now since this test has been going on for a while and I never saw them (I&apos;m positive on this). I&apos;m till wondering if there was a change recently.&lt;/p&gt;

&lt;p&gt;Irrespective, this is very important since in real world situations many apps will operate on the datastore at the same time deleting/adding/etc simultaneously.&lt;/p&gt;

&lt;p&gt;thanks,&lt;/p&gt;</comment>
                            <comment id="49742" author="ricjhill@gmail.com" created="Mon, 10 Nov 2014 13:15:09 +0000"  >&lt;p&gt;Regarding &quot;I&apos;m not sure why I&apos;m seeing this messages now since this test has been going on for a while and I never saw them&quot;&lt;/p&gt;

&lt;p&gt;Has the timing or  order of the test changed? This may  uncover a race condition&lt;/p&gt;</comment>
                            <comment id="49743" author="rapenno@gmail.com" created="Fri, 14 Nov 2014 01:57:55 +0000"  >&lt;p&gt;No, nothing changed, some background:&lt;/p&gt;


&lt;p&gt;I have a SFC regression script that run every 24hrs or so. The script does the same thing all the time, it uses Python to commit things through RESTconf simulating two different clients at the same time. No changes there. &lt;/p&gt;

&lt;p&gt;The SFC project pulls all other controller components and builds a SFC distribution, so if something changes upstream, we get affected (for better or worse).&lt;/p&gt;

&lt;p&gt;The script was running clean and in a period of 24-48hrs those logs start appearing. Therefore my suspicion is that some commit went in that changed things. Maybe it was something that a developer would not expect to affect datastore but did. I have no other explanation at this point.&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>2328</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=2328]]></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="10360"><![CDATA[Helium-2]]></customfieldvalue>

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

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

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