[ https://issues.apache.org/jira/browse/JCR-2345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12762969#action_12762969 ]
Stefan Guggisberg commented on JCR-2345: ---------------------------------------- some general remarks: - did you try jackrabbit 1.6? there was one notable change in SessionItemStateManager (JCR-2186) which could make a difference. - did you test with a different backend/pm (e.g. derby or mysql)? did you test with a different vm (i noticed you are using jrockit)? > Many threads are blocked trying to get lock: > org/apache/jackrabbit/core/persistence/bundle/oraclepersistencemana...@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/oraclepersistencemana...@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/itemmana...@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/xasessioni...@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/t4cconnect...@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/oraclepersistencemana...@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/itemmana...@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/xasessioni...@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.