You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Michael Dürig (JIRA)" <ji...@apache.org> on 2015/10/07 15:30:26 UTC

[jira] [Commented] (OAK-3493) Deadlock when closing a concurrently used FileStore 2.0

    [ https://issues.apache.org/jira/browse/OAK-3493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14946846#comment-14946846 ] 

Michael Dürig commented on OAK-3493:
------------------------------------

This is essentially the same than OAK-3235. While that issue solved the deadlock for direct calls to {{SegmentWriter.flush()}} this issue is about all calls coming via {{SegmentWriter.prepare()}}. The latter are all done while holding the {{SegmentWriter}} lock. 

> Deadlock when closing a concurrently used FileStore 2.0
> -------------------------------------------------------
>
>                 Key: OAK-3493
>                 URL: https://issues.apache.org/jira/browse/OAK-3493
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: segmentmk
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>              Labels: resilience
>             Fix For: 1.3.8
>
>
> A deadlock was detected while stopping the {{SegmentCompactionIT}} using the exposed MBean.
> {noformat}
> "main@1" prio=5 tid=0x1 nid=NA waiting for monitor entry
>  waiting for pool-1-thread-10@2111 to release lock on <0xae8> (a org.apache.jackrabbit.oak.plugins.segment.SegmentWriter)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.dropCache(SegmentWriter.java:871)
>   at org.apache.jackrabbit.oak.plugins.segment.file.FileStore.close(FileStore.java:1031)
>   - locked <0xae7> (a org.apache.jackrabbit.oak.plugins.segment.file.FileStore)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentCompactionIT.tearDown(SegmentCompactionIT.java:282)
> "pool-1-thread-10@2111" prio=5 tid=0x1d nid=NA waiting for monitor entry
>   java.lang.Thread.State: BLOCKED
>  blocks main@1
>  waiting for main@1 to release lock on <0xae7> (a org.apache.jackrabbit.oak.plugins.segment.file.FileStore)
>   at org.apache.jackrabbit.oak.plugins.segment.file.FileStore.writeSegment(FileStore.java:1155)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.flush(SegmentWriter.java:253)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.prepare(SegmentWriter.java:350)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeListBucket(SegmentWriter.java:468)
>   - locked <0xae8> (a org.apache.jackrabbit.oak.plugins.segment.SegmentWriter)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeList(SegmentWriter.java:719)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1211)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter$2.childNodeChanged(SegmentWriter.java:1156)
>   at org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:399)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1147)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentWriter.writeNode(SegmentWriter.java:1175)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder.getNodeState(SegmentNodeBuilder.java:100)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:451)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:474)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:530)
>   at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:208)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)