Uploaded image for project: 'OpenFlowPlugin'
  1. OpenFlowPlugin
  2. OPNFLWPLUG-940

Suspected (not sure) TransactionChain leak in TransactionChainManager

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • None
    • None
    • General
    • None
    • Operating System: All
      Platform: All

    • 9101

      As part of ongoing efforts under NETVIRT-883 we've stumbled upon what could be (but I'm not sure) a suspected TransactionChain leak in TransactionChainManager. – This looks similar to OPNFLWPLUG-933 BUT:

      (a) OPNFLWPLUG-933 looks more like an impact (IllegalStateException: Attempted to close chain with outstanding transaction) whereas this MAY be the cause of that , found via new CONTROLLER-1760 tooling (which was not yet available when OPNFLWPLUG-933 was raised!) ...

      (b) therefore the stack trace here is sufficiently different from OPNFLWPLUG-933 (e.g. ContextChainImpl as well as DeviceContextImpl lazyTransactionManagerInitialization VS initialSubmitTransaction)

      So I thought it to be potentially useful to open as a separate new bug, even if ultimately is it closed as a duplicated of OPNFLWPLUG-933 after all.

      Below (NB 4x) is from a test env that just started, not yet doing much under load; we hope to be able to update this tomorrow with more about whether we saw that 4x go up under load.

      ___
      DataBroker : createTransactionChain()
      4x TransactionChains opened but not closed here:
      org.opendaylight.controller.md.sal.trace.closetracker.impl.CloseTrackedTrait.<init>(CloseTrackedTrait.java:31)
      org.opendaylight.controller.md.sal.trace.closetracker.impl.AbstractCloseTracked.<init>(AbstractCloseTracked.java:22)
      org.opendaylight.controller.md.sal.trace.dom.impl.TracingTransactionChain.<init>(TracingTransactionChain.java:28)
      org.opendaylight.controller.md.sal.trace.dom.impl.TracingBroker.createTransactionChain(TracingBroker.java:330)
      org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.<init>(PingPongTransactionChain.java:98)
      org.opendaylight.controller.md.sal.dom.broker.impl.PingPongDataBroker.createTransactionChain(PingPongDataBroker.java:47)
      org.opendaylight.controller.md.sal.dom.broker.impl.PingPongDataBroker.createTransactionChain(PingPongDataBroker.java:27)
      Proxya83f6d64_c9b6_4c7c_8f61_0bd995e3f660.createTransactionChain(Unknown Source)
      Proxy7262af10_1ad4_40f0_a8c9_922b6f492a99.createTransactionChain(Unknown Source)
      org.opendaylight.controller.md.sal.binding.impl.BindingDOMTransactionChainAdapter.<init>(BindingDOMTransactionChainAdapter.java:45)
      org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataBrokerAdapter.createTransactionChain(BindingDOMDataBrokerAdapter.java:74)
      Proxye5303411_c218_4285_85cf_8a6f989a6fb8.createTransactionChain(Unknown Source)
      Proxyb324b7ea_805d_437b_af8c_e7404580eb1f.createTransactionChain(Unknown Source)
      org.opendaylight.openflowplugin.impl.device.TransactionChainManager.createTxChain(TransactionChainManager.java:83)
      org.opendaylight.openflowplugin.impl.device.TransactionChainManager.activateTransactionManager(TransactionChainManager.java:114)
      org.opendaylight.openflowplugin.impl.device.DeviceContextImpl.lazyTransactionManagerInitialization(DeviceContextImpl.java:674)
      org.opendaylight.openflowplugin.impl.device.DeviceContextImpl.instantiateServiceInstance(DeviceContextImpl.java:613)
      org.opendaylight.openflowplugin.impl.lifecycle.ContextChainImpl.initializeContextService(ContextChainImpl.java:259)
      java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890)
      org.opendaylight.openflowplugin.impl.lifecycle.ContextChainImpl.instantiateServiceInstance(ContextChainImpl.java:81)
      org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceRegistrationDelegator.instantiateServiceInstance(ClusterSingletonServiceRegistrationDelegator.java:47)
      org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceGroupImpl.takeOwnership(ClusterSingletonServiceGroupImpl.java:305)
      org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceGroupImpl.ownershipChanged(ClusterSingletonServiceGroupImpl.java:249)
      org.opendaylight.mdsal.singleton.dom.impl.AbstractClusterSingletonServiceProviderImpl.ownershipChanged(AbstractClusterSingletonServiceProviderImpl.java:146)
      org.opendaylight.mdsal.singleton.dom.impl.DOMClusterSingletonServiceProviderImpl.ownershipChanged(DOMClusterSingletonServiceProviderImpl.java:23)
      org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnershipListenerActor.onEntityOwnershipChanged(EntityOwnershipListenerActor.java:44)
      org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnershipListenerActor.handleReceive(EntityOwnershipListenerActor.java:33)
      org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:38)
      akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)
      akka.actor.Actor$class.aroundReceive(Actor.scala:502)
      akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)
      akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
      akka.actor.ActorCell.invoke(ActorCell.scala:495)
      akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
      akka.dispatch.Mailbox.run(Mailbox.scala:224)
      akka.dispatch.Mailbox.exec(Mailbox.scala:234)
      scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
      scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
      scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
      scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

            Unassigned Unassigned
            vorburger Michael Vorburger
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: