<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:15:02 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>[NETCONF-439] NETCONF request hangs when rpc-rply has invalid xml</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-439</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;I&#8217;m sending an RPC to a netconf device, the rpc-reply has a typo in the xml (the open element is apppack-download-statu but the close one is apppack-download-statu), hence ODL is throwing a fatal error but the exception is probably not propagated properly, as the RESTCONF request hangs indefinitely.&lt;br/&gt;
See logs bellow:&lt;/p&gt;


&lt;p&gt;2017-06-08 12:59:14,715 | TRACE | upCloseable-3-13 | NetconfDeviceCommunicator        | 289 - org.opendaylight.netconf.sal-netconf-connector - 1.4.3.Boron-SR3 | Finished sending request &amp;lt;rpc message-id=&quot;m-1&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;request-appid-application-package-download/&amp;gt;&lt;br/&gt;
&amp;lt;/rpc&amp;gt;&lt;/p&gt;

&lt;p&gt;2017-06-08 12:59:14,730 | TRACE | NioProcessor-16  | AsyncSshHandlerReader            | 124 - org.opendaylight.netconf.netty-util - 1.1.3.Boron-SR3 | Reading message on channel: ChannelSubsystem&lt;span class=&quot;error&quot;&gt;&amp;#91;id=0, recipient=0&amp;#93;&lt;/span&gt;, message: &amp;lt;nc:rpc-reply xmlns:nc=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot; xmlns:junos=&quot;http://xml.juniper.net/junos/15.1X49/junos&quot; message-id=&quot;m-1&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;/p&gt;

&lt;p&gt;2017-06-08 12:59:14,896 | TRACE | NioProcessor-16  | AsyncSshHandlerReader            | 124 - org.opendaylight.netconf.netty-util - 1.1.3.Boron-SR3 | Reading message on channel: ChannelSubsystem&lt;span class=&quot;error&quot;&gt;&amp;#91;id=0, recipient=0&amp;#93;&lt;/span&gt;, message: &amp;lt;apppack-download-statu xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;&lt;br/&gt;
&amp;lt;apppack-download-status-detail&amp;gt;Please use command&lt;br/&gt;
	&quot;request services application-identification download status&quot; to check download status&lt;br/&gt;
&amp;lt;/apppack-download-status-detail&amp;gt;&lt;br/&gt;
&amp;lt;/apppack-download-status&amp;gt;&lt;br/&gt;
&amp;lt;/nc:rpc-reply&amp;gt;&lt;br/&gt;
]]&amp;gt;]]&amp;gt;&lt;/p&gt;

