<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:15:04 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-453] odl-netconf-topology creates two parallel connection for each configured device</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-453</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;This is happening on Nitrogen. Not sure for how long, as there were other issues hiding this.&lt;/p&gt;

&lt;p&gt;On the robot side, this occasionally manifests &lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt; as observed data not matching the expected data.&lt;/p&gt;

&lt;p&gt;Looking at the testtool log &lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt;, the data do not match as two separate datastores are created:&lt;/p&gt;

&lt;p&gt;12:57:03.218 &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-2-1&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.c.s.d.SnapshotBackedWriteTransaction - Write Tx: DOM-OPER-0 allocated with snapshot org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version@14d698c6&lt;br/&gt;
12:57:03.218 &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-2-1&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.c.s.d.SnapshotBackedWriteTransaction - Write Tx: DOM-CFG-0 allocated with snapshot org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version@4fea454c&lt;br/&gt;
12:57:03.219 &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-2-4&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.c.s.d.SnapshotBackedWriteTransaction - Write Tx: DOM-OPER-0 allocated with snapshot org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version@2f6c84d4&lt;br/&gt;
12:57:03.222 &lt;span class=&quot;error&quot;&gt;&amp;#91;nioEventLoopGroup-2-4&amp;#93;&lt;/span&gt; DEBUG o.o.c.s.c.s.d.SnapshotBackedWriteTransaction - Write Tx: DOM-CFG-0 allocated with snapshot org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version@44e2b43d&lt;/p&gt;

&lt;p&gt;And the reason for that is two clients connecting to the same simulated device (testtool does not expect two clients for the same device):&lt;/p&gt;

&lt;p&gt;12:56:55.897 &lt;span class=&quot;error&quot;&gt;&amp;#91;main&amp;#93;&lt;/span&gt; INFO  o.o.n.t.tool.NetconfDeviceSimulator - All simulated devices started successfully from port 17830 to 17830&lt;br/&gt;
12:56:56.943 &lt;span class=&quot;error&quot;&gt;&amp;#91;sshd-netconf-ssh-server-nio-group-thread-1&amp;#93;&lt;/span&gt; DEBUG o.a.sshd.common.io.nio2.Nio2Session - Creating IoSession on /10.29.13.225:17830 from /10.29.14.155:54522&lt;br/&gt;
  ...&lt;br/&gt;
12:57:02.727 &lt;span class=&quot;error&quot;&gt;&amp;#91;sshd-netconf-ssh-server-nio-group-thread-2&amp;#93;&lt;/span&gt; DEBUG o.a.sshd.common.io.nio2.Nio2Session - Creating IoSession on /10.29.13.225:17830 from /10.29.14.155:54524&lt;/p&gt;

&lt;p&gt;Looking at karaf.log &lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt;, the first duplicity is:&lt;/p&gt;

