<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:32:50 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>[OPNFLWPLUG-574] Li Migration: barrier=true does not seem to be sending a barrier message</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-574</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;We are adding flow to MD-SAL data store (FRM) with barrier=true for the flows. Analyzing the OF packet flow to the switch, we do not see the barrier request/reply being sent out to the switch.&lt;/p&gt;

&lt;p&gt;To reproduce, start mininet, add a flow with the barrier attribute set to true and observe the OF Protocol to the switch. Barrier message will not be sent.&lt;/p&gt;

&lt;p&gt;Note that the Li plugin sends out a lot of barriers, but not when asked by the user to send one before / after a flow that the user wants to synchronize.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27842">OPNFLWPLUG-574</key>
            <summary>Li Migration: barrier=true does not seem to be sending a barrier message</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="10001">Won&apos;t Do</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="jmedved@cisco.com">Jan Medved</reporter>
                        <labels>
                    </labels>
                <created>Wed, 25 Nov 2015 05:30:03 +0000</created>
                <updated>Mon, 27 Sep 2021 09:01:40 +0000</updated>
                            <resolved>Thu, 21 Jul 2016 16:11:26 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="57410" author="mirehak@cisco.com" created="Wed, 25 Nov 2015 16:35:17 +0000"  >&lt;p&gt;For Li-design the barrier flag by flow, group and meter is ignored because you can wait in the invoking code for the future result or particular rpc. Or you can hook a callback or chain another future using Futures.transform(..).&lt;/p&gt;

&lt;p&gt;Anyway there is service designed for explicit barrier sending:&lt;/p&gt;

&lt;p&gt;(you need rpcBroker in order to get the service proxy and instanceIdentifier of target device node)&lt;/p&gt;

&lt;p&gt;final FlowCapableTransactionService barrierService = &lt;br/&gt;
    getRpcRegistryDependency().getRpcService(FlowCapableTransactionService.class);&lt;/p&gt;

&lt;p&gt;final SendBarrierInput barrierInput = new SendBarrierInputBuilder()&lt;br/&gt;
    .setNode(new NodeRef(nodeInstanceIdentifier)).build();&lt;/p&gt;

&lt;p&gt;final Future&amp;lt;RpcResult&amp;lt;Void&amp;gt;&amp;gt; rpcResultFuture = &lt;br/&gt;
    barrierService.sendBarrier(barrierInput);&lt;/p&gt;

