-
Bug
-
Resolution: Done
-
None
-
unspecified
-
None
-
Operating System: All
Platform: All
-
2024
Reproduction steps:
1) On the host (this must be done first without the controller running to reproduce):
sudo ovs-vsctl set-manager tcp:10.0.2.2:6640;sudo ovs-vsctl add-br br-int;sudo ovs-vsctl set bridge br-int protocols=["OpenFlow13"];sudo ovs-vsctl set-controller br-int tcp:10.0.2.2:6633
2) The controller:
cd integration/distributions/extra/karaf
mvn clean install
cd target/assembly/bin
./karaf
feature:install odl-ovsdb-openstack
No flows get programmed to ovs, but the following exception is in the logs:
2014-09-22 09:16:55,555 | ERROR | g-notification-1 | ProviderNetworkManagerImpl | 336 - org.opendaylight.ovsdb.openstack.net-virt - 1.0.0.SNAPSHOT | No providers matching OpenFlow13 found
2014-09-22 09:16:55,555 | ERROR | g-notification-1 | NotifyTask | 270 - org.opendaylight.controller.sal-binding-broker-impl - 1.1.0.SNAPSHOT | Unhandled exception thrown by listener: org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter$$Broker$ListenerInvoker@3542281b
java.util.NoSuchElementException
at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:154)[119:com.google.guava:14.0.1]
at org.opendaylight.ovsdb.openstack.netvirt.impl.ProviderNetworkManagerImpl.getProvider(ProviderNetworkManagerImpl.java:65)[336:org.opendaylight.ovsdb.openstack.net-virt:1.0.0.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.SouthboundHandler.notifyNode(SouthboundHandler.java:303)[336:org.opendaylight.ovsdb.openstack.net-virt:1.0.0.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.notifyNode(SwitchManager.java:1827)[307:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.addNode(SwitchManager.java:1049)[307:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.updateNode(SwitchManager.java:1150)[307:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.sal.implementation.internal.Inventory.updateNode(Inventory.java:115)[82:org.opendaylight.controller.sal.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.publishNodeUpdate(InventoryAndReadAdapter.java:721)[335:org.opendaylight.controller.sal-compatibility:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.onNodeUpdated(InventoryAndReadAdapter.java:456)[335:org.opendaylight.controller.sal-compatibility:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter$$Broker$ListenerInvoker.onNotification(InventoryAndReadAdapter$$Broker$ListenerInvoker.java)[335:org.opendaylight.controller.sal-compatibility:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.binding.impl.AbstractNotificationListenerRegistration.notify(AbstractNotificationListenerRegistration.java:38)[270:org.opendaylight.controller.sal-binding-broker-impl:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.binding.impl.NotifyTask.run(NotifyTask.java:42)[270:org.opendaylight.controller.sal-binding-broker-impl:1.1.0.SNAPSHOT]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_65]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_65]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_65]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_65]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_65]
This is basically two things:
a) ProviderNetworkManagerImpl throwing an exception
b) MD-SAL reporting that it threw the exception
Interesting additional data.
If after reproducing you do on the host:
sudo ovs-vsctl del-br br-int
and then
sudo ovs-vsctl set-manager tcp:10.0.2.2:6640;sudo ovs-vsctl add-br br-int;sudo ovs-vsctl set bridge br-int protocols=["OpenFlow13"];sudo ovs-vsctl set-controller br-int tcp:10.0.2.2:6633
the exception does not recur, and the flows get programmed to ovs.
This looks like a startup race condition in ovsdb.
- is duplicated by
-
OVSDB-80 Integration bridge is not created
- Resolved