[BGPCEP-731] Deadlock occurred in BGP Created: 06/Dec/17  Updated: 03/Aug/20

Status: Confirmed
Project: bgpcep
Component/s: BGP
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Medium
Reporter: YunBo He Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Found one Java-level deadlock:
=============================
"opendaylight-cluster-data-akka.actor.default-dispatcher-3191":
waiting to lock monitor 0x00007f3390f99e78 (object 0x0000000618c00150, a org.opendaylight.protocol.bgp.rib.impl.RIBImpl),
which is held by "CommitFutures-1349"
"CommitFutures-1349":
waiting to lock monitor 0x00007f34ca575b48 (object 0x000000068342c220, a org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain),
which is held by "CommitFutures-1326"
"CommitFutures-1326":
waiting to lock monitor 0x00007f3390f99e78 (object 0x0000000618c00150, a org.opendaylight.protocol.bgp.rib.impl.RIBImpl),
which is held by "CommitFutures-1349"

Java stack information for the threads listed above:
===================================================
"opendaylight-cluster-data-akka.actor.default-dispatcher-3191":
at org.opendaylight.protocol.bgp.rib.impl.RIBImpl.onTransactionChainFailed(RIBImpl.java:264)

  • waiting to lock <0x0000000618c00150> (a org.opendaylight.protocol.bgp.rib.impl.RIBImpl)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$1.onTransactionChainFailed(PingPongTransactionChain.java:104)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.transactionFailed(DOMBrokerTransactionChain.java:137)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.access$100(DOMBrokerTransactionChain.java:30)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain$1.onFailure(DOMBrokerTransactionChain.java:98)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
    at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:2022)
    at org.opendaylight.yangtools.util.concurrent.CountingRejectedExecutionHandler.rejectedExecution(CountingRejectedExecutionHandler.java:41)
    at org.opendaylight.yangtools.util.concurrent.CachedThreadPoolExecutor$RejectedTaskHandler.rejectedExecution(CachedThreadPoolExecutor.java:218)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$AsyncNotifyingSettableFuture$DelegatingRunnable.run(ConcurrentDOMDataBroker.java:317)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
    at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
    at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:753)
    at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:634)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$AsyncNotifyingSettableFuture.setException(ConcurrentDOMDataBroker.java:296)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$4.onSuccess(ConcurrentDOMDataBroker.java:231)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$4.onSuccess(ConcurrentDOMDataBroker.java:227)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1773)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
    at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
    at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:595)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.addListener(AbstractFuture.java:96)
    at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1776)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker.handleException(ConcurrentDOMDataBroker.java:227)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker.access$000(ConcurrentDOMDataBroker.java:44)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$1.onFailure(ConcurrentDOMDataBroker.java:123)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
    at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
    at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:753)
    at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:634)
    at com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:53)
    at org.opendaylight.controller.cluster.datastore.SingleCommitCohortProxy$1.onComplete(SingleCommitCohortProxy.java:60)
    at akka.dispatch.OnComplete.internal(Future.scala:258)
    at akka.dispatch.OnComplete.internal(Future.scala:256)
    at akka.dispatch.japi$CallbackBridge.apply(Future.scala:186)
    at akka.dispatch.japi$CallbackBridge.apply(Future.scala:183)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
    at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:409)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    "CommitFutures-1349":
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.close(PingPongTransactionChain.java:288)
  • waiting to lock <0x000000068342c220> (a org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain)
    at org.opendaylight.protocol.bgp.rib.impl.LocRibWriter.close(LocRibWriter.java:138)
    at org.opendaylight.protocol.bgp.rib.impl.LocRibWriter.restart(LocRibWriter.java:129)
  • locked <0x0000000618bfff88> (a org.opendaylight.protocol.bgp.rib.impl.LocRibWriter)
    at org.opendaylight.protocol.bgp.rib.impl.RIBImpl.onTransactionChainFailed(RIBImpl.java:268)
  • locked <0x0000000618c00150> (a org.opendaylight.protocol.bgp.rib.impl.RIBImpl)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$1.onTransactionChainFailed(PingPongTransactionChain.java:104)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.transactionFailed(DOMBrokerTransactionChain.java:137)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.access$100(DOMBrokerTransactionChain.java:30)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain$1.onFailure(DOMBrokerTransactionChain.java:98)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    "CommitFutures-1326":
    at org.opendaylight.protocol.bgp.rib.impl.RIBImpl.onTransactionChainFailed(RIBImpl.java:264)
  • waiting to lock <0x0000000618c00150> (a org.opendaylight.protocol.bgp.rib.impl.RIBImpl)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$1.onTransactionChainFailed(PingPongTransactionChain.java:104)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.transactionFailed(DOMBrokerTransactionChain.java:137)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.access$100(DOMBrokerTransactionChain.java:30)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain$1.onFailure(DOMBrokerTransactionChain.java:98)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$AsyncNotifyingSettableFuture$DelegatingRunnable.run(ConcurrentDOMDataBroker.java:322)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
    at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
    at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:595)
    at org.opendaylight.controller.cluster.datastore.ConcurrentDOMDataBroker$AsyncNotifyingSettableFuture.addListener(ConcurrentDOMDataBroker.java:280)
    at com.google.common.util.concurrent.ForwardingListenableFuture.addListener(ForwardingListenableFuture.java:47)
    at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1776)
    at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1713)
    at org.opendaylight.controller.cluster.databroker.DOMBrokerTransactionChain.submit(DOMBrokerTransactionChain.java:90)
    at org.opendaylight.controller.cluster.databroker.AbstractDOMBrokerWriteTransaction.submit(AbstractDOMBrokerWriteTransaction.java:137)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.processTransaction(PingPongTransactionChain.java:197)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.processNextTransaction(PingPongTransactionChain.java:237)
  • locked <0x000000068342c220> (a org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.transactionFailed(PingPongTransactionChain.java:256)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain.access$400(PingPongTransactionChain.java:54)
    at org.opendaylight.controller.md.sal.dom.broker.impl.PingPongTransactionChain$2.onFailure(PingPongTransactionChain.java:205)
    at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)


 Comments   
Comment by Claudio David Gasparini [ 06/Dec/17 ]

Please provide more information, steps to reproduce it, version, logs, etc...

 

Regards, 

Comment by YunBo He [ 22/Dec/17 ]

I‘m so sorry,this information was given by somebody, he can not give more information about it.

Generated at Wed Feb 07 19:13:57 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.