<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:35 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>[YANGTOOLS-883] YANG parser fails to detect duplicate nodes in cases</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-883</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Overview: When trying to add mvpn route to application peer, I get SchemaValidationFailedException. This route is copied from bgp loc-rib, so when sending this route from testtool directly, it appears correctly in bgp rib.&lt;/p&gt;

&lt;p&gt;Steps to reproduce.&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Start latest karaf with odl-restconf odl-bgpcep-bgp and odl-bgpcep-bgp-config-example&lt;/li&gt;
	&lt;li&gt;configure app peer with provided script ./conf_app_peer.py&lt;/li&gt;
	&lt;li&gt;add route with script ./mvpn_add_route.py&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;basically from error I gather that &amp;lt;intra-as-i-pmsi-a-d&amp;gt; cannot be child of &amp;lt;mvpn-route&amp;gt; which is invalid.&lt;/p&gt;

&lt;p&gt;ERROR from restconf: (also errors from karaf log in error.txt in attachements)&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&amp;lt;Response [500]&amp;gt;
{&lt;span class=&quot;code-quote&quot;&gt;&quot;errors&quot;&lt;/span&gt;:{&lt;span class=&quot;code-quote&quot;&gt;&quot;error&quot;&lt;/span&gt;:[{&lt;span class=&quot;code-quote&quot;&gt;&quot;error-type&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;application&quot;&lt;/span&gt;,&lt;span class=&quot;code-quote&quot;&gt;&quot;error-tag&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;operation-failed&quot;&lt;/span&gt;,&lt;span class=&quot;code-quote&quot;&gt;&quot;error-message&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;canCommit encountered an unexpected failure&quot;&lt;/span&gt;,&lt;span class=&quot;code-quote&quot;&gt;&quot;error-info&quot;&lt;/span&gt;:&lt;span class=&quot;code-quote&quot;&gt;&quot;org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException: Node (urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?revision=2018-04-17)mvpn-choice is not a valid child of (urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?revision=2018-04-17)mvpn-route[{(urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?revision=2018-04-17)route-key=AQwAAAAFAAAAAwoKCgo=, (urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4?revision=2018-04-17)path-id=0}] according to the schema.\n\tat org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractNodeContainerModificationStrategy.verifyStructure(AbstractNodeContainerModificationStrategy.java:57)\n\tat org.opendaylight.yangtools.yang.data.impl.schema.tree.ListEntryModificationStrategy.verifyStructure(ListEntryModificationStrategy.java:32)\n\tat org.opendaylight.yangtools.yang.data.impl.schema.tree.ModifiedNode.seal(ModifiedNode.java:283)\n\tat org.opendaylight.yangtools.yang.data.impl.schema.tree.AbstractReadyIterator.process(AbstractReadyIterator.java:47)\n\tat org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.ready(InMemoryDataTreeModification.java:285)\n\tat org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction.ready(SnapshotBackedWriteTransaction.java:151)\n\tat org.opendaylight.controller.cluster.datastore.LocalTransactionFactoryImpl.onTransactionReady(LocalTransactionFactoryImpl.java:86)\n\tat org.opendaylight.controller.cluster.datastore.LocalTransactionContext.ready(LocalTransactionContext.java:77)\n\tat org.opendaylight.controller.cluster.datastore.LocalTransactionContext.directCommit(LocalTransactionContext.java:88)\n\tat org.opendaylight.controller.cluster.datastore.TransactionProxy.getDirectCommitFuture(TransactionProxy.java:277)\n\tat org.opendaylight.controller.cluster.datastore.TransactionProxy.createSingleCommitCohort(TransactionProxy.java:264)\n\tat org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:229)\n\tat org.opendaylight.controller.cluster.datastore.TransactionProxy.ready(TransactionProxy.java:54)\n\tat org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.commit(AbstractDOMBrokerWriteTransaction.java:149)\n\tat org.opendaylight.controller.cluster.databroker.compat.LegacyDOMDataBrokerAdapter$DOMDataTransactionAdapter.commit(LegacyDOMDataBrokerAdapter.java:307)\n\tat org.opendaylight.controller.md.sal.common.api.data.AsyncWriteTransaction.submit(AsyncWriteTransaction.java:345)\n\tat org.opendaylight.netconf.sal.restconf.impl.BrokerFacade.postDataViaTransaction(BrokerFacade.java:679)\n\tat org.opendaylight.netconf.sal.restconf.impl.BrokerFacade.commitConfigurationDataPost(BrokerFacade.java:455)\n\tat org.opendaylight.netconf.sal.restconf.impl.RestconfImpl.createConfigurationData(RestconfImpl.java:968)\n\tat org.opendaylight.netconf.sal.restconf.impl.RestconfImpl.createConfigurationData(RestconfImpl.java:913)\n\tat org.opendaylight.netconf.sal.restconf.impl.StatisticsRestconfServiceWrapper.createConfigurationData(StatisticsRestconfServiceWrapper.java:157)\n\tat org.opendaylight.netconf.sal.&lt;span class=&quot;code-keyword&quot;&gt;rest&lt;/span&gt;.impl.RestconfCompositeWrapper.createConfigurationData(RestconfCompositeWrapper.java:92)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)\n\tat com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)\n\tat com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)\n\tat com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)\n\tat com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)\n\tat org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:308)\n\tat org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:262)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)\n\tat org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)\n\tat org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)\n\tat org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)\n\tat org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)\n\tat org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)\n\tat org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)\n\tat org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)\n\tat org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)\n\tat org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)\n\tat org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)\n\tat org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)\n\tat org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)\n\tat org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)\n\tat org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)\n\tat org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:51)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)\n\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:205)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)\n\tat org.opendaylight.aaa.filterchain.filters.CustomFilterAdapter.doFilter(CustomFilterAdapter.java:102)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1751)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)\n\tat org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)\n\tat org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:534)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)\n\tat java.lang.&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.run(&lt;span class=&quot;code-object&quot;&gt;Thread&lt;/span&gt;.java:748)\n&quot;&lt;/span&gt;}]}}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="30009">YANGTOOLS-883</key>
            <summary>YANG parser fails to detect duplicate nodes in cases</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="tomas.markovic">Tomas Markovic</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 May 2018 13:55:41 +0000</created>
                <updated>Tue, 8 Oct 2019 11:05:51 +0000</updated>
                            <resolved>Wed, 13 Jun 2018 13:55:31 +0000</resolved>
                                                    <fixVersion>2.0.7</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="63057" author="rovarga" created="Tue, 22 May 2018 18:13:47 +0000"  >&lt;p&gt;Does the same happen with JSON encoding?&lt;/p&gt;</comment>
                            <comment id="63058" author="tomas.markovic" created="Tue, 22 May 2018 18:17:45 +0000"  >&lt;p&gt;I didn&apos;t try that one, only multiple types of xml and paths.&lt;/p&gt;</comment>
                            <comment id="63075" author="cdgasparini" created="Wed, 23 May 2018 08:18:34 +0000"  >&lt;p&gt;Preparing debugTest&lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt; for&#160;&lt;a href=&quot;https://jira.opendaylight.org/browse/MDSAL-342&quot; title=&quot;DataObjectModification not able find child via getModifiedChildContainer&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MDSAL-342&quot;&gt;&lt;del&gt;MDSAL-342&lt;/del&gt;&lt;/a&gt;, I&apos;m hitting same issue.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;p&gt;Run&#160;DebugBugTest-&amp;gt;testUseCase2.&lt;/p&gt;

