<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:10:13 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-600] RuntimeTypeGenerator does not handle TypeDefinition equality contract</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-600</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;Doing something (weird) like this:&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; &#160;container foo {
 &#160;&#160;&#160;leaf bar {
 &#160;&#160;&#160;&#160;&#160;type enumeration {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;enum foo {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;value 0;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;description &quot;does not even matter&quot;;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;enum bar {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;value 1;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;}
 &#160;&#160;&#160;leaf baz {
 &#160;&#160;&#160;&#160;&#160;type enumeration {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;enum foo {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;value 0;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;enum bar {
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;value 1;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;reference &quot;is useless as well&quot;;
 &#160;&#160;&#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;&#160;&#160;}
 &#160;&#160;&#160;}
 &#160;}

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;wrecks the runtime rather completely with:&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;com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException: value already present: BaseEnumerationType{name=(urn:xxx)enumeration, status=CURRENT, values=[EnumPairImpl{name=foo, value=0}, EnumPairImpl{name=bar, value=1}]}
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
	at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4958)
	at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4964)
	at org.opendaylight.mdsal.binding.dom.adapter.test.AbstractSchemaAwareTest.getRuntimeContext(AbstractSchemaAwareTest.java:41)
	at org.opendaylight.mdsal.binding.dom.adapter.test.AbstractSchemaAwareTest.setup(AbstractSchemaAwareTest.java:33)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.lang.IllegalArgumentException: value already present: BaseEnumerationType{name=(urn:xxx)enumeration, status=CURRENT, values=[EnumPairImpl{name=foo, value=0}, EnumPairImpl{name=bar, value=1}]}
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:289)
	at com.google.common.collect.HashBiMap.put(HashBiMap.java:270)
	at org.opendaylight.mdsal.binding.generator.impl.RuntimeTypeGenerator.toTypeMapping(RuntimeTypeGenerator.java:58)
	at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingRuntimeGenerator.generateTypeMapping(DefaultBindingRuntimeGenerator.java:43)
	at org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers.createRuntimeContext(BindingRuntimeHelpers.java:89)
	at org.opendaylight.mdsal.binding.dom.adapter.test.AbstractSchemaAwareTest$1.load(AbstractSchemaAwareTest.java:27)
	at org.opendaylight.mdsal.binding.dom.adapter.test.AbstractSchemaAwareTest$1.load(AbstractSchemaAwareTest.java:1)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
	... 33 more&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The problem is that the equality contract for TypeDefinition has changed such that it follows semantics. Previously we were guarded by SchemaPath being part of equals() but now it&apos;s just the QName (as of YT-6)&lt;/p&gt;

&lt;p&gt;Hence unrelated type definitions which are semantically equivalent end up throwing off the BiMap contract.&lt;/p&gt;

&lt;p&gt;Long-term we want to ditch equality completely, opting for identity, but we are at half way and need to handle this.&lt;/p&gt;

&lt;p&gt;The primary problem is assumptions in BiMap, which used to be fair, and will be fair again (at which point WithStatus/SchemaNode will be going away), so we need a story right now.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="33429">MDSAL-600</key>
            <summary>RuntimeTypeGenerator does not handle TypeDefinition equality contract</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.opendaylight.org/images/icons/priorities/blocker.svg">Highest</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>
                            <label>regression</label>
                    </labels>
                <created>Sun, 18 Oct 2020 00:20:53 +0000</created>
                <updated>Mon, 19 Oct 2020 08:44:46 +0000</updated>
                            <resolved>Mon, 19 Oct 2020 08:44:46 +0000</resolved>
                                                    <fixVersion>7.0.1</fixVersion>
                                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="68717" author="manuedelf" created="Mon, 19 Oct 2020 06:43:29 +0000"  >&lt;p&gt;Hello,&lt;br/&gt;
As we started to bump to Silicon (&lt;a href=&quot;https://git.opendaylight.org/gerrit/c/transportpce/+/93026/4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/transportpce/+/93026/4&lt;/a&gt;) , we have discovered the same problem in TransportPce project with models from OpenROADM community.&lt;br/&gt;
Regards,&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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03vev:</customfieldvalue>

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