When deleting nodes from repository ...
clau_babau Dec 6, 2011 10:14 AMHi,
We have a setup containing one JBoss 6.1 server instance (4GB max heap size) with ModeShape 2.6. The Modeshape JCR repository is persisted into an Oracle 11g db server (30 connections in the pool). When deleting a node from the repository it takes a whole lot of time to complete the operation although there are not so many nodes in the repository (check below the number of records).
SQL> select count(*) from MODE_SIMPLE_NODE;
3106
SQL> select count(*) from MODE_SIMPLE_LARGE_VALUES;
7
SQL> select count(*) from MODE_SUBGRAPH_NODES;
0
SQL> select count(*) from MODESHAPE_LARGEVALUE_USAGES;
649
From a thread dump I see that the JCR remove node operation is blocked at:
Thread 25855: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=156 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=811 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(int) @bci=68, line=941 (Interpreted frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(int) @bci=10, line=1261 (Compiled frame)
- java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock() @bci=5, line=594 (Compiled frame)
- org.modeshape.search.lucene.LuceneSearchEngine.createProcessor(org.modeshape.graph.ExecutionContext, org.modeshape.graph.search.AbstractSearchEngine$Workspaces, org.modeshape.graph.observe.Observer, boolean) @bci=30, line=237 (Interpreted frame)
- org.modeshape.search.lucene.LuceneSearchEngine.createProcessor(org.modeshape.graph.ExecutionContext, org.modeshape.graph.search.AbstractSearchEngine$Workspaces, org.modeshape.graph.observe.Observer, boolean) @bci=6, line=73 (Interpreted frame)
- org.modeshape.graph.search.AbstractSearchEngine.createProcessor(org.modeshape.graph.ExecutionContext, org.modeshape.graph.observe.Observer, boolean) @bci=8, line=169 (Interpreted frame)
- org.modeshape.jcr.RepositoryQueryManager$SelfContained.query(java.lang.String, org.modeshape.graph.query.model.QueryCommand, org.modeshape.graph.query.validate.Schemata, org.modeshape.graph.query.plan.PlanHints, java.util.Map) @bci=24, line=431 (Interpreted frame)
- org.modeshape.jcr.JcrQueryManager$SessionQueryContext.execute(org.modeshape.graph.query.model.QueryCommand, org.modeshape.graph.query.plan.PlanHints, java.util.Map) @bci=47, line=1422 (Interpreted frame)
- org.modeshape.jcr.query.JcrQuery.execute() @bci=36, line=103 (Interpreted frame)
- org.modeshape.jcr.JcrSession.recordRemoval(org.modeshape.graph.Location) @bci=213, line=1151 (Interpreted frame)
- org.modeshape.jcr.JcrNode.doRemove() @bci=155, line=126 (Interpreted frame)
- org.modeshape.jcr.AbstractJcrNode.removeShare() @bci=219, line=2415 (Interpreted frame)
- org.modeshape.jcr.AbstractJcrNode.remove() @bci=1, line=2458 (Interpreted frame)
- com.motive.kmp.dao.jcr.SubjectDAOImpl$7.execute(javax.jcr.Session, javax.jcr.Node) @bci=131, line=711 (Interpreted frame)
- com.motive.kmp.dao.jcr.SubjectDAOImpl$7.execute(javax.jcr.Session, javax.jcr.Node) @bci=3, line=699 (Interpreted frame)
- com.motive.kmp.dao.jcr.JcrDAOImpl.execute(com.motive.kmp.dao.jcr.JcrDAOImpl$JcrCommand) @bci=54, line=72 (Interpreted frame)
- com.motive.kmp.dao.jcr.SubjectDAOImpl.deleteSubject(java.lang.String) @bci=10, line=699 (Interpreted frame)
Could you give me some hints on what to check? Btw, when adding nodes in the repository it all goes fine.
Regards,
Claudiu