<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:10:48 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-739] Fix the comparing wrong QNames</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-739</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;After invoking routed RPC via Karaf CLI command from the node that did not registrate this RPC, we get error message:&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;
Error executing command: org.opendaylight.controller.remote.rpc.RemoteDOMRpcException: Exception during invoking RPC
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Stack trace from karaf logs after invoking routed &lt;b&gt;buy-car&lt;/b&gt; rpc:&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;
org.opendaylight.controller.sal-clustering-commons - 4.0.10 | Failed to invoke RPC (urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)buy-car
java.lang.IllegalArgumentException: Unexpected RPC (urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)buy-car input ImmutableContainerNode{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)buy-car, body=[ImmutableLeafNode{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)person, body=/(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)people/person/person[{(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people?revision=2014-08-18)id=localhost/people/person_id_21}]}, ImmutableLeafNode{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)car-id, body=localhost/cars/car_id_21}, ImmutableLeafNode{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)person-id, body=localhost/people/person_id_21}]}
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:443) ~[bundleFile:?]
    at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcImplementationAdapter.deserialize(BindingDOMRpcImplementationAdapter.java:81) ~[bundleFile:?]
    at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMRpcImplementationAdapter.invokeRpc(BindingDOMRpcImplementationAdapter.java:64) ~[bundleFile:?]
    at org.opendaylight.mdsal.dom.broker.DOMRpcRouter$OperationInvocation.invokeRoutedRpc(DOMRpcRouter.java:618) ~[bundleFile:?]
    at org.opendaylight.mdsal.dom.broker.DOMRpcRouter$OperationInvocation.invoke(DOMRpcRouter.java:593) ~[bundleFile:?]
    at org.opendaylight.mdsal.dom.broker.DOMRpcRouter$RpcServiceFacade.invokeRpc(DOMRpcRouter.java:503) ~[bundleFile:?]
    at org.opendaylight.mdsal.dom.spi.ForwardingDOMRpcService.invokeRpc(ForwardingDOMRpcService.java:29) ~[bundleFile:?]
    at org.opendaylight.controller.remote.rpc.OpsInvoker.execute(OpsInvoker.java:89) ~[bundleFile:?]
    at org.opendaylight.controller.remote.rpc.OpsInvoker.handleReceive(OpsInvoker.java:74) ~[bundleFile:?]
    at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) [bundleFile:?] 
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;Error occurs in checkArgument method:&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;
checkArgument(inputQname.equals(container.getIdentifier().getNodeType()), &lt;span class=&quot;code-quote&quot;&gt;&quot;Unexpected RPC %s input %s&quot;&lt;/span&gt;, rpcType, input);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It&apos;s because first comparing QName is:&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;
{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)input
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and second comparing QName is:&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;
{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)buy-car
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The real cause of this error:&lt;/p&gt;

&lt;p&gt;When ExecuteRpc message is sent with LazySerializedContainerNode as &apos;input&apos; parameter, during serialization is invoked its getIdentifier() method that returns NodeIdentfier of rpc, not input.&lt;/p&gt;

&lt;p&gt;So OpsInvoker receives the message with incorrect ContainerNode as &apos;input&apos; parameter:&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;
ImmutableContainerNode{identifier=(urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase?revision=2014-08-18)buy-car, body=[ImmutableLeafNode{identifier=...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and after invoking getIdentifier() in the downstream checkArgument, it returns that NodeIdentifier of buy-car rpc.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;We need to inject rpc input Qname into LazySerializedContainerNode to get NodeIdentifier of rpc input from getIdentifier() method.&lt;/p&gt;</description>
                <environment></environment>
        <key id="35411">MDSAL-739</key>
            <summary>Fix the comparing wrong QNames</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="dominik.vrbovsky">Dominik Vrbovsk&#253;</assignee>
                                    <reporter username="dominik.vrbovsky">Dominik Vrbovsk&#253;</reporter>
                        <labels>
                            <label>regression</label>
                    </labels>
                <created>Thu, 31 Mar 2022 16:31:04 +0000</created>
                <updated>Fri, 1 Apr 2022 21:41:49 +0000</updated>
                            <resolved>Fri, 1 Apr 2022 21:41:49 +0000</resolved>
                                    <version>9.0.0</version>
                    <version>9.0.1</version>
                                    <fixVersion>9.0.2</fixVersion>
                                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="34810">INTTEST-129</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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|i041wv:</customfieldvalue>

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