[OVSDB-106] Call to RemoveFlow on a node being deleted causes TransactionCommitFailedException Created: 20/Sep/14  Updated: 19/Oct/17  Resolved: 21/Sep/14

Status: Resolved
Project: ovsdb
Component/s: openstack.net-virt
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Srini Seetharaman Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 2001

 Description   

The LBaaSHandler code must not act upon the notifyNode(DELETE) and proactive try to remove flow state. Otherwise the AbstractServiceInstance.removeFlow() throws the following exception that kills the event processing thread.

java.util.concurrent.ExecutionException: TransactionCommitFailedException{message=Data did not pass validation., errorList=[RpcError [message=Data did not pass validation., severity=ERROR, er
orType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException: Node /(urn:opendaylight
inventory?revision=2013-08-19)nodes/node/node[

{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:82087596611912}

]/AugmentationIdentifier

{childNames=[(urn:opendaylight:flow:inventory revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inve tory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)ip-address, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow: nventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)description, ( rn:opendaylight:flow:inventory?revision=2013-08-19)serial-number]}

/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=50
]/flow/flow[

{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LOADBALANCER_REVERSE_FLOW_10.0.0.5_10.0.0.7}

] does not exist. Cannot apply modification to its children.]]}
at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.wrapInExecutionException(MappingCheckedFuture.java:64)[203:org.opendaylight.yangtools.util:0.6.2.SNAPSHOT]
at org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture.get(MappingCheckedFuture.java:77)[203:org.opendaylight.yangtools.util:0.6.2.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance.removeFlow(AbstractServiceInstance.java:170)[339:org.opendaylight.ovsdb.openstack.net-virt-pro
iders:1.0.0.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.LoadBalancerService.removeLoadBalancerReverseRules(LoadBalancerService.java:442)[339:org.opendaylight.ovsdb.o
enstack.net-virt-providers:1.0.0.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.LoadBalancerService.programLoadBalancerRules(LoadBalancerService.java:142)[339:org.opendaylight.ovsdb.opensta
k.net-virt-providers:1.0.0.SNAPSHOT]
at org.opendaylight.ovsdb.openstack.netvirt.LBaaSHandler.notifyNode(LBaaSHandler.java:231)[338:org.opendaylight.ovsdb.openstack.net-virt:1.0.0.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.notifyNode(SwitchManager.java:1827)[310:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.removeNode(SwitchManager.java:1100)[310:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.switchmanager.internal.SwitchManager.updateNode(SwitchManager.java:1156)[310:org.opendaylight.controller.switchmanager.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.sal.implementation.internal.Inventory.updateNode(Inventory.java:115)[85:org.opendaylight.controller.sal.implementation:0.4.2.SNAPSHOT]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.publishNodeUpdate(InventoryAndReadAdapter.java:728)[340:org.opendaylight.controller.sal-compatibility:1.1.0.SN
PSHOT]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.onNodeRemoved(InventoryAndReadAdapter.java:418)[340:org.opendaylight.controller.sal-compatibility:1.1.0.SNAPSH
T]
at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter$$Broker$ListenerInvoker.onNotification(InventoryAndReadAdapter$$Broker$ListenerInvoker.java)[340:org.opendayli
ht.controller.sal-compatibility:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.binding.impl.AbstractNotificationListenerRegistration.notify(AbstractNotificationListenerRegistration.java:38)[268:org.opendaylight.controller.sal-b
nding-broker-impl:1.1.0.SNAPSHOT]
at org.opendaylight.controller.sal.binding.impl.NotifyTask.run(NotifyTask.java:42)[268: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]
Caused by: TransactionCommitFailedException{message=Data did not pass validation., errorList=[RpcError [message=Data did not pass validation., severity=ERROR, errorType=APPLICATION, tag=opera
ion-failed, applicationTag=null, info=null, cause=org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException: Node /(urn:opendaylight:inventory?revision=2013-08-19
nodes/node/node[

{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:82087596611912}

]/AugmentationIdentifier

{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)table, (u n:opendaylight:flow:inventory?revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)swit h-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory?revision=2013-08-19 hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)ip-address, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19) upported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventor ?revision=2013-08-19)serial-number]}

/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/table[

{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=50}

]/flow/flow[

{(urn:opendayligh :flow:inventory?revision=2013-08-19)id=LOADBALANCER_REVERSE_FLOW_10.0.0.5_10.0.0.7}

] does not exist. Cannot apply modification to its children.]]}
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:401)[271:org.opendaylight.controller.sal-inmemory-datas
ore:1.1.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl$1.call(InMemoryDOMDataStore.java:385)[271:org.opendaylight.controller.sal-inmemory-datas
ore:1.1.0.SNAPSHOT]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_65]
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:293)[122:com.google.guava:14.0.1]
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:61)[122:com.google.guava:14.0.1]
at org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore$ThreePhaseCommitImpl.canCommit(InMemoryDOMDataStore.java:385)[271:org.opendaylight.controller.sal-inmemory-da


Generated at Wed Feb 07 20:35:31 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.