<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:33:13 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-722] Some Flows not found in DeviceFlowRegistry</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-722</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;This was noticed with netvirt&apos;s TunnelFloodOut_ flows. &lt;/p&gt;

&lt;p&gt;1) Create the flow. It gets written to the DeviceFlowRegistry&lt;br/&gt;
2) When the OFPST_FLOW comes the hash of the match object is different and therefor it is written with an &quot;alien&quot; Flow ID.&lt;/p&gt;

&lt;p&gt;The following are some stuff I logged and then run through a pretty printer to format the yang nesting for easier reading. What you can see is that the FlowRegistryKey changes because the hash of the Match object changes. The augmentations in the two log lines seem functionally equivalent but very structurally different.&lt;/p&gt;

&lt;p&gt;I will continue to dig on this and keep you updated but wanted to throw this out in case you have any relevant input already.&lt;/p&gt;

&lt;p&gt;1) When the flow is written to config and inserted into the DeviceFlowRegistry the following log statement is issued:&lt;/p&gt;

&lt;p&gt;LOG.trace(&quot;Storing flowDescriptor with table ID : {} and flow ID : {} for flow hash : {} {} {}&quot;, &lt;br/&gt;
        flowDescriptor.getTableKey().getId(), flowDescriptor.getFlowId().getValue(), &lt;br/&gt;
        flowRegistryKey.hashCode(), flowRegistryKey, flowRegistryKey.getMatch());&lt;/p&gt;

&lt;p&gt;Which produces the following output (Pretty printed):&lt;br/&gt;
Storing flowDescriptor with table ID : 110 and flow ID : TunnelFloodOut_101 for flow hash : -1920448894 FlowRegistryKeyDto: org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory$FlowRegistryKeyDto@8d884682,&lt;br/&gt;
tableId: 110,&lt;br/&gt;
priority: 16383,&lt;br/&gt;
cookie: 0,&lt;br/&gt;
match (hash): -1921062477 Match{&lt;br/&gt;
  getEthernetMatch=EthernetMatch{&lt;br/&gt;
    getEthernetDestination=EthernetDestination{&lt;br/&gt;
      getAddress=MacAddress [&lt;br/&gt;
        _value=01:00:00:00:00:00&lt;br/&gt;
      ],&lt;br/&gt;
      getMask=MacAddress [&lt;br/&gt;
        _value=01:00:00:00:00:00&lt;br/&gt;
      ],&lt;br/&gt;
      augmentations={}&lt;br/&gt;
    } /* getEthernetDestination=EthernetDestination */,&lt;br/&gt;
    augmentations={}&lt;br/&gt;
  } /* getEthernetMatch=EthernetMatch */,&lt;br/&gt;
  getTunnel=Tunnel{&lt;br/&gt;
    getTunnelId=101,&lt;br/&gt;
    augmentations={}&lt;br/&gt;
  },&lt;br/&gt;
  augmentations={&lt;br/&gt;
    interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow=GeneralAugMatchNodesNodeTableFlow{&lt;br/&gt;
      getExtensionList=[&lt;br/&gt;
        ExtensionList{&lt;br/&gt;
          getExtension=Extension{&lt;br/&gt;
            augmentations={&lt;br/&gt;
              interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow=NxAugMatchNodesNodeTableFlow{&lt;br/&gt;
                getNxmNxReg=NxmNxReg{&lt;br/&gt;
                  getReg=class org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg0,&lt;br/&gt;
                  getValue=1,&lt;br/&gt;
                  augmentations={}&lt;br/&gt;
                }&lt;br/&gt;
              } /* interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow=NxAugMatchNodesNodeTableFlow */&lt;br/&gt;
            } /* augmentations= */&lt;br/&gt;
          } /* getExtension=Extension */,&lt;br/&gt;
          getExtensionKey=class org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg0Key,&lt;br/&gt;
          augmentations={}&lt;br/&gt;
        } /* ExtensionList */&lt;br/&gt;
      ] /* getExtensionList= */&lt;br/&gt;
    } /* interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow=GeneralAugMatchNodesNodeTableFlow */&lt;br/&gt;
  } /* augmentations= */&lt;br/&gt;
} /* match (hash): -1921062477 Match */&lt;/p&gt;


&lt;p&gt;2) When the OFPST_FLOW message comes in the following is logged from the DeviceFlowRegistry:&lt;/p&gt;