&lt;p&gt;2017-06-08 12:59:14,896 | TRACE | upCloseable-3-13 | NetconfXMLToMessageDecoder       | 124 - org.opendaylight.netconf.netty-util - 1.1.3.Boron-SR3 | Received to decode: 0a3c6e633a7270632d7265706c7920786d6c6e733a6e633d2275726e3a696574663a706172616d733a786d6c3a6e733a6e6574636f6e663a626173653a312e302220786d6c6e733a6a756e6f733d22687474703a2f2f786d6c2e6a756e697065722e6e65742f6a756e6f732f31352e315834392f6a756e6f7322206d6573736167652d69643d226d2d312220786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a6e6574636f6e663a626173653a312e30223e0a3c6170707061636b2d646f776e6c6f61642d7374617475730820786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a6e6574636f6e663a626173653a312e30223e0a3c6170707061636b2d646f776e6c6f61642d7374617475732d64657461696c3e506c656173652075736520636f6d6d616e640a092272657175657374207365727669636573206170706c69636174696f6e2d6964656e74696669636174696f6e20646f776e6c6f6164207374617475732220746f20636865636b20646f776e6c6f6164207374617475730a3c2f6170707061636b2d646f776e6c6f61642d7374617475732d64657461696c3e0a3c2f6170707061636b2d646f776e6c6f61642d7374617475733e0a3c2f6e633a7270632d7265706c793e0a&lt;br/&gt;
2017-06-08 12:59:14,896 | WARN  | upCloseable-3-13 | NetconfXMLToMessageDecoder       | 124 - org.opendaylight.netconf.netty-util - 1.1.3.Boron-SR3 | XML message with unwanted leading bytes detected. Discarded the 1 leading byte(s): &apos;0a&apos;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;Fatal Error&amp;#93;&lt;/span&gt; :2:25: Element type &quot;apppack-download-status&quot; must be followed by either attribute specifications, &quot;&amp;gt;&quot; or &quot;/&amp;gt;&quot;.&lt;br/&gt;
2017-06-08 12:59:14,897 | WARN  | upCloseable-3-13 | DefaultChannelPipeline           | 77 - io.netty.common - 4.0.44.Final | An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.&lt;br/&gt;
io.netty.handler.codec.DecoderException: org.xml.sax.SAXParseException: Element type &quot;apppack-download-status&quot; must be followed by either attribute specifications, &quot;&amp;gt;&quot; or &quot;/&amp;gt;&quot;.&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:343)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:336)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:35)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:348)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399)&lt;span class=&quot;error&quot;&gt;&amp;#91;77:io.netty.common:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)&lt;span class=&quot;error&quot;&gt;&amp;#91;78:io.netty.transport:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)&lt;span class=&quot;error&quot;&gt;&amp;#91;77:io.netty.common:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)&lt;span class=&quot;error&quot;&gt;&amp;#91;77:io.netty.common:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at java.lang.Thread.run(Thread.java:745)&lt;span class=&quot;error&quot;&gt;&amp;#91;:1.8.0_121&amp;#93;&lt;/span&gt;&lt;br/&gt;
Caused by: org.xml.sax.SAXParseException: Element type &quot;apppack-download-status&quot; must be followed by either attribute specifications, &quot;&amp;gt;&quot; or &quot;/&amp;gt;&quot;.&lt;br/&gt;
	at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)&lt;span class=&quot;error&quot;&gt;&amp;#91;:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)&lt;span class=&quot;error&quot;&gt;&amp;#91;:&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)&lt;span class=&quot;error&quot;&gt;&amp;#91;:2.6.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.config.util.xml.XmlUtil.readXmlToDocument(XmlUtil.java:108)&lt;span class=&quot;error&quot;&gt;&amp;#91;114:org.opendaylight.controller.config-util:0.5.3.Boron-SR3&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.netconf.nettyutil.handler.NetconfXMLToMessageDecoder.decode(NetconfXMLToMessageDecoder.java:70)&lt;span class=&quot;error&quot;&gt;&amp;#91;124:org.opendaylight.netconf.netty-util:1.1.3.Boron-SR3&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)&lt;span class=&quot;error&quot;&gt;&amp;#91;79:io.netty.codec:4.0.44.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	... 16 more&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="21452">NETCONF-439</key>
            <summary>NETCONF request hangs when rpc-rply has invalid xml</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="adetalhouet">Alexis de Talhou&#235;t</assignee>
                                    <reporter username="adetalhouet">Alexis de Talhou&#235;t</reporter>
                        <labels>
                    </labels>
                <created>Fri, 7 Jul 2017 16:57:56 +0000</created>
                <updated>Fri, 15 Mar 2019 22:22:43 +0000</updated>
                            <resolved>Mon, 17 Jul 2017 12:01:12 +0000</resolved>
                                                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="40116" author="adetalhouet" created="Fri, 7 Jul 2017 17:04:10 +0000"  >&lt;p&gt;Analysis has shown the exception was swallow by Netty thread and was never explicitly handle and propagate to the caller thread.&lt;br/&gt;
To fix this, we catch the exception in the decoder handler, and if exception occurs, we put it in the NetconfMessage, responsible to transmit info from Netty world to RESTCONF world.&lt;/p&gt;

&lt;p&gt;Proposed fix: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/60096/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/60096/&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>8824</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=8824]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

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

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

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