<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:53:17 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-541] Malformed update-lsp RPC leads to 500 Internal Server Error.</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-541</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;This may be bug of BGPCEP plugin, but I guess RPC input data validation is a job for restconf component.&lt;/p&gt;

&lt;p&gt;Bug was encountered when using ODL configured to use draft-ietf-pce-stateful-pce-02 extension to PCEP in environment with capable PCCs, I do not know how to replicate bug without them.&lt;/p&gt;

&lt;p&gt;As a preparation, add-lsp has to be called, here is example curl number 1:&lt;br/&gt;
curl -X POST -H &quot;Content-Type:application/yang.data+json&quot; -d &apos;{&quot;input&quot;:{&quot;node&quot;:&quot;pcc://39.39.39.39&quot;,&quot;name&quot;:&quot;my_name&quot;,&quot;network-topology-ref&quot;:&quot;/network-topology:network-topology/network-topology:topology&lt;span class=&quot;error&quot;&gt;&amp;#91;network-topology:topology-id=\&amp;quot;pcep-topology\&amp;quot;&amp;#93;&lt;/span&gt;&quot;,&quot;arguments&quot;:{&quot;endpoints-obj&quot;:{&quot;ipv4&quot;:&lt;/p&gt;
{&quot;source-ipv4-address&quot;:&quot;39.39.39.39&quot;,&quot;destination-ipv4-address&quot;:&quot;43.43.43.43&quot;}
&lt;p&gt;}}}}&apos; 127.0.0.1:8080/restconf/operations/network-topology-pcep:add-lsp&lt;/p&gt;

&lt;p&gt;Critical step happens when calling update-lsp without &quot;operational&quot; filed, which is required because of bgpcep/pcep/ietf-stateful02/src/main/yang/odl-pcep-ietf-stateful02.yang lines 246-250. Example (verbose) curl number 2:&lt;br/&gt;
curl -v -X POST -H &quot;Content-Type:application/yang.data+json&quot; -d &apos;{&quot;input&quot;:{&quot;node&quot;:&quot;pcc://39.39.39.39&quot;,&quot;name&quot;:&quot;my_name&quot;,&quot;network-topology-ref&quot;:&quot;/network-topology:network-topology/network-topology:topology&lt;span class=&quot;error&quot;&gt;&amp;#91;network-topology:topology-id=\&amp;quot;pcep-topology\&amp;quot;&amp;#93;&lt;/span&gt;&quot;,&quot;arguments&quot;:{&quot;ero&quot;:[{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;195.20.160.40/32&quot;}
&lt;p&gt;}},{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;201.20.160.43/32&quot;}
&lt;p&gt;}},{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;43.43.43.43/32&quot;}
&lt;p&gt;}}]}}}&apos; 127.0.0.1:8080/restconf/operations/network-topology-pcep:update-lsp&lt;/p&gt;

&lt;p&gt;This call produces no lines in opendaylight.log (default logback.xml except org.opendaylight.bgpcep set to TRACE), but curl prints message with long stack trace (included at the end of this description).&lt;/p&gt;

&lt;p&gt;For comparison, here is correct form of intended update-lsp, as example curl number 3:&lt;br/&gt;
curl -X POST -H &quot;Content-Type:application/yang.data+json&quot; -d &apos;{&quot;input&quot;:{&quot;node&quot;:&quot;pcc://39.39.39.39&quot;,&quot;name&quot;:&quot;my_name&quot;,&quot;network-topology-ref&quot;:&quot;/network-topology:network-topology/network-topology:topology&lt;span class=&quot;error&quot;&gt;&amp;#91;network-topology:topology-id=\&amp;quot;pcep-topology\&amp;quot;&amp;#93;&lt;/span&gt;&quot;,&quot;arguments&quot;:{&quot;operational&quot;:true,&quot;ero&quot;:[{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;195.20.160.40/32&quot;}
&lt;p&gt;}},{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;201.20.160.43/32&quot;}
&lt;p&gt;}},{&quot;subobject&quot;:{&quot;loose&quot;:false,&quot;ip-prefix&quot;:&lt;/p&gt;
{&quot;ip-prefix&quot;:&quot;43.43.43.43/32&quot;}
&lt;p&gt;}}]}}}&apos; 127.0.0.1:8080/restconf/operations/network-topology-pcep:update-lsp&lt;/p&gt;

