[BGPCEP-735] PCEP Dead Lock Created: 12/Dec/17  Updated: 18/Apr/18  Resolved: 05/Jan/18

Status: Verified
Project: bgpcep
Component/s: PCEP
Affects Version/s: None
Fix Version/s: Oxygen

Type: Improvement Priority: Medium
Reporter: Claudio David Gasparini Assignee: Claudio David Gasparini
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Found one Java-level deadlock:
=============================
"epollEventLoopGroup-5-1":
waiting to lock monitor 0x00007f5e640309a8 (object 0x00000000f5b8aa00, a org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl),
which is held by "globalEventExecutor-1-1"
"globalEventExecutor-1-1":
waiting to lock monitor 0x00007f5e54008de8 (object 0x00000000f5b80940, a org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener),
which is held by "epollEventLoopGroup-5-1"

 



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

Java stack information for the threads listed above:
===================================================
"epollEventLoopGroup-5-1":
at org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl.updateLastReceivedRptMsg(SessionStateImpl.java:100)

  • waiting to lock <0x00000000f5b8aa00> (a org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl)
    at org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener.onMessage(Stateful07TopologySessionListener.java:434)
    at org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener.onMessage(AbstractTopologySessionListener.java:301)
  • locked <0x00000000f5b80940> (a org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener)
    at org.opendaylight.protocol.pcep.impl.PCEPSessionImpl.handleMessage(PCEPSessionImpl.java:354)
  • locked <0x00000000f5fac1b0> (a org.opendaylight.protocol.pcep.impl.PCEPSessionImpl)
    at org.opendaylight.protocol.pcep.impl.PCEPSessionImpl.channelRead0(PCEPSessionImpl.java:420)
    at org.opendaylight.protocol.pcep.impl.PCEPSessionImpl.channelRead0(PCEPSessionImpl.java:59)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:341)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1018)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
    at java.lang.Thread.run(Thread.java:748)
    "globalEventExecutor-1-1":
    at org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener.isLspUpdateCapability(Stateful07TopologySessionListener.java:799)
  • waiting to lock <0x00000000f5b80940> (a org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener)
    at org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl.createStatefulCapabilities(SessionStateImpl.java:131)
  • locked <0x00000000f5b8aa00> (a org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl)
    at org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl.getPeerCapabilities(SessionStateImpl.java:125)
  • locked <0x00000000f5b8aa00> (a org.opendaylight.bgpcep.pcep.topology.provider.session.stats.SessionStateImpl)
    at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.grouping.PcepSessionStateBuilder.<init>(PcepSessionStateBuilder.java:38)
    at org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl.updatePCEPStats(TopologyStatsProviderImpl.java:83)
  • locked <0x00000000851d9ed8> (a org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl)
    at org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl.access$200(TopologyStatsProviderImpl.java:41)
    at org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl$1.lambda$run$0(TopologyStatsProviderImpl.java:68)
    at org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl$1$$Lambda$216/469995541.accept(Unknown Source)
    at java.util.HashMap.forEach(HashMap.java:1289)
    at org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl$1.run(TopologyStatsProviderImpl.java:68)
  • locked <0x00000000851d9ed8> (a org.opendaylight.bgpcep.pcep.topology.stats.provider.TopologyStatsProviderImpl)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:126)
    at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:233)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
    at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

 

Comment by Claudio David Gasparini [ 12/Dec/17 ]

https://git.opendaylight.org/gerrit/#/q/topic:BGPCEP-735+(status:open+OR+status:merged)

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