jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Guggisberg (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-2345) Many threads are blocked trying to get lock: org/apache/jackrabbit/core/persistence/bundle/OraclePersistenceManager@0x2b71b2c979c0[fat lock]
Date Wed, 07 Oct 2009 09:41:31 GMT

    [ https://issues.apache.org/jira/browse/JCR-2345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12762967#action_12762967
] 

Stefan Guggisberg commented on JCR-2345:
----------------------------------------

> I have an idea of implementing a new PM that will be just a pool of Oracle PMs and delegate
all work to one of the instances. Is it a good idea? 

probably not. you'll end up with redundant BundleCache instances. you might also run into
inconsistencies as not all BundleCaches are updated on write operations.  implementing write
operations correctly would be quite tricky since they depend on jdbc commit. 

> Many threads are blocked trying to get lock: org/apache/jackrabbit/core/persistence/bundle/OraclePersistenceManager@0x2b71b2c979c0[fat
lock]
> --------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JCR-2345
>                 URL: https://issues.apache.org/jira/browse/JCR-2345
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core, JCR 1.0.1
>    Affects Versions: 1.5.5
>         Environment: HP Unix
>            Reporter: Andrey Adamovich
>         Attachments: dump1.txt, dump2.txt, dump3.txt
>
>
> We implemented a multi-threaded export functionlity for our JR repository, but it turns
out that intended parallel behavior can't be achieved becuase most of the threads seemed to
be waiting for OraclePersistenceManager. 
> This is the stack trace for most of the waiting threads:
>     -- Blocked trying to get lock: org/apache/jackrabbit/core/persistence/bundle/OraclePersistenceManager@0x2b71b2c979c0[fat
lock]
>     at jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)
>     at jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1675)[optimized]
>     at jrockit/vm/Locks.lockFat(Locks.java:1776)[optimized]
>     at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1312)[optimized]
>     at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1259)[optimized]
>     at org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.exists(AbstractBundlePersistenceManager.java:506)[optimized]
>     at org/apache/jackrabbit/core/state/SharedItemStateManager.hasNonVirtualItemState(SharedItemStateManager.java:1343)[inlined]
>     at org/apache/jackrabbit/core/state/SharedItemStateManager.hasItemState(SharedItemStateManager.java:297)[optimized]
>     at org/apache/jackrabbit/core/state/XAItemStateManager.hasItemState(XAItemStateManager.java:295)[optimized]
>     at org/apache/jackrabbit/core/state/SessionItemStateManager.getItemState(SessionItemStateManager.java:181)[optimized]
>     at org/apache/jackrabbit/core/ItemManager.getItemData(ItemManager.java:282)[inlined]
>     at org/apache/jackrabbit/core/ItemManager.getItemData(ItemManager.java:249)[inlined]
>     at org/apache/jackrabbit/core/ItemManager.getNode(ItemManager.java:513)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.prefetchNext(LazyItemIterator.java:109)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.next(LazyItemIterator.java:230)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.nextNode(LazyItemIterator.java:137)[optimized]
>     ^-- Holding lock: org/apache/jackrabbit/core/ItemManager@0x2b71ec068f58[thin lock]
>     at org/apache/jackrabbit/commons/xml/Exporter.exportNodes(Exporter.java:212)[optimized]
>     at org/apache/jackrabbit/commons/xml/DocumentViewExporter.exportNode(DocumentViewExporter.java:77)[inlined]
>     at org/apache/jackrabbit/commons/xml/Exporter.exportNode(Exporter.java:294)[inlined]
>     at org/apache/jackrabbit/commons/xml/Exporter.export(Exporter.java:143)[optimized]
>     at org/apache/jackrabbit/commons/AbstractSession.export(AbstractSession.java:462)[inlined]
>     at org/apache/jackrabbit/commons/AbstractSession.exportDocumentView(AbstractSession.java:236)[inlined]
>     at org/apache/jackrabbit/commons/AbstractSession.exportDocumentView(AbstractSession.java:281)[optimized]
>     ^-- Holding lock: org/apache/jackrabbit/core/XASessionImpl@0x2b71ec068950[thin lock]
> This is the stack trace for blocking thread:
>     at jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Native
Method)
>     at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:46)[optimized]
>     at java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(SocketInputStream.java)[inlined]
>     at java/net/SocketInputStream.read(SocketInputStream.java:129)[optimized]
>     at oracle/net/ns/Packet.receive()V(Unknown Source)[inlined]
>     at oracle/net/ns/DataPacket.receive()V(Unknown Source)[optimized]
>     at oracle/net/ns/NetInputStream.getNextPacket()V(Unknown Source)[optimized]
>     at oracle/net/ns/NetInputStream.read([BII)I(Unknown Source)[inlined]
>     at oracle/net/ns/NetInputStream.read([B)I(Unknown Source)[inlined]
>     at oracle/net/ns/NetInputStream.read()I(Unknown Source)[optimized]
>     at oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1104)[inlined]
>     at oracle/jdbc/driver/T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1075)[inlined]
>     at oracle/jdbc/driver/T4C8TTILob.receiveReply(T4C8TTILob.java:872)[optimized]
>     at oracle/jdbc/driver/T4C8TTILob.getChunkSize(T4C8TTILob.java:329)[inlined]
>     at oracle/jdbc/driver/T4CConnection.getChunkSize(T4CConnection.java:2026)[optimized]
>     ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x2b71b2ce0650[thin lock]
>     at oracle/sql/BLOB.getChunkSize(BLOB.java:389)[inlined]
>     at oracle/sql/BLOB.getBufferSize(BLOB.java:410)[inlined]
>     at oracle/sql/BLOB.getBinaryStream(BLOB.java:229)[optimized]
>     at org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.getBytes(BundleDbPersistenceManager.java:1110)[inlined]
>     at org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1142)[inlined]
>     at org/apache/jackrabbit/core/persistence/bundle/BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1094)[inlined]
>     at org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:701)[inlined]
>     at org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.exists(AbstractBundlePersistenceManager.java:506)[optimized]
>     ^-- Holding lock: org/apache/jackrabbit/core/persistence/bundle/OraclePersistenceManager@0x2b71b2c979c0[fat
lock]
>     at org/apache/jackrabbit/core/state/SharedItemStateManager.hasNonVirtualItemState(SharedItemStateManager.java:1343)[inlined]
>     at org/apache/jackrabbit/core/state/SharedItemStateManager.hasItemState(SharedItemStateManager.java:297)[optimized]
>     at org/apache/jackrabbit/core/state/XAItemStateManager.hasItemState(XAItemStateManager.java:295)[optimized]
>     at org/apache/jackrabbit/core/state/SessionItemStateManager.getItemState(SessionItemStateManager.java:181)[optimized]
>     at org/apache/jackrabbit/core/ItemManager.getItemData(ItemManager.java:282)[inlined]
>     at org/apache/jackrabbit/core/ItemManager.getItemData(ItemManager.java:249)[inlined]
>     at org/apache/jackrabbit/core/ItemManager.getNode(ItemManager.java:513)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.prefetchNext(LazyItemIterator.java:109)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.next(LazyItemIterator.java:230)[inlined]
>     at org/apache/jackrabbit/core/LazyItemIterator.nextNode(LazyItemIterator.java:137)[optimized]
>     ^-- Holding lock: org/apache/jackrabbit/core/ItemManager@0x2b71dcf8c668[thin lock]
>     at org/apache/jackrabbit/commons/xml/Exporter.exportNodes(Exporter.java:212)[optimized]
>     at org/apache/jackrabbit/commons/xml/DocumentViewExporter.exportNode(DocumentViewExporter.java:77)[inlined]
>     at org/apache/jackrabbit/commons/xml/Exporter.exportNode(Exporter.java:294)[inlined]
>     at org/apache/jackrabbit/commons/xml/Exporter.export(Exporter.java:143)[optimized]
>     at org/apache/jackrabbit/commons/AbstractSession.export(AbstractSession.java:462)[inlined]
>     at org/apache/jackrabbit/commons/AbstractSession.exportDocumentView(AbstractSession.java:236)[inlined]
>     at org/apache/jackrabbit/commons/AbstractSession.exportDocumentView(AbstractSession.java:281)[optimized]
>     ^-- Holding lock: org/apache/jackrabbit/core/XASessionImpl@0x2b71dcf8c3c0[thin lock]
> Oracle database performfs as usual. So, I doubt that it is an Oracle problem. In any
case is there any way to avoid other threads blocking each other while performing read operations
from PM?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message