&lt;p&gt;And to get back to initial state (before curl number 1) it seem to be sufficient to just call remove-lsp, using example curl number 0:&lt;br/&gt;
curl -X POST -H &quot;Content-Type:application/yang.data+json&quot; -d &apos;{&quot;input&quot;:{&quot;node&quot;:&quot;pcc://39.39.39.39&quot;,&quot;name&quot;:&quot;my_name&quot;,&quot;network-topology-ref&quot;:&quot;/network-topology:network-topology/network-topology:topology&lt;span class=&quot;error&quot;&gt;&amp;#91;network-topology:topology-id=\&amp;quot;pcep-topology\&amp;quot;&amp;#93;&lt;/span&gt;&quot;}}&apos; 127.0.0.1:8080/restconf/operations/network-topology-pcep:remove-lsp&lt;/p&gt;

&lt;p&gt;What is wrong? Error code 500 and exception. For differently malformed RPCs I have seen error code 400 with helpful message, so I expected the same here.&lt;/p&gt;

&lt;p&gt;Finally, here is the response of curl number 2:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;About to connect() to 127.0.0.1 port 8080 (#0)&lt;/li&gt;
	&lt;li&gt;Trying 127.0.0.1...&lt;/li&gt;
	&lt;li&gt;connected&lt;/li&gt;
	&lt;li&gt;Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)&lt;br/&gt;
&amp;gt; POST /restconf/operations/network-topology-pcep:update-lsp HTTP/1.1&lt;br/&gt;
&amp;gt; User-Agent: curl/7.27.0&lt;br/&gt;
&amp;gt; Host: 127.0.0.1:8080&lt;br/&gt;
&amp;gt; Accept: &lt;b&gt;/&lt;/b&gt;&lt;br/&gt;
&amp;gt; Content-Type:application/yang.data+json&lt;br/&gt;
&amp;gt; Content-Length: 434&lt;br/&gt;
&amp;gt;&lt;/li&gt;
	&lt;li&gt;upload completely sent off: 434 out of 434 bytes&lt;br/&gt;
&amp;lt; HTTP/1.1 500 Internal Server Error&lt;br/&gt;
&amp;lt; Server: Apache-Coyote/1.1&lt;br/&gt;
&amp;lt; Content-Type: &lt;b&gt;/&lt;/b&gt;&lt;br/&gt;
&amp;lt; Transfer-Encoding: chunked&lt;br/&gt;
&amp;lt; Date: Thu, 05 Jun 2014 15:52:10 GMT&lt;br/&gt;
&amp;lt; Connection: close&lt;br/&gt;
&amp;lt;&lt;br/&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;br/&gt;
&amp;lt;errors xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-restconf&quot;&amp;gt;&lt;br/&gt;
    &amp;lt;error&amp;gt;&lt;br/&gt;
        &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
        &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
        &amp;lt;error-message&amp;gt;The operation encountered an unexpected error while executing.&amp;lt;/error-message&amp;gt;&lt;br/&gt;
        &amp;lt;error-info&amp;gt;org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException: errors: [error-type: application, error-tag: operation-failed, error-message: The operation encountered an unexpected error while executing.error-info: java.lang.NullPointerException&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.Stateful02TopologySessionListener.updateLsp(Stateful02TopologySessionListener.java:224)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.ServerSessionManager.updateLsp(ServerSessionManager.java:150)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.TopologyRPCs.updateLsp(TopologyRPCs.java:62)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService$$Broker$Router.updateLsp(NetworkTopologyPcepService$$Broker$Router.java)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService$$Broker$DirectProxy.updateLsp(NetworkTopologyPcepService$$Broker$DirectProxy.java)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Unknown Source)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.uncheckedInvoke(RpcInvocationStrategy.java:131)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.invokeOn(RpcInvocationStrategy.java:157)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector$DomToBindingRpcForwarder.invokeRpc(BindingIndependentConnector.java:711)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker$RoutedRpcSelector.invokeRpc(SchemaAwareRpcBroker.java:346)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker.invokeRpc(SchemaAwareRpcBroker.java:168)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.BrokerImpl.invokeRpcAsync(BrokerImpl.java:75)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.ConsumerContextImpl.rpc(ConsumerContextImpl.java:48)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.BrokerFacade.invokeRpc(BrokerFacade.java:100)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.BrokerRpcExecutor.invokeRpcUnchecked(BrokerRpcExecutor.java:28)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.invokeRpc(AbstractRpcExecutor.java:37)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.callRpc(RestconfImpl.java:533)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.invokeRpc(RestconfImpl.java:399)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Unknown Source)&lt;br/&gt;
        at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)&lt;br/&gt;
        at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)&lt;br/&gt;
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)&lt;br/&gt;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&lt;br/&gt;
        at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:440)&lt;br/&gt;
        at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:179)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&lt;br/&gt;
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&lt;br/&gt;
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&lt;br/&gt;
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)&lt;br/&gt;
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&lt;br/&gt;
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&lt;br/&gt;
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&lt;br/&gt;
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:309)&lt;br/&gt;
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&lt;br/&gt;
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&lt;br/&gt;
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&lt;br/&gt;
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&lt;br/&gt;
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&lt;br/&gt;
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)&lt;br/&gt;
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)&lt;br/&gt;
        at java.lang.Thread.run(Unknown Source)&lt;br/&gt;
