<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:32:37 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-490] [Lithium redesign] flow not sent to switch if priority is not explicitly set.</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-490</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;If a priority is not explicitly set, the default (0x8000 == 32768) should&lt;br/&gt;
be used and given in the flow_mod to the switch.  This used to be the case,&lt;br/&gt;
but now we are rejecting and showing an NPE ERROR:&lt;/p&gt;

&lt;p&gt;2015-06-05 15:44:46,121 | ERROR | lt-dispatcher-21 | DataTreeChangeListenerActor      | 179 - org.opendaylight.controller.sal-distributed-datastore - 1.2.0.SNAPSHOT | Error notifying listener org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter@2b426549&lt;br/&gt;
java.lang.NullPointerException: flow priority must not be null&lt;br/&gt;
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:226)&lt;span class=&quot;error&quot;&gt;&amp;#91;61:com.google.guava:18.0.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory$FlowRegistryKeyDto.&amp;lt;init&amp;gt;(FlowRegistryKeyFactory.java:41)&lt;br/&gt;
	at org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory.create(FlowRegistryKeyFactory.java:29)&lt;br/&gt;
	at org.opendaylight.openflowplugin.impl.services.SalFlowServiceImpl.addFlow(SalFlowServiceImpl.java:68)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.binding.util.RpcMethodInvokerWithInput.invokeOn(RpcMethodInvokerWithInput.java:30)&lt;span class=&quot;error&quot;&gt;&amp;#91;69:org.opendaylight.yangtools.yang-binding:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.yangtools.yang.binding.util.AbstractMappedRpcInvoker.invokeRpc(AbstractMappedRpcInvoker.java:52)&lt;span class=&quot;error&quot;&gt;&amp;#91;69:org.opendaylight.yangtools.yang-binding:0.7.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcImplementationAdapter.invoke(BindingDOMRpcImplementationAdapter.java:85)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcImplementationAdapter.invokeRpc(BindingDOMRpcImplementationAdapter.java:72)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.RoutedDOMRpcRoutingTableEntry.invokeRpc(RoutedDOMRpcRoutingTableEntry.java:57)&lt;span class=&quot;error&quot;&gt;&amp;#91;154:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRoutingTable.invokeRpc(DOMRpcRoutingTable.java:186)&lt;span class=&quot;error&quot;&gt;&amp;#91;154:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter.invokeRpc(DOMRpcRouter.java:124)&lt;span class=&quot;error&quot;&gt;&amp;#91;154:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke0(RpcServiceAdapter.java:64)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.access$000(RpcServiceAdapter.java:42)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter$RpcInvocationStrategy.invoke(RpcServiceAdapter.java:156)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke(RpcServiceAdapter.java:95)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at com.sun.proxy.$Proxy82.addFlow(Unknown Source)&lt;span class=&quot;error&quot;&gt;&amp;#91;184:org.opendaylight.openflowplugin.model.flow-service:0.1.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.add(FlowForwarder.java:149)&lt;span class=&quot;error&quot;&gt;&amp;#91;188:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.openflowplugin.applications.frm.impl.FlowForwarder.add(FlowForwarder.java:47)&lt;span class=&quot;error&quot;&gt;&amp;#91;188:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.openflowplugin.applications.frm.impl.AbstractListeningCommiter.onDataTreeChanged(AbstractListeningCommiter.java:59)&lt;span class=&quot;error&quot;&gt;&amp;#91;188:org.opendaylight.openflowplugin.applications.forwardingrules-manager:0.1.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataTreeChangeListenerAdapter.onDataTreeChanged(BindingDOMDataTreeChangeListenerAdapter.java:41)&lt;span class=&quot;error&quot;&gt;&amp;#91;157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:53)&lt;span class=&quot;error&quot;&gt;&amp;#91;179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:37)&lt;span class=&quot;error&quot;&gt;&amp;#91;179:org.opendaylight.controller.sal-distributed-datastore:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)&lt;span class=&quot;error&quot;&gt;&amp;#91;171:org.opendaylight.controller.sal-clustering-commons:1.2.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.Actor$class.aroundReceive(Actor.scala:467)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.run(Mailbox.scala:221)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.exec(Mailbox.scala:231)&lt;span class=&quot;error&quot;&gt;&amp;#91;164:com.typesafe.akka.actor:2.3.10&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b&amp;#93;&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;example flow xml:&lt;br/&gt;
&amp;lt;flow xmlns=&quot;urn:opendaylight:flow:inventory&quot;&amp;gt;&lt;br/&gt;
  &amp;lt;instructions&amp;gt;&amp;lt;instruction&amp;gt;&lt;br/&gt;
    &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
    &amp;lt;apply-actions&amp;gt;&lt;br/&gt;
      &amp;lt;action&amp;gt;&lt;br/&gt;
        &amp;lt;order&amp;gt;0&amp;lt;/order&amp;gt;&lt;br/&gt;
        &amp;lt;output-action&amp;gt;&lt;br/&gt;
          &amp;lt;output-node-connector&amp;gt;FLOOD&amp;lt;/output-node-connector&amp;gt;&lt;br/&gt;
        &amp;lt;/output-action&amp;gt;&lt;br/&gt;
      &amp;lt;/action&amp;gt;&lt;br/&gt;
    &amp;lt;/apply-actions&amp;gt;&lt;br/&gt;
    &amp;lt;/instruction&amp;gt;&lt;br/&gt;
  &amp;lt;/instructions&amp;gt;&lt;br/&gt;
  &amp;lt;match&amp;gt;&lt;br/&gt;
    &amp;lt;ethernet-match&amp;gt;&lt;br/&gt;
      &amp;lt;ethernet-type&amp;gt;&lt;br/&gt;
        &amp;lt;type&amp;gt;0x800&amp;lt;/type&amp;gt;&lt;br/&gt;
      &amp;lt;/ethernet-type&amp;gt;&lt;br/&gt;
    &amp;lt;/ethernet-match&amp;gt;&lt;br/&gt;
    &amp;lt;ipv4-source&amp;gt;11.3.0.0/16&amp;lt;/ipv4-source&amp;gt;&lt;br/&gt;
    &amp;lt;ipv4-destination&amp;gt;99.0.0.0/8&amp;lt;/ipv4-destination&amp;gt;&lt;br/&gt;
  &amp;lt;/match&amp;gt;&lt;br/&gt;
  &amp;lt;table_id&amp;gt;0&amp;lt;/table_id&amp;gt;&lt;br/&gt;
  &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br/&gt;
