<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:16:35 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-1067] Unrecoverable NETCONF session negotiation failure</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-1067</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;An exception may get raised from the channel pipeline during NETCONF session negotiation and once this happens the channel negotiation cannot complete successfully even without the cause that originally triggered the exception.&lt;/p&gt;

&lt;p&gt;This is a such case where &lt;tt&gt;AbstractNetconfSessionNegotiator.exceptionCaught()&lt;/tt&gt; is called during a session negotiation:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;2023-06-27T00:32:36,057 | INFO  | globalWorkerGroup-3-3 | AbstractNetconfSessionNegotiator | 265 - org.opendaylight.netconf.netty-util - 6.0.0.SNAPSHOT | Unexpected error during negotiation on channel [id: 0x2d4c45fc]
io.netty.handler.codec.DecoderException: org.xml.sax.SAXParseException; lineNumber: 28; columnNumber: 3; The element type &quot;nc:rpc-reply&quot; must be terminated by the matching end-tag &quot;&amp;lt;/nc:rpc-reply&amp;gt;&quot;.
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:499) ~[bundleFile:4.1.94.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[bundleFile:4.1.94.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[bundleFile:4.1.94.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333) ~[bundleFile:4.1.94.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454) ~[bundleFile:4.1.94.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:425) ~[bundleFile:4.1.94.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[bundleFile:4.1.94.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[bundleFile:4.1.94.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[bundleFile:4.1.94.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[bundleFile:4.1.94.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[bundleFile:4.1.94.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[bundleFile:4.1.94.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[bundleFile:4.1.94.Final]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This was triggered by a corrupted hello message from the device:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&amp;lt;!-- No zombies were killed during the creation of this user interface --&amp;gt;
&amp;lt;!-- user MSEFULL, class j-MSEFULL --&amp;gt;
&amp;lt;nc:hello xmlns:nc=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;
   &amp;lt;nc:capabilities&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:netconf:base:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:netconf:capability:candidate:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:netconf:capability:confirmed-commit:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:netconf:capability:validate:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&amp;amp;amp;revision=2011-06-01&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:netconf:capability:candidate:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:netconf:capability:validate:1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:netconf:capability:url:1.0?scheme=http,ftp,file&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&amp;amp;amp;revision=2013-07-15&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;http://xml.juniper.net/netconf/junos/1.0&amp;lt;/nc:capability&amp;gt;
    &amp;lt;nc:capability&amp;gt;http://xml.juniper.net/dmi/system/1.0&amp;lt;/nc:capability&amp;gt;
&amp;lt;nc:rpc-reply xmlns:nc=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&amp;gt;
&amp;lt;rpc-error&amp;gt;
&amp;lt;error-type&amp;gt;protocol&amp;lt;/error-type&amp;gt;
&amp;lt;error-tag&amp;gt;operation-failed&amp;lt;/error-tag&amp;gt;
&amp;lt;error-severity&amp;gt;error&amp;lt;/error-severity&amp;gt;
&amp;lt;error-message&amp;gt;
Failed to unlink YANG path : /var/run/db/yangs
&amp;lt;/error-message&amp;gt;
&amp;lt;/rpc-error&amp;gt;
&amp;lt;/rpc-reply&amp;gt;
  &amp;lt;/nc:capabilities&amp;gt;
  &amp;lt;nc:session-id&amp;gt;90451&amp;lt;/nc:session-id&amp;gt;
&amp;lt;/nc:hello&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This exception causes negotiation failure and in turn changes the state of NetconfSessionPromise to &apos;failure&apos;. Once this happens the state cannot be changed while controller keeps retrying session negotiations meaninglessly &amp;amp; indefinitely with &lt;tt&gt;max-connection-attempts&lt;/tt&gt; set to 0.&lt;/p&gt;

&lt;p&gt;In most cases the only way to get out of this repeated session negotiation failure and properly reestablish a NETCONF session with the device is to restart the controller, which is very disruptive in the production environment.&lt;/p&gt;</description>
                <environment></environment>
        <key id="37025">NETCONF-1067</key>
            <summary>Unrecoverable NETCONF session negotiation failure</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</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="sangwookha">Sangwook Ha</assignee>
                                    <reporter username="sangwookha">Sangwook Ha</reporter>
                        <labels>
                    </labels>
                <created>Tue, 27 Jun 2023 07:18:20 +0000</created>
                <updated>Wed, 18 Oct 2023 14:03:23 +0000</updated>
                            <resolved>Wed, 18 Oct 2023 14:03:23 +0000</resolved>
                                    <version>5.0.6</version>
                    <version>4.0.8</version>
                                    <fixVersion>4.0.9</fixVersion>
                    <fixVersion>5.0.9</fixVersion>
                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="72323" author="rovarga" created="Mon, 3 Jul 2023 20:30:48 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.opendaylight.org/secure/ViewProfile.jspa?name=sangwookha&quot; class=&quot;user-hover&quot; rel=&quot;sangwookha&quot;&gt;sangwookha&lt;/a&gt;&#160; so... how does this work wiith max-connection-attempts = 2? I believe I found a bug in TimedReconnectStrategy integration as part of &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-1070&quot; title=&quot;Rework client reconnection logic&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-1070&quot;&gt;&lt;del&gt;NETCONF-1070&lt;/del&gt;&lt;/a&gt; &#8211; where 0 is not interpreted as it should be...&lt;/p&gt;</comment>
                            <comment id="72324" author="JIRAUSER13318" created="Mon, 3 Jul 2023 21:36:24 +0000"  >&lt;p&gt;When &lt;tt&gt;max-connection-attempts&lt;/tt&gt; is set to 2, ReconnectStrategy will return a failed future after 2 connection attempts and no more connection will be tried from &lt;a href=&quot;https://github.com/opendaylight/netconf/blob/master/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/NetconfSessionPromise.java#L142&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;NetconfSessionPromise. reconnectFutureComplete() &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And when the parameter is set to 0, it appears that &lt;tt&gt;TimedReconnecStrategy.maxAttempts&lt;/tt&gt; is set to &lt;tt&gt;null&lt;/tt&gt; by &lt;a href=&quot;https://github.com/opendaylight/netconf/blob/master/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/TimedReconnectStrategyFactory.java#L25&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;TimedReconnectStrategyFactory&lt;/a&gt;, hence the number of attempts becomes &lt;a href=&quot;https://github.com/opendaylight/netconf/blob/master/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/TimedReconnectStrategy.java#L93&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;irrelevant&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="72325" author="JIRAUSER13318" created="Mon, 3 Jul 2023 21:47:26 +0000"  >&lt;p&gt;Given the change &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/netconf/+/106786&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;106786&lt;/a&gt;&#160;being developed, a proposed fix in change &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/netconf/+/106744&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;106744&lt;/a&gt; won&apos;t be relevant for netconf 6.0.0. &lt;br/&gt;
Other development streams that do not adopt the change would need some form of fix.&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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i045kn:</customfieldvalue>

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