Hi,
On 20.6.13 14:10, Michael Dürig wrote:
it looks like SegmentMk and H2 can keep up while with MongoMk there is a
backlog of events developing
Here is the thread dumps that comes up most of the time with MongoMk,
and which makes up for about 90% of CPU time of event processing. AFAICS
the call to DBCursor.hasNext seems to be the bottleneck here.
Michael
at java.util.ArrayList.size(ArrayList.java:177)
at java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
at com.mongodb.DBApiLayer$Result.hasNext(DBApiLayer.java:395)
at com.mongodb.DBCursor._hasNext(DBCursor.java:464)
at com.mongodb.DBCursor.hasNext(DBCursor.java:484)
at
org.apache.jackrabbit.oak.plugins.mongomk.MongoDocumentStore.query(MongoDocumentStore.java:201)
at
org.apache.jackrabbit.oak.plugins.mongomk.MongoDocumentStore.query(MongoDocumentStore.java:181)
at
org.apache.jackrabbit.oak.plugins.mongomk.MongoMK.readChildren(MongoMK.java:622)
at
org.apache.jackrabbit.oak.plugins.mongomk.MongoMK.getChildren(MongoMK.java:601)
at
org.apache.jackrabbit.oak.plugins.mongomk.MongoMK.getNodes(MongoMK.java:961)
at
org.apache.jackrabbit.oak.kernel.KernelNodeState.init(KernelNodeState.java:148)
at
org.apache.jackrabbit.oak.kernel.KernelNodeState.equals(KernelNodeState.java:457)
at
org.apache.jackrabbit.oak.spi.state.AbstractNodeState.compareAgainstBaseState(AbstractNodeState.java:143)
at
org.apache.jackrabbit.oak.kernel.KernelNodeState.compareAgainstBaseState(KernelNodeState.java:433)
at
org.apache.jackrabbit.oak.plugins.observation.SecurableNodeStateDiff.childNodeChanged(SecurableNodeStateDiff.java:127)
at
org.apache.jackrabbit.oak.spi.state.AbstractNodeState.compareAgainstBaseState(AbstractNodeState.java:144)
at
org.apache.jackrabbit.oak.kernel.KernelNodeState.compareAgainstBaseState(KernelNodeState.java:433)
at
org.apache.jackrabbit.oak.plugins.observation.ChangeDispatcher$ChangeSet.diff(ChangeDispatcher.java:256)
at
org.apache.jackrabbit.oak.plugins.observation.ChangeProcessor.run(ChangeProcessor.java:168)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)