<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:08 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-1282] controller cannot perform NETCONF operations on node after it is re-attached through RESTCONF</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1282</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;1. Detach a node using restconf (&lt;a href=&quot;https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Netconf#Reconfiguring_Netconf_Connector_While_the_Controller_is_Running&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Netconf#Reconfiguring_Netconf_Connector_While_the_Controller_is_Running&lt;/a&gt;)&lt;br/&gt;
2. REattach the node&lt;br/&gt;
3. Send config to / read operational data from node , using MountInstance API &lt;/p&gt;

&lt;p&gt;You&apos;ll see the following error in opendaylight log and the operation fails.&lt;/p&gt;


&lt;p&gt;2015-04-28 07:31:00.910 IST &lt;span class=&quot;error&quot;&gt;&amp;#91;pool-30-thread-1&amp;#93;&lt;/span&gt; ERROR o.o.c.m.s.c.i.s.TwoPhaseCommit - Transaction: BA-3 Request Commit failed&lt;br/&gt;
java.lang.RuntimeException: RemoteDevice&lt;/p&gt;
{dna-node}: Error while replacing /(urn:cisco:params:xml:ns:yang:dna:ldna?revision=2014-07-05)local-dna/telemetry-sources/telemetry/telemetry&lt;span class=&quot;error&quot;&gt;&amp;#91;{(urn:cisco:params:xml:ns:yang:dna:ldna?revision=2014-07-05)id=2}&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.sal.connect.netconf.sal.tx.NetconfDeviceWriteOnlyTx.put(NetconfDeviceWriteOnlyTx.java:125) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.sal.connect.netconf.sal.tx.NetconfDeviceReadWriteTx.put(NetconfDeviceReadWriteTx.java:46) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleTransaction$ReadWriteTransaction.putWithEnsuredParents(BackwardsCompatibleTransaction.java:253) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleTransaction$ReadWriteTransaction.putConfigurationData(BackwardsCompatibleTransaction.java:216) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleTransaction$ReadWriteTransaction.putConfigurationData(BackwardsCompatibleTransaction.java:191) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingToDomCommitHandler.createBindingToDomTransaction(BindingToDomCommitHandler.java:92) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.sal.binding.impl.connect.dom.BindingToDomCommitHandler.requestCommit(BindingToDomCommitHandler.java:57) ~&lt;span class=&quot;error&quot;&gt;&amp;#91;na:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:87) &lt;span class=&quot;error&quot;&gt;&amp;#91;bundlefile:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:36) &lt;span class=&quot;error&quot;&gt;&amp;#91;bundlefile:na&amp;#93;&lt;/span&gt;&lt;br/&gt;
at java.util.concurrent.FutureTask.run(FutureTask.java:262) &lt;span class=&quot;error&quot;&gt;&amp;#91;na:1.7.0_67&amp;#93;&lt;/span&gt;&lt;br/&gt;
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) &lt;span class=&quot;error&quot;&gt;&amp;#91;na:1.7.0_67&amp;#93;&lt;/span&gt;&lt;br/&gt;
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) &lt;span class=&quot;error&quot;&gt;&amp;#91;na:1.7.0_67&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;na:1.7.0_67&amp;#93;&lt;/span&gt;&lt;br/&gt;
Caused by: java.util.concurrent.ExecutionException: RemoteDevice{dna-node}
&lt;p&gt;: Pre-commit rpc failed, request: Node&lt;span class=&quot;error&quot;&gt;&amp;#91;ImmutableCompositeNode&amp;#93;&lt;/span&gt;, qName&lt;span class=&quot;error&quot;&gt;&amp;#91;edit-config&amp;#93;&lt;/span&gt;, modify&lt;span class=&quot;error&quot;&gt;&amp;#91;n/a&amp;#93;&lt;/span&gt;, children.size = 4, errors: [RpcError &lt;span class=&quot;error&quot;&gt;&amp;#91;message=The netconf session to dna-node is disconnected, severity=ERROR, errorType=TRANSPORT, tag=operation-failed, applicationTag=null, info=null, cause=null&amp;#93;&lt;/span&gt;]&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25836">CONTROLLER-1282</key>
            <summary>controller cannot perform NETCONF operations on node after it is re-attached through RESTCONF</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="mmarsale@cisco.com">Maros Marsalek</assignee>
                                    <reporter username="ashwin.pankaj@hotmail.com">Ashwin Pankaj</reporter>
                        <labels>
                    </labels>
                <created>Tue, 28 Apr 2015 11:12:58 +0000</created>
                <updated>Wed, 6 May 2015 12:43:00 +0000</updated>
                            <resolved>Wed, 6 May 2015 12:43:00 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="50519" author="ashwin.pankaj@hotmail.com" created="Tue, 28 Apr 2015 11:12:58 +0000"  >&lt;p&gt;Attachment plugins.list has been added with description: List of jars in the plugin directory&lt;/p&gt;</comment>
                            <comment id="50515" author="mmarsale@cisco.com" created="Wed, 29 Apr 2015 09:16:28 +0000"  >&lt;p&gt;Tested multiple times on Helium-SR3 and Helium-SR1 and this works fine.&lt;/p&gt;

