<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:27 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-1397] BindingAwareBroker has issues invoking BindingAware RPCs</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1397</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;I am in the process of trying to get IT testing working in the startup archetype.&lt;/p&gt;

&lt;p&gt;In the process of doing that, I am getting IT test failures with an exception:&lt;/p&gt;

&lt;p&gt;Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 477.459 sec &amp;lt;&amp;lt;&amp;lt; FAILURE! - in HelloIT&lt;br/&gt;
testRPC(HelloIT)  Time elapsed: 394.96 sec  &amp;lt;&amp;lt;&amp;lt; ERROR!&lt;br/&gt;
org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException: No implementation of RPC AbsoluteSchemaPath&lt;/p&gt;
{path=[(urn:opendaylight:params:xml:ns:yang:hello?revision=2015-01-05)hello-world]}
&lt;p&gt; available&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRoutingTable.invokeRpc(DOMRpcRoutingTable.java:183)&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter.invokeRpc(DOMRpcRouter.java:124)&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke0(RpcServiceAdapter.java:64)&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.access$000(RpcServiceAdapter.java:42)&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter$RpcInvocationStrategy.invoke(RpcServiceAdapter.java:156)&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke(RpcServiceAdapter.java:95)&lt;br/&gt;
	at com.sun.proxy.$Proxy84.helloWorld(Unknown Source)&lt;br/&gt;
	at HelloIT.testRPC(HelloIT.java:57)&lt;/p&gt;


&lt;p&gt;This happens in &lt;b&gt;spite&lt;/b&gt; of the fact that if I put a debugger breakpoint on HelloIT.java:56 (the line before the exception is thrown) I can successfully access the RPC via Restconf.&lt;/p&gt;

&lt;p&gt;The RPC implementation is registered with the BindingAwareBroker via the ProviderContext, and we are attempting to access if in the IT test via the BindingAwareBroker via a ProviderContext.  But it appears that the BindingAwareBroker is forwarding it to the DomBroker where the RPC is not being found.&lt;/p&gt;

&lt;p&gt;If we try to access it via RestConf however its being access correctly.&lt;/p&gt;

&lt;p&gt;To recreate:&lt;/p&gt;

&lt;p&gt;As part of doing that, I am using this patch:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/16294/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/16294/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;to do IT testing via a parent and base classes, so you will need to build the new directories from there.&lt;/p&gt;

&lt;p&gt;You will find attached a hello.zip file which contains the code I am working from.  Building hello/ will build hello/it which will run the IT tests and fail appropriately.&lt;/p&gt;

&lt;p&gt;The POSTMAN to use RESTCONF is here: &lt;a href=&quot;https://www.getpostman.com/collections/fe835cc9c7b50343f752&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://www.getpostman.com/collections/fe835cc9c7b50343f752&lt;/a&gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25951">CONTROLLER-1397</key>
            <summary>BindingAwareBroker has issues invoking BindingAware RPCs</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="10003">Cannot Reproduce</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="hagbard">Ed Warnicke</reporter>
                        <labels>
                    </labels>
                <created>Fri, 24 Jul 2015 00:42:50 +0000</created>
                <updated>Thu, 19 Oct 2017 21:29:03 +0000</updated>
                            <resolved>Mon, 3 Aug 2015 11:53:40 +0000</resolved>
                                    <version>Beryllium</version>
                                                    <component>mdsal</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="50938" author="hagbard@gmail.com" created="Fri, 24 Jul 2015 00:43:28 +0000"  >&lt;p&gt;Attachment hello.zip has been added with description: hello.zip&lt;/p&gt;</comment>
                            <comment id="50933" author="hagbard@gmail.com" created="Fri, 24 Jul 2015 00:45:03 +0000"  >&lt;p&gt;Further note on recreation:&lt;/p&gt;

&lt;p&gt;cd hello/it&lt;br/&gt;
mvn clean install -Dkaraf.debug&lt;/p&gt;

&lt;p&gt;Will cause the karaf instance for the integration test to run in debug mode on port 5005, which can be handy.&lt;/p&gt;</comment>
                            <comment id="50934" author="hagbard@gmail.com" created="Fri, 24 Jul 2015 00:58:25 +0000"  >&lt;p&gt;What I think I&apos;ve found via investigation using the debugger:&lt;/p&gt;

&lt;p&gt;When I debug HelloIT.testRPC(): I see from:&lt;/p&gt;

&lt;p&gt;HelloService service = getSession().getRpcService(HelloService.class);&lt;/p&gt;

&lt;p&gt;That the service I am getting back has as its delegate something of type DOMRpcRouter (and note: a different instance than the one I see in the debugger coming back to Restconf).  I think this tells me that BindingAwareRPCs are all being routed through the DOM Broker, even when both producer and consumer are BindingAware.&lt;/p&gt;

&lt;p&gt;When I drill into HelloIT:57:&lt;br/&gt;
Future&amp;lt;RpcResult&amp;lt;HelloWorldOutput&amp;gt;&amp;gt; outputFuture = service.helloWorld(builder.build());&lt;/p&gt;

&lt;p&gt;RPCServiceAdapter.invoke():87 &lt;/p&gt;

&lt;p&gt;final RpcInvocationStrategy rpc = rpcNames.get(method);&lt;/p&gt;

&lt;p&gt;gives an rpc of type: RpcServiceAdapter$NonRoutedStrategy&lt;/p&gt;

&lt;p&gt;which after a few jumps down the stack takes us to:&lt;/p&gt;

&lt;p&gt;DOMRpcRoutingTable.invoke()... which has an rpcs member of type EmptyImmutableBiMap... which I believe is our problem... basically... BindingAware delegates to DOM... and for some reason DOM doesn&apos;t have the registration in the DOMRoutingTable that it has.&lt;/p&gt;

&lt;p&gt;Please note though... if I stick a break point in DOMRoutingTable.invoke and invoke restconf... its a different object which &lt;b&gt;does&lt;/b&gt; have the HelloWorld RPC in its rpcs member.&lt;/p&gt;</comment>
                            <comment id="50935" author="tony.tkacik@gmail.com" created="Fri, 24 Jul 2015 09:33:09 +0000"  >&lt;p&gt;Which initial config are you using to replicate your problem?&lt;/p&gt;

&lt;p&gt;There should be one instance of DOMRpcRouter if not, I would suspect configuration problem.&lt;/p&gt;

&lt;p&gt;In Lithium - binding shortcut was removed - but there is no performance hit, even if DOM Broker is used data are not serialized / deserialized to DOM.&lt;/p&gt;</comment>
                            <comment id="50936" author="hagbard@gmail.com" created="Fri, 24 Jul 2015 12:34:32 +0000"  >&lt;p&gt;Logs of a failed run can be found here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pastebin.com/eyYxJCgL&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://pastebin.com/eyYxJCgL&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="50937" author="tony.tkacik@gmail.com" created="Mon, 3 Aug 2015 11:53:40 +0000"  >&lt;p&gt;Turned out test staticly binded to first Broker available. During boot-up with clustering enabled - broker is started and then replaced with newer instance.&lt;/p&gt;

&lt;p&gt;Test code ended using first broker for tests and applications using second test.&lt;/p&gt;

&lt;p&gt;Fix in test to not use pax-exam @Inject capability fixed issue.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="13532" name="hello.zip" size="43671" author="eaw@cisco.com" created="Fri, 24 Jul 2015 00:43:28 +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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4048</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=4048]]></customfieldvalue>

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

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