<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:14:49 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-362] Unable to open multiple transactions to a single netconf device at a time</title>
                <link>https://jira.opendaylight.org/browse/NETCONF-362</link>
                <project id="10142" key="NETCONF">netconf</project>
                    <description>&lt;p&gt;When two (or more) standalone applications write to the same netconf device different data tree at the same time one transaction will fail. &lt;br/&gt;
The problem that we encountered is: &lt;br/&gt;
Two standalone applications (VBD and GBP) are writing data to the same node but different data tree at the same time. Since Netconf is not capable to handle concurrent transactions from more sources to the same device at once, one of the transaction will fail with an exception: &lt;br/&gt;
2017-03-03 15:17:05,041 | ERROR | CommitFutures-4  | NetconfProxyDOMTransaction       | 311 - org.opendaylight.netconf.topology-singleton - 1.2.0.SNAPSHOT | RemoteDevice&lt;/p&gt;
{overcloud-controller-0.opnfv.org}
&lt;p&gt;: Failed to open new transaction&lt;br/&gt;
java.lang.IllegalStateException: Transaction is already opened for another user&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="21375">NETCONF-362</key>
            <summary>Unable to open multiple transactions to a single netconf device at a time</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.opendaylight.org/images/icons/priorities/blocker.svg">Highest</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="10002">Duplicate</resolution>
                                        <assignee username="JMorvay">Jakub Morvay</assignee>
                                    <reporter username="mcmarada">Michal Cmarada</reporter>
                        <labels>
                    </labels>
                <created>Tue, 7 Mar 2017 14:35:37 +0000</created>
                <updated>Fri, 15 Mar 2019 22:22:36 +0000</updated>
                            <resolved>Mon, 1 Oct 2018 18:26:35 +0000</resolved>
                                                                    <component>netconf</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="39889" author="jmorvay@cisco.com" created="Fri, 10 Mar 2017 14:23:48 +0000"  >&lt;p&gt;Currently, netconf mountpoints provide DataBroker implementation that supports just one open write or read/write transaction at a time. Hence, when opening a second transaction, you can see this error.&lt;/p&gt;

&lt;p&gt;The reason behind this single open transaction restriction is that every transaction locks the device. Lock is released upon transaction completion. Since the device is locked for the whole transaction life time, we can be sure that no one else can change device configuration.&lt;/p&gt;

&lt;p&gt;Some possible solutions how to enable more than one open transaction:&lt;/p&gt;

&lt;p&gt;1) Do not enable them. Netconf mountpoints do not provide DataBroker service but our own service that has this restriction documented properly.&lt;/p&gt;

&lt;p&gt;2) Block on creating new transactions and wait until previous transaction completes.&lt;/p&gt;

&lt;p&gt;3) Cache modifications done by multiple transactions, validate them on netconf southbound and validate them also against possible changes made concurrently on device independently from provided DataBroker. This is something we should consult with DataBroker API and most importantly with netconf RFC.&lt;/p&gt;</comment>
                            <comment id="39890" author="rovarga" created="Mon, 13 Mar 2017 10:06:22 +0000"  >&lt;p&gt;To clarify the problem scope and trade-offs. A mount point is backed by a single NETCONF session and all transactions execute on it.&lt;/p&gt;

&lt;p&gt;Since netconf does not allow for multiple candidate stores for a particular session, we do not get any help from the RFC6241/device. Given that the candidate store may be shared across sessions, and there is no standardized way of discovering this, establishing multiple concurrent sessions may not provide a scalable solution (due to the need to lock) and may hit device connection limits.&lt;/p&gt;

&lt;p&gt;Hence we have a three-dimensional solution space to search, with no single solution being the best fit for all devices because:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;having more than one session if there are no active applications is a waste both controller and device resources&lt;/li&gt;
	&lt;li&gt;multiple sessions in case of shared candidate store is wasteful&lt;/li&gt;
	&lt;li&gt;transactions have a logical order which must be preserved (i.e. DOMTransactionChain concrept)&lt;/li&gt;
	&lt;li&gt;establishing a session is slow and may fail&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Do VBD and GBP use TransactionChains?&lt;/p&gt;</comment>
                            <comment id="39891" author="jmorvay@cisco.com" created="Mon, 13 Mar 2017 12:14:27 +0000"  >&lt;p&gt;As a quick fix for this problem we can use my second solution proposal, that is:&lt;/p&gt;

&lt;p&gt;2) Block on creating new transactions and wait until previous transaction completes.&lt;/p&gt;

&lt;p&gt;We can make this more general, by allowing to specify a timeout for blocking on creating a new transaction. After timeout, opening a new transaction will fail with a specific exception, rather than just general TimeoutException or IllegalStateExpcetion. This timeout can be specified in netconf node configuration. Also, we should document this DataBroker implementation properly, what are the restrictions and limitations to it.&lt;/p&gt;

&lt;p&gt;Since this is a quick fix and it does not really allow for multiple transactions open at a time, I also opened a milestone &lt;a href=&quot;https://jira.opendaylight.org/browse/ODLPARENT-77&quot; title=&quot;[Karaf 4] SFT ChannelException: Failed to bind to: /127.0.0.1:2550&quot; class=&quot;issue-link&quot; data-issue-key=&quot;ODLPARENT-77&quot;&gt;&lt;del&gt;ODLPARENT-77&lt;/del&gt;&lt;/a&gt; where we can continue to track this multiple transactions open issue (and also other related issues).&lt;/p&gt;</comment>
                            <comment id="39892" author="jmorvay@cisco.com" created="Mon, 13 Mar 2017 12:19:01 +0000"  >&lt;p&gt;Sorry the milestone bug is &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-370&quot; title=&quot;Milestone: Implement DataBroker API for netconf mountpoints properly&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-370&quot;&gt;NETCONF-370&lt;/a&gt; not &lt;a href=&quot;https://jira.opendaylight.org/browse/ODLPARENT-77&quot; title=&quot;[Karaf 4] SFT ChannelException: Failed to bind to: /127.0.0.1:2550&quot; class=&quot;issue-link&quot; data-issue-key=&quot;ODLPARENT-77&quot;&gt;&lt;del&gt;ODLPARENT-77&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="39893" author="vzelcamo@cisco.com" created="Tue, 14 Mar 2017 14:57:58 +0000"  >&lt;p&gt;Moving correctly to next service release, Carbon Sr1, the closest release, for bugfix.&lt;/p&gt;</comment>
                            <comment id="65131" author="jmorvay" created="Mon, 1 Oct 2018 18:25:53 +0000"  >&lt;p&gt;We should track this under &lt;a href=&quot;https://jira.opendaylight.org/browse/NETCONF-370&quot; title=&quot;Milestone: Implement DataBroker API for netconf mountpoints properly&quot; class=&quot;issue-link&quot; data-issue-key=&quot;NETCONF-370&quot;&gt;NETCONF-370&lt;/a&gt; (which is about mountpoint concurrent transactions in general) , closing this as a duplicate of that milestone.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="21383">NETCONF-370</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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>7918</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=7918]]></customfieldvalue>

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

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

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

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