Uploaded image for project: 'ovsdb'
  1. ovsdb
  2. OVSDB-106

Call to RemoveFlow on a node being deleted causes TransactionCommitFailedException

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • unspecified
    • None
    • openstack.net-virt
    • None
    • Operating System: All
      Platform: All

    • 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

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            Unassigned Unassigned
            srini.seetharaman@gmail.com Srini Seetharaman
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: