-
Type:
Bug
-
Status: Closed (View Workflow)
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: 1.13.0
-
Fix Version/s: 1.13.0
-
Component/s: None
-
Environment:
ONOS_APPS: drivers,metrics,openflow
3 to 7 ONOS node ( More number of nodes, more chance it can occur.)
Happens inconsistently. Once in 5 times to 20 times.
-
Epic Link:
-
Sprint:N Sprint #5 - QA
When running onos with the Mininet
Custom Topology ( topo-perf-2sw.py ) :
s1 = self.addSwitch( "s1", dpid="0000000000000001" ) h1 = self.addHost( "h1" ) self.addLink( s1, h1 )
sudo mn --custom ~/mininet/custom/topo-perf-2sw.py --topo mytopo --mac --controller remote --switch ovsk,protocols=OpenFlow13
Then, assign switches to controller :
sh ovs-vsctl set-controller s1 tcp:10.192.19.111:6653
Once in 5-20 times frequency, it fails to assign controller since it fails to find the device with switch's dpid.
Starting seeing this issue after the patchset :
https://gerrit.onosproject.org/#/c/17487/
From the new function:
private boolean isGroupCapable(OpenFlowSwitch sw) { Driver driver = driverService.getDriver(DeviceId.deviceId(Dpid.uri(sw.getDpid()))); if (driver == null) { return true; } String isGroupCapable = driver.getProperty(GROUP_CAPABLE); return isGroupCapable == null || Boolean.parseBoolean(isGroupCapable); }
When it tries to get driver, it fails to find the device:
failing point : driverService.getDriver(DeviceId.deviceId(Dpid.uri(sw.getDpid())));
and throws an exception:
2018-03-23 13:08:03,331 | INFO | onos-of-worker-1 | OFChannelHandler | 167 | New switch connection from /10.192.19.69:54546 2018-03-23 13:08:03,376 | INFO | onos-of-worker-0 | OFChannelHandler | 167 | Sending OF_13 Hello to /10.192.19.69:54545 2018-03-23 13:08:03,409 | INFO | onos-of-worker-0 | OFChannelHandler | 167 | Received switch description reply OFDescStatsReplyVer13(xid=4294967288, flags=[], mfrDesc=Nicira, Inc., hwDesc=Open vSwitch, swDesc=2.3.0, serialNum=None, dpDesc=None) from switch at /10.192.19.69:54545 2018-03-23 13:08:03,411 | INFO | onos-of-worker-1 | Controller | 167 | Driver 'ovs' assigned to device 00:00:00:00:00:00:00:01 2018-03-23 13:08:03,417 | INFO | onos-of-worker-1 | ntrollerImpl$OpenFlowSwitchAgent | 167 | Added switch 00:00:00:00:00:00:00:01 2018-03-23 13:08:03,738 | ERROR | onos-of-worker-0 | OFChannelHandler | 168 | Error while processing message from switch NiciraSwitchHandshaker{session=10.192.19.69:54545, dpid=00:00:00:00:00:00:00:01}state WAIT_DESCRIPTION_STAT_REPLY org.onlab.util.ItemNotFoundException: Device not found at org.onlab.util.Tools.nullIsNotFound(Tools.java:181)[126:org.onosproject.onlab-misc:1.13.0.SNAPSHOT] at org.onosproject.net.driver.impl.DriverManager.getDriver(DriverManager.java:111)[130:org.onosproject.onos-core-net:1.13.0.SNAPSHOT] at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.isGroupCapable(OpenFlowGroupProvider.java:386)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT] at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.isGroupSupported(OpenFlowGroupProvider.java:371)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT] at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider.access$600(OpenFlowGroupProvider.java:94)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT] at org.onosproject.provider.of.group.impl.OpenFlowGroupProvider$InternalGroupProvider.switchAdded(OpenFlowGroupProvider.java:455)[172:org.onosproject.onos-providers-openflow-group:1.13.0.SNAPSHOT] at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl$OpenFlowSwitchAgent.addConnectedSwitch(OpenFlowControllerImpl.java:672)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT] at org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch.connectSwitch(AbstractOpenFlowSwitch.java:307)[167:org.onosproject.onos-protocols-openflow-api:1.13.0.SNAPSHOT] at org.onosproject.openflow.controller.impl.OFChannelHandler$ChannelState$6.processOFStatisticsReply(OFChannelHandler.java:549)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT] at org.onosproject.openflow.controller.impl.OFChannelHandler$ChannelState.processOFMessage(OFChannelHandler.java:1073)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT] at org.onosproject.openflow.controller.impl.OFChannelHandler.channelRead(OFChannelHandler.java:1387)[168:org.onosproject.onos-protocols-openflow-ctl:1.13.0.SNAPSHOT] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[100:io.netty.handler:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)[100:io.netty.handler:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[101:io.netty.codec:4.1.8.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)[101:io.netty.codec:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:642)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:565)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:479)[99:io.netty.transport:4.1.8.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:441)[99:io.netty.transport:4.1.8.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)[97:io.netty.common:4.1.8.Final] at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]