&lt;p&gt;Does your code re-retrieve current MountPoint instance after reconnect ? Because it looks like your code is keeping a reference to the original MountPoint after reconnect, which is not correct, since after each reconnect a new MountPoint instance is built and the old instance just does not work.&lt;/p&gt;

&lt;p&gt;If thats the case, you should listen to the changes of state for mounted node and react accordingly i.e. you cannot keep a reference to a MountPoint after a device is disconnected. Because if you do, you act as if there was no reconnect.&lt;/p&gt;

&lt;p&gt;This approach is demonstrated in coretutorials for ODL in subproject ncmount (it is built using current Lithium code but the concept stays the same).&lt;/p&gt;

&lt;p&gt;Decreasing priority by one level.&lt;/p&gt;

&lt;p&gt;Maros&lt;/p&gt;</comment>
                            <comment id="50516" author="ashwin.pankaj@hotmail.com" created="Wed, 29 Apr 2015 10:50:28 +0000"  >

&lt;p&gt;private MountInstance buildMountInstance(String node) &lt;/p&gt;
{
        InstanceIdentifier&amp;lt;Node&amp;gt; nodeInstance = buildNodeInstance(node);
        MountInstance mountInstance = mountService.getMountPoint(nodeInstance);
        LOG.info(nodeInstance.toString());
        return mountInstance;
    }

&lt;p&gt;    private InstanceIdentifier&amp;lt;Node&amp;gt; buildNodeInstance(String node) &lt;/p&gt;
{
        NodeKey key = new NodeKey(new NodeId(node));
        InstanceIdentifier&amp;lt;Node&amp;gt; nodeInstance = InstanceIdentifier
                .builder(Nodes.class).child(Node.class, key).toInstance();
        return nodeInstance;
    }</comment>
                            <comment id="50517" author="ashwin.pankaj@hotmail.com" created="Wed, 29 Apr 2015 10:52:01 +0000"  >&lt;p&gt;(In reply to Ashwin Pankaj from comment #2)&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; private MountInstance buildMountInstance(String node) &lt;/p&gt;
{
&amp;gt;         InstanceIdentifier&amp;lt;Node&amp;gt; nodeInstance = buildNodeInstance(node);
&amp;gt;         MountInstance mountInstance =
&amp;gt; mountService.getMountPoint(nodeInstance);
&amp;gt;         LOG.info(nodeInstance.toString());
&amp;gt;         return mountInstance;
&amp;gt;     }
&lt;p&gt;&amp;gt; &lt;br/&gt;
&amp;gt;     private InstanceIdentifier&amp;lt;Node&amp;gt; buildNodeInstance(String node) &lt;/p&gt;
{
&amp;gt;         NodeKey key = new NodeKey(new NodeId(node));
&amp;gt;         InstanceIdentifier&amp;lt;Node&amp;gt; nodeInstance = InstanceIdentifier
&amp;gt;                 .builder(Nodes.class).child(Node.class, key).toInstance();
&amp;gt;         return nodeInstance;
&amp;gt;     }

&lt;p&gt;Sorry - hit send button too soon.&lt;br/&gt;
I always rebuild the node instance as shown above. Is that not enough ?&lt;/p&gt;</comment>
                            <comment id="50518" author="mmarsale@cisco.com" created="Wed, 29 Apr 2015 13:24:29 +0000"  >&lt;p&gt;Ok so this is a binding mount point issue.&lt;/p&gt;

&lt;p&gt;Fix submitted, needs to be retested:&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/19293/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/19293/&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="13505" name="plugins.list" size="18631" author="ashwin.pankaj@hotmail.com" created="Tue, 28 Apr 2015 11:12:58 +0000"/>
                    </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>3076</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=3076]]></customfieldvalue>

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

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