, ]]&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.getRpcResult(AbstractRpcExecutor.java:82)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.invokeRpc(AbstractRpcExecutor.java:37)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.callRpc(RestconfImpl.java:533)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.invokeRpc(RestconfImpl.java:399)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Unknown Source)&lt;br/&gt;
        at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)&lt;br/&gt;
        at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)&lt;br/&gt;
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)&lt;br/&gt;
        at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)&lt;br/&gt;
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)&lt;br/&gt;
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)&lt;br/&gt;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&lt;br/&gt;
        at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:440)&lt;br/&gt;
        at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:179)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&lt;br/&gt;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&lt;br/&gt;
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&lt;br/&gt;
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&lt;br/&gt;
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)&lt;br/&gt;
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&lt;br/&gt;
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&lt;br/&gt;
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&lt;br/&gt;
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:309)&lt;br/&gt;
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&lt;br/&gt;
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&lt;br/&gt;
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&lt;br/&gt;
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&lt;br/&gt;
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&lt;br/&gt;
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)&lt;br/&gt;
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)&lt;br/&gt;
        at java.lang.Thread.run(Unknown Source)&lt;br/&gt;
Caused by: java.lang.NullPointerException&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.Stateful02TopologySessionListener.updateLsp(Stateful02TopologySessionListener.java:224)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.ServerSessionManager.updateLsp(ServerSessionManager.java:150)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.TopologyRPCs.updateLsp(TopologyRPCs.java:62)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService$$Broker$Router.updateLsp(NetworkTopologyPcepService$$Broker$Router.java)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.NetworkTopologyPcepService$$Broker$DirectProxy.updateLsp(NetworkTopologyPcepService$$Broker$DirectProxy.java)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Unknown Source)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.uncheckedInvoke(RpcInvocationStrategy.java:131)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.invokeOn(RpcInvocationStrategy.java:157)&lt;br/&gt;
        at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector$DomToBindingRpcForwarder.invokeRpc(BindingIndependentConnector.java:711)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker$RoutedRpcSelector.invokeRpc(SchemaAwareRpcBroker.java:346)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker.invokeRpc(SchemaAwareRpcBroker.java:168)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.BrokerImpl.invokeRpcAsync(BrokerImpl.java:75)&lt;br/&gt;
        at org.opendaylight.controller.sal.dom.broker.ConsumerContextImpl.rpc(ConsumerContextImpl.java:48)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.BrokerFacade.invokeRpc(BrokerFacade.java:100)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.BrokerRpcExecutor.invokeRpcUnchecked(BrokerRpcExecutor.java:28)&lt;br/&gt;
        ... 43 more&lt;br/&gt;