&lt;p&gt;When using put, this scenario test works, when using merge we hit&#160;SchemaValidationFailedException.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt;&#160;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/72160/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/72160/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="63081" author="rovarga" created="Wed, 23 May 2018 10:34:26 +0000"  >&lt;p&gt;This is a problem with model:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;grouping mvpn {

  [...]
  case shared-tree-join-case {
    uses c-multicast-grouping;
  }
  case source-tree-join-case {
    uses c-multicast-grouping;
  }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Which results in same node being defined in two cases (c-multicast), which is detected in cache loader and suppressed. Granted, the YANG parser should have uncovered this treason.&lt;/p&gt;</comment>
                            <comment id="63083" author="rovarga" created="Wed, 23 May 2018 12:16:53 +0000"  >&lt;p&gt;Previous work in this area: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/68134/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/68134/&lt;/a&gt; . Needs to be revisited/adjusted for minimal breakage.&lt;/p&gt;</comment>
                            <comment id="63409" author="rovarga" created="Tue, 12 Jun 2018 13:20:49 +0000"  >&lt;p&gt;Duplicate of &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-857&quot; title=&quot;YANG parser should honor RFC7950 section 6.2.1 restrictions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-857&quot;&gt;&lt;del&gt;YANGTOOLS-857&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="63423" author="rovarga" created="Wed, 13 Jun 2018 12:29:13 +0000"  >&lt;p&gt;This is actually a subset of &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-857&quot; title=&quot;YANG parser should honor RFC7950 section 6.2.1 restrictions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-857&quot;&gt;&lt;del&gt;YANGTOOLS-857&lt;/del&gt;&lt;/a&gt;, let&apos;s address these separately.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="27016">MDSAL-194</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="29324">YANGTOOLS-857</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="31962">YANGTOOLS-1026</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="29277">YANGTOOLS-853</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="14655" name="conf_app_peer.py" size="779" author="tomas.markovic" created="Tue, 22 May 2018 13:52:26 +0000"/>
                            <attachment id="14653" name="error.txt" size="30992" author="tomas.markovic" created="Tue, 22 May 2018 13:55:11 +0000"/>
                            <attachment id="14661" name="json_add_mvpn_route.py" size="1477" author="tomas.markovic" created="Wed, 23 May 2018 08:41:14 +0000"/>
                            <attachment id="14660" name="mvpn_add_route.py" size="1339" author="tomas.markovic" created="Wed, 23 May 2018 08:03:35 +0000"/>
                    </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|i03etj:</customfieldvalue>

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