&amp;lt;/flow&amp;gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27758">OPNFLWPLUG-490</key>
            <summary>[Lithium redesign] flow not sent to switch if priority is not explicitly set.</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="-1">Unassigned</assignee>
                                    <reporter username="jluhrsen">Jamo Luhrsen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 5 Jun 2015 22:58:11 +0000</created>
                <updated>Mon, 27 Sep 2021 09:01:34 +0000</updated>
                            <resolved>Thu, 11 Jun 2015 08:56:24 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="57035" author="mirehak@cisco.com" created="Mon, 8 Jun 2015 07:43:56 +0000"  >&lt;p&gt;Hi,&lt;br/&gt;
priority is mandatory according openflow spec. Unfortunately yang models describing flow have priority leaf as optional (default). In my opinion ofp should not be responsible for dealing with incomplete inputs. Priority could be covered by adding mandatory attribute to corresponding leaf in model or setting default value in model (I vote for mandatory attribute).&lt;/p&gt;

&lt;p&gt;But models can be touched in Be. Current state is that ofp throws an exception at the point where priority is used. Does this break any tests or applications? Isn&apos;t it rational to fix rather those? Because this will be the path ofp will walk in Be?&lt;/p&gt;

&lt;p&gt;Just asking. If there are strong arguments on doing all validations and default value related stuff in ofp than I am all ear.&lt;/p&gt;</comment>
                            <comment id="57036" author="jgloncak" created="Mon, 8 Jun 2015 09:56:17 +0000"  >&lt;p&gt;If the solution with default priority is used then there is patch&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/22087&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/22087&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="57037" author="jluhrsen" created="Mon, 8 Jun 2015 17:21:35 +0000"  >&lt;p&gt;I raised this bug because this is something was working one way (using 0x8000) as default priority, then changed so that it wasn&apos;t using and throwing the NPE.&lt;/p&gt;

&lt;p&gt;This is for the Li-redesign plugin.&lt;/p&gt;

&lt;p&gt;Currently, the He-plugin is taking no priority and using default 0x8000&lt;/p&gt;


&lt;p&gt;We should keep the same external behavior for these things if possible.&lt;/p&gt;

&lt;p&gt;From a previous email exchange, I got the idea that using a default&lt;br/&gt;
priority was an explicit thing we wanted to handle:&lt;br/&gt;
&lt;a href=&quot;https://lists.opendaylight.org/pipermail/openflowplugin-dev/2015-May/003182.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://lists.opendaylight.org/pipermail/openflowplugin-dev/2015-May/003182.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me know the decision, because I&apos;d like to get a test in CI specific &lt;br/&gt;
to this bug since its something that has changed on us recently and we&lt;br/&gt;
should know when it&apos;s changing on us in the future.&lt;/p&gt;

&lt;p&gt;I do agree that we should be more restrictive to what we accept as a &lt;br/&gt;
flow and even reject these things at the REST layer if they are wrong.&lt;br/&gt;
Obviously, this is a Be enhancement.&lt;/p&gt;</comment>
                            <comment id="57038" author="jgloncak" created="Tue, 9 Jun 2015 11:16:11 +0000"  >&lt;p&gt;Returning bug back to default assignee&lt;/p&gt;</comment>
                            <comment id="57039" author="mirehak@cisco.com" created="Wed, 10 Jun 2015 08:36:07 +0000"  >&lt;p&gt;Ok, let&apos;s keep this behavior for Li and leave mandatorization for Be.&lt;/p&gt;</comment>
                            <comment id="57040" author="jluhrsen" created="Wed, 10 Jun 2015 16:57:33 +0000"  >&lt;p&gt;(In reply to michal rehak from comment #5)&lt;br/&gt;
&amp;gt; Ok, let&apos;s keep this behavior for Li and leave mandatorization for Be.&lt;/p&gt;

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

&lt;p&gt;please confirm that we are going to have the he-codebase doing this one way (allowing no priority) and the li-codebase (the redesign) doing it the other way (&lt;b&gt;not&lt;/b&gt; allowing priority).&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
JamO&lt;/p&gt;</comment>
                            <comment id="57041" author="mirehak@cisco.com" created="Thu, 11 Jun 2015 08:56:24 +0000"  >&lt;p&gt;Hi Jamo,&lt;br/&gt;
currently Li and He codebases behave the same way regarding missing flow priority. Both allow it and replace empty value with 0x8000.&lt;/p&gt;

&lt;p&gt;Any changes to this behavior will be (eventually) done in Be.&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>3603</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=3603]]></customfieldvalue>

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

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

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