&amp;lt;/error-info&amp;gt;&lt;br/&gt;
    &amp;lt;/error&amp;gt;&lt;br/&gt;
&amp;lt;/errors&amp;gt;&lt;/li&gt;
	&lt;li&gt;Closing connection #0&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25095">CONTROLLER-541</key>
            <summary>Malformed update-lsp RPC leads to 500 Internal Server Error.</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <status id="10004" iconUrl="https://jira.opendaylight.org/images/icons/status_generic.gif" description="">Verified</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="jgloncak">Jozef Gloncak</assignee>
                                    <reporter username="vrpolak">Vratko Polak</reporter>
                        <labels>
                    </labels>
                <created>Thu, 5 Jun 2014 16:08:24 +0000</created>
                <updated>Tue, 14 Nov 2017 15:18:01 +0000</updated>
                            <resolved>Wed, 23 Jul 2014 14:02:53 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>restconf</component>
                        <due>Fri, 1 Aug 2014 00:00:00 +0000</due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="48479" author="tony.tkacik@gmail.com" created="Fri, 6 Jun 2014 07:41:49 +0000"  >&lt;p&gt;Moved to bgpcep as exception happened in Stateful02TopologySessionListener.updateLsp()&lt;/p&gt;</comment>
                            <comment id="48480" author="dkutenicsova" created="Tue, 10 Jun 2014 08:52:16 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/7778/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/7778/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="48481" author="vrpolak" created="Wed, 11 Jun 2014 14:26:19 +0000"  >&lt;p&gt;This is fragment of verbose response to critical curl as it looks like after merge of &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/7778&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/7778&lt;/a&gt;&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;About to connect() to 127.0.0.1 port 8080 (#0)&lt;/li&gt;
	&lt;li&gt;Trying 127.0.0.1...&lt;/li&gt;
	&lt;li&gt;connected&lt;/li&gt;
	&lt;li&gt;Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)&lt;br/&gt;
&amp;gt; POST /restconf/operations/network-topology-pcep:update-lsp HTTP/1.1&lt;br/&gt;
&amp;gt; User-Agent: curl/7.27.0&lt;br/&gt;
&amp;gt; Host: 127.0.0.1:8080&lt;br/&gt;
&amp;gt; Accept: &lt;b&gt;/&lt;/b&gt;&lt;br/&gt;
&amp;gt; Content-Type:application/yang.data+json&lt;br/&gt;
&amp;gt; Content-Length: 434&lt;br/&gt;
&amp;gt;&lt;/li&gt;
	&lt;li&gt;upload completely sent off: 434 out of 434 bytes&lt;br/&gt;