&lt;p&gt;2017-08-14 12:56:56,941 | INFO  | n-dispatcher-105 | AbstractNetconfTopology          | 126 - netconf-topology-config - 1.3.0.SNAPSHOT | Connecting RemoteDevice&lt;/p&gt;
{Uri [_value=netconf-test-device]}
&lt;p&gt; , with config Node{getNodeId=Uri &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=netconf-test-device&amp;#93;&lt;/span&gt;, augmentations={interface org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode=NetconfNode{getActorResponseWaitTime=5, getBetweenAttemptsTimeoutMillis=2000, getConcurrentRpcLimit=0, getConnectionTimeoutMillis=20000, getCredentials=LoginPassword{getPassword=topsecret, getUsername=admin, augmentations={}}, getDefaultRequestTimeoutMillis=60000, getHost=Host [_ipAddress=IpAddress [_ipv4Address=Ipv4Address &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=10.29.13.225&amp;#93;&lt;/span&gt;]], getKeepaliveDelay=0, getMaxConnectionAttempts=0, getPort=PortNumber &lt;span class=&quot;error&quot;&gt;&amp;#91;_value=17830&amp;#93;&lt;/span&gt;, getSchemaCacheDirectory=schema, getSleepFactor=1.5, isReconnectOnChangedSchema=false, isSchemaless=false, isTcpOnly=false}}}&lt;/p&gt;

&lt;p&gt;followed by an equivalent line at 12:56:56,951 but from thread on-dispatcher-67.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/log.html.gz#s1-s4-s1-t15-k2-k1-k2-k1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/log.html.gz#s1-s4-s1-t15-k2-k1-k2-k1&lt;/a&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/testtool--netconf-userfeatures-txt-CRUD-CRUD.log.gz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/testtool--netconf-userfeatures-txt-CRUD-CRUD.log.gz&lt;/a&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/odl1_karaf.log.gz&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/odl1_karaf.log.gz&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="21466">NETCONF-453</key>
            <summary>odl-netconf-topology creates two parallel connection for each configured device</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="jmorvay@cisco.com">Jakub Morvay</assignee>
                                    <reporter username="vrpolak">Vratko Polak</reporter>
                        <labels>
                    </labels>
                <created>Mon, 14 Aug 2017 15:23:25 +0000</created>
                <updated>Fri, 15 Mar 2019 22:22:44 +0000</updated>
                            <resolved>Wed, 27 Sep 2017 10:56:06 +0000</resolved>
                                                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="40155" author="vrpolak" created="Mon, 14 Aug 2017 15:28:27 +0000"  >&lt;p&gt;&amp;gt; 12:57:02.727&lt;/p&gt;

&lt;p&gt;Not sure why the second session is opened so much later,&lt;br/&gt;
or why the Robot check &lt;span class=&quot;error&quot;&gt;&amp;#91;3&amp;#93;&lt;/span&gt; has not seen &quot;the device&quot; connected until the second connection has been established.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;3&amp;#93;&lt;/span&gt; &lt;a href=&quot;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/log.html.gz#s1-s4-s1-t5-k2-k1&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://logs.opendaylight.org/releng/jenkins092/netconf-csit-1node-userfeatures-only-nitrogen/110/log.html.gz#s1-s4-s1-t5-k2-k1&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="40156" author="jmorvay@cisco.com" created="Tue, 15 Aug 2017 11:41:53 +0000"  >&lt;p&gt;This issue seems to be introduced by &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/52528/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/52528/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above mentioned patch encrypts netconf-node&apos;s password. This encryption process occurs during mounting specified netconf device and works as follows:&lt;/p&gt;

&lt;p&gt;1) Netconf node is being created in netconf-topology. This triggers ODL to mount specified netconf-node. This is place where password encryption logic takes place.&lt;br/&gt;
Password from netconf-node is tried to be decrypted (with help of AAAEncryptionService) and if it cannot be decrytped, that means the password is in plain text.&lt;/p&gt;

&lt;p&gt;2) Assuming the password is in plain-text, we try to encrypt it and write this new modified netconf-node back to neconf-topology. The problem is that this triggers the whole mounting process over again. Note that we continue mounting process for the first DS write operation, we are not ending it anyhow.&lt;/p&gt;

&lt;p&gt;So we end up with two parallel connections to one netconf device. Actual netconf communication with device should be done only trough latter one, but I guess the netconf-testtool is not ready for such scenario. Testtool creates new persisted DS for each socket, so after reconnect, ODL can be connected to different DS.&lt;/p&gt;</comment>
                            <comment id="40157" author="vrpolak" created="Thu, 17 Aug 2017 08:33:59 +0000"  >&lt;p&gt;&amp;gt; we continue mounting process for the first DS write operation, we are not ending it anyhow.&lt;/p&gt;

&lt;p&gt;Ok, this looks like the ting to fix in this Bug.&lt;/p&gt;

&lt;p&gt;&amp;gt; write this new modified netconf-node back to neconf-topology. The problem is that this triggers the whole mounting process over again.&lt;/p&gt;

&lt;p&gt;That might be a design flaw which could be tracked in a separate Bugzilla item.&lt;/p&gt;

&lt;p&gt;But that would not affect CSIT results directly, so only this Bug can be considered a blocker for Nitrogen.&lt;/p&gt;</comment>
                            <comment id="40158" author="jmorvay@cisco.com" created="Tue, 22 Aug 2017 11:57:14 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/61980/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/61980/&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>8989</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=8989]]></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_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i01ymv:</customfieldvalue>

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