&lt;p&gt;Now again you need to wait for result as this call is asynchronous too.&lt;/p&gt;</comment>
                            <comment id="57411" author="hideyuki.tai@necam.com" created="Fri, 26 Feb 2016 00:12:57 +0000"  >&lt;p&gt;(In reply to michal rehak from comment #1)&lt;br/&gt;
&amp;gt; For Li-design the barrier flag by flow, group and meter is ignored because&lt;br/&gt;
&amp;gt; you can wait in the invoking code for the future result or particular rpc.&lt;br/&gt;
&amp;gt; Or you can hook a callback or chain another future using&lt;br/&gt;
&amp;gt; Futures.transform(..).&lt;/p&gt;

&lt;p&gt;We&apos;ve also confirmed that the OpenFlow Plugin Li design ignores the barrier flag in the input for add-flow RPC and remove-flow RPC.&lt;/p&gt;

&lt;p&gt;I think this is a bug, so should be fixed. The OpenFlow Plugin Lithium design should not ignore the barrier flag, since there is no reason to ignore the flag. When an application asks the plugin to send a BARRIER_REQUEST, the plugin should send the BARRIER_REQUEST immediately after a FLOW_MOD.&lt;/p&gt;

&lt;p&gt;I think waiting for the future result or hooking a callback is not related to the problem here.&lt;/p&gt;</comment>
                            <comment id="57412" author="mirehak@cisco.com" created="Wed, 6 Apr 2016 08:34:43 +0000"  >&lt;p&gt;Hi Hideyuki,&lt;br/&gt;
in He-design rpc futures get completed upon message sent by netty. &lt;br/&gt;
In Li-design rpc futures get completed when:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;corresponding error arrives&lt;/li&gt;
	&lt;li&gt;or reply (if protocol defines it)&lt;/li&gt;
	&lt;li&gt;or upon subsequent barrier reply (barrier request was sent after the rpc message)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Of course it takes more time for rpc in Li to complete. But the result contains all the relevant info and app can rely in that.&lt;/p&gt;

&lt;p&gt;Appending an explicit barrier to flow/meter/group will cause that completion might happen earlier (up to 500ms). Otherwise there is always an automatic barrier sent in order to flush all outstanding rpcs. This automatic barrier is optimized so that it is not being sent too often.&lt;/p&gt;

&lt;p&gt;In nutshell: if you need to be sure that previous flow is installed on device you either need to wait for subsequent barrier reply or wait for statistics. I understand that in He-design the future from rpc gets completed very fast. But on app side it is not possible to control. Attaching barrier in He-design is the only way how to be sure that device processing is completed.&lt;br/&gt;
In Li-design this is done by design and if you need explicit barrier in order to speed up a bit even by taking the risk of flooding device with barriers then you can do so by invoking appropriate rpc. All you need to do is to invoke barrier rpc in the same thread in which you invoked the previous rpc.&lt;/p&gt;</comment>
                            <comment id="57413" author="hideyuki.tai@necam.com" created="Thu, 7 Apr 2016 18:55:34 +0000"  >&lt;p&gt;(In reply to michal rehak from comment #3)&lt;br/&gt;
&amp;gt; Hi Hideyuki,&lt;br/&gt;
&amp;gt; in He-design rpc futures get completed upon message sent by netty. &lt;br/&gt;
&amp;gt; In Li-design rpc futures get completed when:&lt;br/&gt;
&amp;gt;  - corresponding error arrives &lt;br/&gt;
&amp;gt;  - or reply (if protocol defines it) &lt;br/&gt;
&amp;gt;  - or upon subsequent barrier reply (barrier request was sent after the rpc&lt;br/&gt;
&amp;gt; message)&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Of course it takes more time for rpc in Li to complete. But the result&lt;br/&gt;
&amp;gt; contains all the relevant info and app can rely in that.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Appending an explicit barrier to flow/meter/group will cause that completion&lt;br/&gt;
&amp;gt; might happen earlier (up to 500ms). Otherwise there is always an automatic&lt;br/&gt;
&amp;gt; barrier sent in order to flush all outstanding rpcs. This automatic barrier&lt;br/&gt;
&amp;gt; is optimized so that it is not being sent too often.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; In nutshell: if you need to be sure that previous flow is installed on&lt;br/&gt;
&amp;gt; device you either need to wait for subsequent barrier reply or wait for&lt;br/&gt;
&amp;gt; statistics. I understand that in He-design the future from rpc gets&lt;br/&gt;
&amp;gt; completed very fast. But on app side it is not possible to control.&lt;br/&gt;
&amp;gt; Attaching barrier in He-design is the only way how to be sure that device&lt;br/&gt;
&amp;gt; processing is completed.&lt;br/&gt;
&amp;gt; In Li-design this is done by design and if you need explicit barrier in&lt;br/&gt;
&amp;gt; order to speed up a bit even by taking the risk of flooding device with&lt;br/&gt;
&amp;gt; barriers then you can do so by invoking appropriate rpc. All you need to do&lt;br/&gt;
&amp;gt; is to invoke barrier rpc in the same thread in which you invoked the&lt;br/&gt;
&amp;gt; previous rpc.&lt;/p&gt;

&lt;p&gt;Hi Michal,&lt;/p&gt;

&lt;p&gt;Thank you for your comment!&lt;/p&gt;

&lt;p&gt;My understanding about &quot;when RPC futures get completed&quot; in the Li-design and He-Design is the same with what you explained here.&lt;/p&gt;

&lt;p&gt;So do you suggest VTN Project should use the send-barrier RPC modeled in flow-capable-transaction.yang in the Li-design in Boron?&lt;br/&gt;
If the OFP project continuously supports the send-barrier RPC in Boron, it would work fine for the VTN project.&lt;/p&gt;

&lt;p&gt;I&apos;ve asked about this to the OFP project folks in the ML in March, but I&apos;ve not received any responses about it yet.&lt;br/&gt;
&lt;a href=&quot;https://lists.opendaylight.org/pipermail/openflowplugin-dev/2016-March/004808.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://lists.opendaylight.org/pipermail/openflowplugin-dev/2016-March/004808.html&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="57414" author="mirehak@cisco.com" created="Wed, 13 Apr 2016 09:41:11 +0000"  >&lt;p&gt;Barrier API (flow-capable-transaction.yang) shall stay with us at least till Carbon. And currently there is no plan to deprecate it.&lt;/p&gt;</comment>
                            <comment id="57415" author="abhijit2511" created="Mon, 9 May 2016 16:37:32 +0000"  >&lt;p&gt;VTN blocked by this.&lt;/p&gt;</comment>
                            <comment id="57416" author="abhijit2511" created="Mon, 23 May 2016 16:18:47 +0000"  >&lt;p&gt;Not a blocking issue for VTN any longer - as VTN has already implemented calling the send barrier RPC.&lt;/p&gt;</comment>
                            <comment id="57417" author="abhijit2511" created="Thu, 21 Jul 2016 16:11:26 +0000"  >&lt;p&gt;No longer critical&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>4671</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=4671]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10301"><![CDATA[Normal]]></customfieldvalue>

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

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