&amp;lt; HTTP/1.1 500 Internal Server Error&lt;br/&gt;
&amp;lt; Server: Apache-Coyote/1.1&lt;br/&gt;
&amp;lt; Content-Type: &lt;b&gt;/&lt;/b&gt;&lt;br/&gt;
&amp;lt; Transfer-Encoding: chunked&lt;br/&gt;
&amp;lt; Date: Wed, 11 Jun 2014 13:40:52 GMT&lt;br/&gt;
&amp;lt; Connection: close&lt;br/&gt;
&amp;lt;&lt;br/&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;br/&gt;
&amp;lt;errors xmlns=&quot;urn:ietf:params:xml:ns:yang:ietf-restconf&quot;&amp;gt;&lt;br/&gt;
    &amp;lt;error&amp;gt;&lt;br/&gt;
        &amp;lt;error-type&amp;gt;application&amp;lt;/error-type&amp;gt;&lt;br/&gt;
        &amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;&lt;br/&gt;
        &amp;lt;error-message&amp;gt;The operation encountered an unexpected error while executing.&amp;lt;/error-message&amp;gt;&lt;br/&gt;
        &amp;lt;error-info&amp;gt;org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException: errors: [error-type: application, error-tag: operation-failed, error-message: The operation encountered an unexpected error while executing.error-info: java.lang.IllegalStateException: Input is missing operational tag.&lt;br/&gt;
        at com.google.common.base.Preconditions.checkState(Preconditions.java:149) &lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.Stateful02TopologySessionListener.updateLsp(Stateful02TopologySessionListener.java:233)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.ServerSessionManager.updateLsp(ServerSessionManager.java:149)&lt;br/&gt;
        at org.opendaylight.bgpcep.pcep.topology.provider.TopologyRPCs.updateLsp(TopologyRPCs.java:62)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;From the looks of it, BGPCEP plugin now uses Preconditions.checkArgument to throw java.lang.IllegalStateException, which according to &lt;a href=&quot;https://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/base/Preconditions.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/base/Preconditions.html&lt;/a&gt;&lt;br/&gt;
is used to signal that the calling method has made an error.&lt;/p&gt;

&lt;p&gt;I guess RESTCONF should expect this kind of exceptions and turn them to &quot;error code 400 with message&quot;.&lt;br/&gt;
Or BGPCEP developers should be instructed to use another way to signal this kind of errors to RESTCONF.&lt;/p&gt;

&lt;p&gt;In any way, I consider this bug to be &quot;not fixed enough&quot; with controller/restconf to be the next assignee.&lt;/p&gt;</comment>
                            <comment id="48482" author="jgloncak" created="Mon, 23 Jun 2014 12:21:12 +0000"  >&lt;p&gt;There is several solutions:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;in Stateful02TopologySessionListener.updateLsp change row 233 from value&lt;br/&gt;
Preconditions.checkState(args != null, &quot;Input is missing operational tag.&quot;);&lt;br/&gt;
to value&lt;br/&gt;
Preconditions.checkArgument(args != null, &quot;Input is missing operational tag.&quot;);&lt;br/&gt;
then IllegalArgumentException will be transformed in AbstractRpcExecutor.getRpcResult to exception with error tag invalid-value which is mapped to 400.&lt;/li&gt;
	&lt;li&gt;transform all IllegalStateException to exception with tag invalid-value&lt;/li&gt;
	&lt;li&gt;add to Preconditions.* which were added in previous patch some prefix (to text attribute) which specify how it should be transformed. (e.g. &quot;Input is missing operational tag.&quot; -&amp;gt; &quot;invalid-value|Input is missing operational tag.&quot;.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="48483" author="dkutenicsova" created="Tue, 24 Jun 2014 09:52:17 +0000"  >&lt;p&gt;Apply first proposed solution.&lt;/p&gt;</comment>
                            <comment id="48484" author="milos.fabian@pantheon.tech" created="Tue, 24 Jun 2014 11:42:34 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/8294/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/8294/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="48485" author="vrpolak" created="Tue, 22 Jul 2014 14:56:44 +0000"  >&lt;p&gt;&amp;gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/8294/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/8294/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It seems the bug was fixed on BGPCEP level, but not on RESTCONF level. Returned status code is still 500 (instead of expected 400), and the reason is hidden in DEBUG level:&lt;/p&gt;

&lt;p&gt;2014-07-22 07:38:50.886 PDT &lt;span class=&quot;error&quot;&gt;&amp;#91;http-bio-8080-exec-8&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.r.i.RestconfDocumentedExceptionMapper - In toResponse: errors: [error-type: application, error-tag: operation-failed, error-message: The operation encountered an unexpected error while executing.error-info: org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException: errors: &lt;span class=&quot;error&quot;&gt;&amp;#91;error-type: protocol, error-tag: invalid-value, error-message: Input is missing operational tag.&amp;#93;&lt;/span&gt;]&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.get&lt;br/&gt;
RpcResult(AbstractRpcExecutor.java:65)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.inv&lt;br/&gt;
okeRpc(AbstractRpcExecutor.java:35)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.callRpc(Restco&lt;br/&gt;
nfImpl.java:549)&lt;br/&gt;
        at org.opendaylight.controller.sal.restconf.impl.RestconfImpl.invokeRpc(Rest&lt;br/&gt;
confImpl.java:405)&lt;/p&gt;


&lt;p&gt;Seems like RestconfDocumentedException was not recognized by RESTCONF.&lt;/p&gt;</comment>
                            <comment id="48486" author="jgloncak" created="Wed, 23 Jul 2014 12:01:00 +0000"  >&lt;p&gt;(In reply to Vratko Pol&#225;k from comment #7)&lt;br/&gt;
&amp;gt; &amp;gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/8294/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/8294/&lt;/a&gt;&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; It seems the bug was fixed on BGPCEP level, but not on RESTCONF level.&lt;br/&gt;
&amp;gt; Returned status code is still 500 (instead of expected 400), and the reason&lt;br/&gt;
&amp;gt; is hidden in DEBUG level:&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; 2014-07-22 07:38:50.886 PDT &lt;span class=&quot;error&quot;&gt;&amp;#91;http-bio-8080-exec-8&amp;#93;&lt;/span&gt; DEBUG&lt;br/&gt;
&amp;gt; o.o.c.s.r.i.RestconfDocumentedExceptionMapper - In toResponse: errors:&lt;br/&gt;
&amp;gt; [error-type: application, error-tag: operation-failed, error-message: The&lt;br/&gt;
&amp;gt; operation encountered an unexpected error while executing.error-info:&lt;br/&gt;
&amp;gt; org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException:&lt;br/&gt;
&amp;gt; errors: [error-type: protocol, error-tag: invalid-value, error-message:&lt;br/&gt;
&amp;gt; Input is missing operational tag.]]&lt;br/&gt;
&amp;gt;         at&lt;br/&gt;
&amp;gt; org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.get&lt;br/&gt;
&amp;gt; RpcResult(AbstractRpcExecutor.java:65)&lt;br/&gt;
&amp;gt;         at&lt;br/&gt;
&amp;gt; org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.inv&lt;br/&gt;
&amp;gt; okeRpc(AbstractRpcExecutor.java:35)&lt;br/&gt;
&amp;gt;         at&lt;br/&gt;
&amp;gt; org.opendaylight.controller.sal.restconf.impl.RestconfImpl.callRpc(Restco&lt;br/&gt;
&amp;gt; nfImpl.java:549)&lt;br/&gt;
&amp;gt;         at&lt;br/&gt;
&amp;gt; org.opendaylight.controller.sal.restconf.impl.RestconfImpl.invokeRpc(Rest&lt;br/&gt;
&amp;gt; confImpl.java:405)&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Seems like RestconfDocumentedException was not recognized by RESTCONF.&lt;/p&gt;

&lt;p&gt;RestconfDocumentedException with error tag INVALID_VALUE (400) was caught in AbstractRpcExecutor class and was wrapped to RestconfDocumentedException with error tag OPERATION_FAILED (500).&lt;br/&gt;
Please retest with new sal-rest-connector bundle.&lt;br/&gt;
patch &lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/9257/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/9257/&lt;/a&gt;&lt;br/&gt;
proposed&lt;/p&gt;</comment>
                            <comment id="48487" author="vrpolak" created="Wed, 23 Jul 2014 14:02:53 +0000"  >&lt;p&gt;Verified fixed in &lt;a href=&quot;https://jenkins.opendaylight.org/integration/view/Integration%20jobs/job/integration-master-project-centralized-integration/1675/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://jenkins.opendaylight.org/integration/view/Integration%20jobs/job/integration-master-project-centralized-integration/1675/&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>1144</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=1144]]></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|i02l1b:</customfieldvalue>

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