<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:52: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>[CONTROLLER-111] NullPointerException thrown by md-sal for routed RPCs</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-111</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;Stack trace:&lt;br/&gt;
java.lang.NullPointerException&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator$3$1$1.process(RuntimeCodeGenerator.java:234)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.util.JavassistUtils.implementMethodsFrom(JavassistUtils.java:111)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator$3$1.process(RuntimeCodeGenerator.java:307)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.util.JavassistUtils.createClass(JavassistUtils.java:129)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator$3.call(RuntimeCodeGenerator.java:332)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator$3.call(RuntimeCodeGenerator.java:191)&lt;br/&gt;
	at org.opendaylight.yangtools.concepts.util.ClassLoaderUtils.withClassLoaderAndLock(ClassLoaderUtils.java:42)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator.getRouterFor(RuntimeCodeGenerator.java:344)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.impl.RpcProviderRegistryImpl.getRpcRouter(RpcProviderRegistryImpl.java:123)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.impl.RpcProviderRegistryImpl.addRoutedRpcImplementation(RpcProviderRegistryImpl.java:62)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.impl.OsgiProviderContext.addRoutedRpcImplementation(OsgiProviderContext.java:43)&lt;br/&gt;
	at org.opendaylight.protocol.integration.pcep.PcepRpcServicesRoutingTest$7.onSessionInitiated(PcepRpcServicesRoutingTest.java:206)&lt;br/&gt;
	at org.opendaylight.controller.sal.binding.impl.BindingAwareBrokerImpl.registerProvider(BindingAwareBrokerImpl.java:96)&lt;br/&gt;
	at org.opendaylight.protocol.integration.pcep.PcepRpcServicesRoutingTest.testRoutedRpcTopologyTunnelPcepProgrammingService(PcepRpcServicesRoutingTest.java:214)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;br/&gt;
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)&lt;br/&gt;
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)&lt;br/&gt;
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)&lt;br/&gt;
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)&lt;br/&gt;
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)&lt;br/&gt;
	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:67)&lt;br/&gt;
	at org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:37)&lt;br/&gt;
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)&lt;br/&gt;
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)&lt;br/&gt;
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)&lt;br/&gt;
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)&lt;br/&gt;
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)&lt;br/&gt;
	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)&lt;br/&gt;
	at org.junit.runner.JUnitCore.run(JUnitCore.java:138)&lt;br/&gt;
	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:123)&lt;br/&gt;
	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:96)&lt;br/&gt;
	at org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:72)&lt;br/&gt;
	at org.ops4j.pax.exam.nat.internal.NativeTestContainer.call(NativeTestContainer.java:108)&lt;br/&gt;
	at org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactor.invoke(EagerSingleStagedReactor.java:109)&lt;br/&gt;
	at org.ops4j.pax.exam.junit.impl.ProbeRunner$2.evaluate(ProbeRunner.java:278)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)&lt;br/&gt;
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)&lt;br/&gt;
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)&lt;br/&gt;
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)&lt;br/&gt;
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)&lt;br/&gt;
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)&lt;br/&gt;
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)&lt;br/&gt;
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)&lt;br/&gt;
	at org.ops4j.pax.exam.junit.impl.ProbeRunner.run(ProbeRunner.java:112)&lt;br/&gt;
	at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:93)&lt;br/&gt;
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)&lt;br/&gt;
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)&lt;br/&gt;
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)&lt;br/&gt;
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;br/&gt;
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)&lt;/p&gt;


&lt;p&gt;This exception only occurs if the definition of yang structures used for routing is located in other yang module than the rpcs. &lt;/p&gt;

&lt;p&gt;Routing structures:&lt;/p&gt;

&lt;p&gt;    grouping topology-identifier {&lt;br/&gt;
       leaf topology-identifier &lt;/p&gt;
{
            ext:context-reference &quot;topology-context&quot;;
            type topology-ref;
        }
&lt;p&gt;    }&lt;/p&gt;