&lt;p&gt;LOG.trace(&quot;Created alien flow id {} for flow hash {} {} {}&quot;,&lt;br/&gt;
        flowDescriptor.getFlowId().getValue(), flowRegistryKey.hashCode(), flowRegistryKey,&lt;br/&gt;
        flowRegistryKey.getMatch());&lt;br/&gt;
Which logs (pretty printed):&lt;br/&gt;
Created alien flow id #UF$TABLE*110-2 for flow hash 1557777654 FlowRegistryKeyDto: org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory$FlowRegistryKeyDto@5cd9ccf6,&lt;br/&gt;
tableId: 110,&lt;br/&gt;
priority: 16383,&lt;br/&gt;
cookie: 0,&lt;br/&gt;
match (hash): 1557164071 Match [&lt;br/&gt;
  _ethernetMatch=EthernetMatch [&lt;br/&gt;
    _ethernetDestination=EthernetDestination [&lt;br/&gt;
      _address=MacAddress [&lt;br/&gt;
        _value=01:00:00:00:00:00&lt;br/&gt;
      ],  &lt;br/&gt;
      _mask=MacAddress [&lt;br/&gt;
        _value=01:00:00:00:00:00&lt;br/&gt;
      ],  &lt;br/&gt;
      augmentation=[]&lt;br/&gt;
    ] /* _ethernetDestination=EthernetDestination */, &lt;br/&gt;
    augmentation=[]&lt;br/&gt;
  ] /* _ethernetMatch=EthernetMatch */, &lt;br/&gt;
  _tunnel=Tunnel [&lt;br/&gt;
    _tunnelId=101,&lt;br/&gt;
    augmentation=[]&lt;br/&gt;
  ],  &lt;br/&gt;
  augmentation=[&lt;br/&gt;
    GeneralAugMatchNotifUpdateFlowStats [&lt;br/&gt;
      _extensionList=[&lt;br/&gt;
        ExtensionList [&lt;br/&gt;
          _extension=Extension [&lt;br/&gt;
            augmentation=[&lt;br/&gt;
              NxAugMatchNotifUpdateFlowStats [&lt;br/&gt;
                _nxmNxReg=NxmNxReg [&lt;br/&gt;
                  _reg=class org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg0,&lt;br/&gt;
                  _value=1,&lt;br/&gt;
                  augmentation=[]&lt;br/&gt;
                ]   &lt;br/&gt;
              ] /* NxAugMatchNotifUpdateFlowStats */&lt;br/&gt;
            ] /* augmentation= */&lt;br/&gt;
          ] /* _extension=Extension */, &lt;br/&gt;
          _extensionKey=class org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg0Key,&lt;br/&gt;
          _key=ExtensionListKey [&lt;br/&gt;
            _extensionKey=class org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg0Key&lt;br/&gt;
          ],  &lt;br/&gt;
          augmentation=[]&lt;br/&gt;
        ] /* ExtensionList */&lt;br/&gt;
      ] /* _extensionList= */&lt;br/&gt;
    ] /* GeneralAugMatchNotifUpdateFlowStats */&lt;br/&gt;
  ] /* augmentation= */&lt;br/&gt;
] /* match (hash): 1557164071 Match */&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27990">OPNFLWPLUG-722</key>
            <summary>Some Flows not found in DeviceFlowRegistry</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="jhershbe">Josh Hershberg</assignee>
                                    <reporter username="jhershbe">Josh Hershberg</reporter>
                        <labels>
                    </labels>
                <created>Mon, 4 Jul 2016 05:52:34 +0000</created>
                <updated>Mon, 27 Sep 2021 09:01:51 +0000</updated>
                            <resolved>Thu, 1 Jun 2017 07:39:03 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="57986" author="andrejleitner" created="Tue, 19 Jul 2016 08:46:29 +0000"  >&lt;p&gt;gerrit: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/41542&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/41542&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="57987" author="andrejleitner" created="Thu, 4 Aug 2016 11:50:54 +0000"  >&lt;p&gt;Hi guys, is this still an issue?&lt;br/&gt;
