[GENIUS-178] Fix new transaction leaks in idmanager Created: 25/Jul/18  Updated: 27/Jul/18  Resolved: 27/Jul/18

Status: Resolved
Project: genius
Component/s: None
Affects Version/s: Oxygen-SR2
Fix Version/s: Oxygen-SR3, Fluorine

Type: Bug Priority: Highest
Reporter: Michael Vorburger Assignee: Stephen Kitt
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Blocks
blocks GENIUS-176 Convert all of genius to managed tran... In Progress
blocks NETVIRT-1384 Umbrella: Numerous new transaction leaks Resolved
blocks GENIUS-179 Enforce use of (only) managed transac... Resolved
is blocked by GENIUS-177 Convert interfacemanger to managed tr... Resolved

 Description   

NETVIRT-1384 attachements show transaction leaks in lockmanager.

The goal of this issue is to a) fix them, and b) prevent them from coming back, based on how GENIUS-177 is doing it for interfacemanager.



 Comments   
Comment by Michael Vorburger [ 25/Jul/18 ]

From SridharG's open-transactions-controller-2.txt attached to NETVIRT-1384 :

1187x transactions opened here, which are not closed:
      (...)
      org.opendaylight.controller.md.sal.binding.impl.BindingDOMDataBrokerAdapter.newWriteOnlyTransaction(BindingDOMDataBrokerAdapter.java:69)
      (...)
      org.opendaylight.genius.idmanager.IdManager.getIdBlockFromParentPool(IdManager.java:386)
      org.opendaylight.genius.idmanager.IdManager.getIdFromLocalPoolCache(IdManager.java:356)
      org.opendaylight.genius.idmanager.IdManager.allocateIdFromLocalPool(IdManager.java:315)
      org.opendaylight.genius.idmanager.IdManager.lambda$allocateId$6(IdManager.java:219)
      org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults.lambda$fromBuilder$0(FutureRpcResults.java:131)
      org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults$FutureRpcResultBuilder.build(FutureRpcResults.java:211)
      org.opendaylight.genius.idmanager.IdManager.allocateId(IdManager.java:221)
      org.opendaylight.yangtools.yang.binding.util.RpcMethodInvokerWithInput.invokeOn(RpcMethodInvokerWithInput.java:32)
      org.opendaylight.yangtools.yang.binding.util.AbstractMappedRpcInvoker.invokeRpc(AbstractMappedRpcInvoker.java:53)
      org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcImplementationAdapter.invoke(BindingDOMRpcImplementationAdapter.java:83)
      org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcImplementationAdapter.invokeRpc(BindingDOMRpcImplementationAdapter.java:70)
      org.opendaylight.controller.md.sal.dom.broker.impl.GlobalDOMRpcRoutingTableEntry.invokeRpc(GlobalDOMRpcRoutingTableEntry.java:41)
      org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRoutingTable.invokeRpc(DOMRpcRoutingTable.java:178)
      org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter.invokeRpc(DOMRpcRouter.java:102)
      (...)
      org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke0(RpcServiceAdapter.java:68)
      org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.access$000(RpcServiceAdapter.java:46)
      org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter$RpcInvocationStrategy.invoke(RpcServiceAdapter.java:165)
      org.opendaylight.controller.md.sal.binding.impl.RpcServiceAdapter.invoke(RpcServiceAdapter.java:99)
      com.sun.proxy.$Proxy218.allocateId(Unknown Source)
      org.opendaylight.netvirt.vpnmanager.VpnUtil.getUniqueId(VpnUtil.java:520)
      org.opendaylight.netvirt.vpnmanager.populator.impl.L3vpnOverMplsGrePopulator.createOperationalAdjacency(L3vpnOverMplsGrePopulator.java:121)
      org.opendaylight.netvirt.vpnmanager.VpnInterfaceManager.processVpnInterfaceAdjacencies(VpnInterfaceManager.java:847)
      org.opendaylight.netvirt.vpnmanager.VpnInterfaceManager.processVpnInterfaceUp(VpnInterfaceManager.java:417)
      org.opendaylight.netvirt.vpnmanager.InterfaceStateChangeListener.lambda$null$0(InterfaceStateChangeListener.java:149)
      org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(ManagedNewTransactionRunnerImpl.java:45)
      org.opendaylight.netvirt.vpnmanager.InterfaceStateChangeListener.lambda$null$1(InterfaceStateChangeListener.java:117)
      org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(ManagedNewTransactionRunnerImpl.java:45)
      org.opendaylight.netvirt.vpnmanager.InterfaceStateChangeListener.lambda$null$2(InterfaceStateChangeListener.java:115)
      org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl.callWithNewWriteOnlyTransactionAndSubmit(ManagedNewTransactionRunnerImpl.java:45)
      org.opendaylight.netvirt.vpnmanager.InterfaceStateChangeListener.lambda$add$3(InterfaceStateChangeListener.java:113)
      org.opendaylight.infrautils.jobcoordinator.internal.JobCoordinatorImpl$MainTask.runWithUncheckedExceptionLogging(JobCoordinatorImpl.java:416)
      org.opendaylight.infrautils.utils.concurrent.LoggingUncaughtThreadDeathContextRunnable.run(LoggingUncaughtThreadDeathContextRunnable.java:60)
      java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
      java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
      java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
      java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
      java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Comment by Stephen Kitt [ 25/Jul/18 ]

This is already fixed on master.

Comment by Michael Vorburger [ 25/Jul/18 ]

by one of these here I'm guessing:

skitt said on IRC he'll cherry-pick the right one from master for Oxygen SR3.

Comment by Michael Vorburger [ 27/Jul/18 ]

Done, TX skitt! It's noteworthy FTR here that https://git.opendaylight.org/gerrit/#/c/74467/ included back-porting the ManagedNewTransactionRunner's new applyWithNewReadWriteTransactionAndSubmit() method to Oxygen - this opens the door for more easily cherry-picking other master changes to Oxygen, if needed (FYI k.faseela).

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