&lt;p&gt;    typedef topology-ref &lt;/p&gt;
{
        type instance-identifier;
    }

&lt;p&gt;    identity topology-context &lt;/p&gt;
{
        description &quot;Identity used to mark topology context. Used for routed rpcs&quot;;
    }

&lt;p&gt;Rpc with routing structures:&lt;/p&gt;

&lt;p&gt;	rpc pcep-create-p2p-tunnel {&lt;br/&gt;
		input &lt;/p&gt;
{
			uses tp:topology-identifier;

			//...
		}
&lt;p&gt;		output &lt;/p&gt;
{
			//...
		}
&lt;p&gt;	}&lt;/p&gt;


&lt;p&gt;A draft in bgpcep project contains the whole code needed for reproduction (&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/4136/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/4136/&lt;/a&gt; patch set 2).&lt;/p&gt;

&lt;p&gt;Reproduce by:&lt;br/&gt;
Rebuild the bgpcep project with mvn clean install.&lt;br/&gt;
Run test PcepRpcServicesRoutingTest in integration-tests module.&lt;br/&gt;
Test case testRoutedRpcTopologyTunnelPcepProgrammingService should fail.&lt;/p&gt;

&lt;p&gt;Note1: If the routing structures are located in the same module as rpcs, the exception is not thrown and everything works as expected (As demonstrated by the two other test cases located in PcepRpcServicesRoutingTest )&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: Linux&lt;br/&gt;
Platform: PC&lt;/p&gt;</environment>
        <key id="24665">CONTROLLER-111</key>
            <summary>NullPointerException thrown by md-sal for routed 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="10000">Done</resolution>
                                        <assignee username="tony.tkacik@gmail.com">Tony Tkacik</assignee>
                                    <reporter username="mmarsale@cisco.com">Maros Marsalek</reporter>
                        <labels>
                    </labels>
                <created>Fri, 10 Jan 2014 15:51:53 +0000</created>
                <updated>Tue, 25 Jul 2023 08:22:58 +0000</updated>
                            <resolved>Thu, 24 Jul 2014 08:50:52 +0000</resolved>
                                                                    <component>mdsal</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="47509" author="mmarsale@cisco.com" created="Mon, 13 Jan 2014 11:35:16 +0000"  >&lt;p&gt;After debugging, I was able to find the problem.&lt;/p&gt;

&lt;p&gt;This error occurs only if the definition for yang routing structures is located in other bundle than the definition for yang rpcs. There is a problem with md-sal, which expects the org.opendaylight.yangtools.yang.binding.annotations.RoutingContext annotation to be on the classpath of &quot;rpcs bundle&quot;. &lt;/p&gt;

&lt;p&gt;For a workaround, add an Import-package dependency to the &quot;rpcs bundle&quot; bundle plugin:&lt;/p&gt;

&lt;p&gt;&amp;lt;Import-Package&amp;gt;&lt;br/&gt;
   org.opendaylight.yangtools.yang.binding,&lt;br/&gt;
   org.opendaylight.yangtools.yang.binding.annotations,&lt;br/&gt;
   ...&lt;br/&gt;
&amp;lt;/Import-Package&amp;gt;&lt;/p&gt;</comment>
                            <comment id="47510" author="dbandyop@cisco.com" created="Thu, 24 Apr 2014 00:38:52 +0000"  >&lt;p&gt;Is this issue fixed or is someone working on it?&lt;/p&gt;</comment>
                            <comment id="47511" author="mmarsale@cisco.com" created="Thu, 24 Apr 2014 06:46:25 +0000"  >&lt;p&gt;Last time I checked with Tony Tkacik, it was not fixed, nor was anyone working on it.&lt;/p&gt;</comment>
                            <comment id="47512" author="tony.tkacik@gmail.com" created="Tue, 22 Jul 2014 08:42:17 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/9221/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/9221/&lt;/a&gt;&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>279</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=279]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10370"><![CDATA[Helium]]></customfieldvalue>

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

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