Previous gerrit patch was abandoned but another one by Anil was merged:&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/42510/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/42510/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="57988" author="shague@redhat.com" created="Fri, 5 Aug 2016 02:59:34 +0000"  >&lt;p&gt;(In reply to Andrej Leitner from comment #2)&lt;br/&gt;
&amp;gt; Hi guys, is this still an issue?&lt;br/&gt;
&amp;gt; Previous gerrit patch was abandoned but another one by Anil was merged:&lt;br/&gt;
&amp;gt; &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/42510/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/42510/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Andrej, we put a workaround in so we need to back that out and check if this patch fixes the issue.&lt;/p&gt;</comment>
                            <comment id="57989" author="andrejleitner" created="Fri, 5 Aug 2016 09:30:36 +0000"  >&lt;p&gt;Ok, will wait for updates from you.&lt;/p&gt;</comment>
                            <comment id="57990" author="andrejleitner" created="Mon, 15 Aug 2016 14:52:45 +0000"  >&lt;p&gt;Hi Sam, &lt;br/&gt;
any updates? Can we close the bug?&lt;/p&gt;</comment>
                            <comment id="57991" author="shague@redhat.com" created="Sat, 20 Aug 2016 01:44:38 +0000"  >&lt;p&gt;Andrej, looks like some of the flows are being found but this one is not:&lt;/p&gt;

&lt;p&gt;cookie=0x0, duration=33.467s, table=110, n_packets=0, n_bytes=0, priority=8192,tun_id=0x65 actions=drop&lt;/p&gt;</comment>
                            <comment id="57992" author="shuva.jyoti.kar.87@gmail.com" created="Sat, 20 Aug 2016 17:46:08 +0000"  >&lt;p&gt;(In reply to Sam Hague from comment #6)&lt;br/&gt;
&amp;gt; Andrej, looks like some of the flows are being found but this one is not:&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; cookie=0x0, duration=33.467s, table=110, n_packets=0, n_bytes=0,&lt;br/&gt;
&amp;gt; priority=8192,tun_id=0x65 actions=drop&lt;/p&gt;

&lt;p&gt;So Sam how do we write this flow, using restconf or install any application that writes this flow?&lt;/p&gt;</comment>
                            <comment id="57993" author="shague@redhat.com" created="Mon, 22 Aug 2016 03:38:59 +0000"  >&lt;p&gt;Our netvirt application writes this flow to mdsal in response to OpenStack port updates. In the course of a simple test of creating a single network with two instances, this flows gets written five or 6 times. That seems to be the trigger - writing the same flow to config a few times and eventually end up with an alien flow id.&lt;/p&gt;</comment>
                            <comment id="57994" author="shuva.jyoti.kar.87@gmail.com" created="Mon, 22 Aug 2016 05:39:03 +0000"  >&lt;p&gt;(In reply to Sam Hague from comment #8)&lt;br/&gt;
&amp;gt; Our netvirt application writes this flow to mdsal in response to OpenStack&lt;br/&gt;
&amp;gt; port updates. In the course of a simple test of creating a single network&lt;br/&gt;
&amp;gt; with two instances, this flows gets written five or 6 times. That seems to&lt;br/&gt;
&amp;gt; be the trigger - writing the same flow to config a few times and eventually&lt;br/&gt;
&amp;gt; end up with an alien flow id.&lt;/p&gt;

&lt;p&gt;So in details, what exactly does the application do &amp;#8211;&lt;br/&gt;
a)repeated add of the same flow&lt;br/&gt;
b)add once, update all other times&lt;br/&gt;
c)update always&lt;/p&gt;

&lt;p&gt;Repeated add of the same flow will result in the alien flow id because adding multiple flows with the same flow-id for the same table is not correct.&lt;/p&gt;

&lt;p&gt;There has been a patch pushed for updates failing due to BUG6458 last Friday, so it would be great if you could test and let us know if you still see the problem&lt;/p&gt;</comment>
                            <comment id="57995" author="shuva.jyoti.kar.87@gmail.com" created="Wed, 24 Aug 2016 11:47:07 +0000"  >&lt;p&gt;Sam/Josh,&lt;/p&gt;

&lt;p&gt;Did you get a chance to go through? any updates on it ?&lt;/p&gt;</comment>
                            <comment id="57996" author="andrejleitner" created="Thu, 25 Aug 2016 15:53:31 +0000"  >&lt;p&gt;Since we believe the issue is fixed changing the priority to normal for now.&lt;/p&gt;</comment>
                            <comment id="57997" author="jozef.bacigal@pantheon.tech" created="Thu, 1 Jun 2017 07:39:03 +0000"  >&lt;p&gt;No response long time, assume the issue is already fixed.&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>6146</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=6146]]></customfieldvalue>

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

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