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

zhouxu commented on OAK-8602:
-----------------------------

After this problem occured I try to use plumbr to collection the jvm dump 
imformation.For get the imformation quickly that I set the jvm parameters like 
this(JAVA_OPTS=-Xms128m -Xmx512m).The same problem comes again.

I also found some answers on Internet and then not good for me.

Actually,the way of we use oak is doubtful.

In this case,I request the backend API to save node.When the web application 
startup the oak repository is created.The repository will shutdown at the web 
application context was destoryed.

Each request can create a node and need get session in the start of the request 
then release session in the end of the request.I create 10000 nodes that means 
to get session and release 10000 times.Maybe that's incorrect.

When run junit test in local I open the repository in the setUp() invoked and 
close it in the tearDown() method.I create hundreds of thousands node in one 
session and it's works well. [~reschke]

> javax.jcr.RepositoryException: OakOak0001: GC overhead limit exceeded
> ---------------------------------------------------------------------
>
>                 Key: OAK-8602
>                 URL: https://issues.apache.org/jira/browse/OAK-8602
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>    Affects Versions: 1.14.0
>         Environment: I am runing the oak instance on my local windows machine 
> and the version of oak is 1.14.0.The DocumentNodeStore is Mongodb and the 
> IndexProvider is SolrIndexProvider with async index.
>            Reporter: zhouxu
>            Priority: Major
>
> This problem occurs to I am importing a large of data to the repository.I use 
> jmeter to import data in 5 threads and max loop times of each thread is 
> 200000.When the count of sample reach to about 20000,the oak throws the 
> javax.jcr.RepositoryException: OakOak0001: GC overhead limit exceeded.The 
> complete exception information is as follows:
> {color:#FF0000}javax.jcr.RepositoryException: OakOak0001: GC overhead limit 
> exceeded
>  at 
> org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:250)
>  at 
> org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:213)
>  at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:669)
>  at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:495)
>  at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.performVoid(SessionImpl.java:420)
>  at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(SessionDelegate.java:273)
>  at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:417)
>  at cn.amberdata.afc.domain.permission.AfACL.grantJcrPermit(AfACL.java:215)
>  at cn.amberdata.afc.domain.permission.AfACL.grant(AfACL.java:182)
>  at cn.amberdata.afc.domain.permission.AfACL.grantPermit(AfACL.java:235)
>  at 
> cn.amberdata.afc.domain.object.AfPersistentObject.setACL(AfPersistentObject.java:381)
>  at 
> cn.amberdata.afc.common.util.ACLUtils.doSetAclToTargetFormSource(ACLUtils.java:62)
>  at 
> cn.amberdata.afc.common.util.ACLUtils.setAclToTargetFormSource(ACLUtils.java:40)
>  at 
> cn.amberdata.common.core.persistence.dao.impl.AsyncTaskDaoImpl.extendsParentAcl(AsyncTaskDaoImpl.java:105)
>  at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source)
>  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>  at java.lang.reflect.Method.invoke(Unknown Source)
>  at 
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
>  at 
> org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
>  at java.util.concurrent.FutureTask.run$$$capture(Unknown Source)
>  at java.util.concurrent.FutureTask.run(Unknown Source)
>  at java.lang.Thread.run(Unknown Source)
>  Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakOak0001: 
> GC overhead limit exceeded
>  at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.mergeFailed(DocumentNodeStoreBranch.java:342)
>  at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.access$600(DocumentNodeStoreBranch.java:56)
>  at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch$InMemory.merge(DocumentNodeStoreBranch.java:554)
> at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge0(DocumentNodeStoreBranch.java:196)
> at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:120)
>  at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:170)
>  at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1875)
>  at org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:251)
>  at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:346)
>  at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:493)
>  ... 20 more
>  Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
>  at java.util.Vector.<init>(Unknown Source)
>  at java.util.Vector.<init>(Unknown Source)
>  at java.util.Vector.<init>(Unknown Source)
>  at java.util.Stack.<init>(Unknown Source)
>  at org.bson.AbstractBsonWriter.<init>(AbstractBsonWriter.java:38)
>  at org.bson.AbstractBsonWriter.<init>(AbstractBsonWriter.java:50)
>  at org.bson.BsonDocumentWriter.<init>(BsonDocumentWriter.java:44)
>  at org.bson.BsonDocumentWrapper.getUnwrapped(BsonDocumentWrapper.java:194)
>  at org.bson.BsonDocumentWrapper.isEmpty(BsonDocumentWrapper.java:115)
>  at 
> com.mongodb.operation.BulkWriteBatch$WriteRequestEncoder.encode(BulkWriteBatch.java:395)
>  at 
> com.mongodb.operation.BulkWriteBatch$WriteRequestEncoder.encode(BulkWriteBatch.java:377)
>  at 
> org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63)
>  at 
> org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29)
>  at 
> com.mongodb.internal.connection.BsonWriterHelper.writeDocument(BsonWriterHelper.java:75)
>  at 
> com.mongodb.internal.connection.BsonWriterHelper.writePayload(BsonWriterHelper.java:59)
>  at 
> com.mongodb.internal.connection.CommandMessage.encodeMessageBodyWithMetadata(CommandMessage.java:143)
>  at 
> com.mongodb.internal.connection.RequestMessage.encode(RequestMessage.java:138)
>  at 
> com.mongodb.internal.connection.CommandMessage.encode(CommandMessage.java:57)
>  at 
> com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:244)
>  at 
> com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:99)
>  at 
> com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:444)
>  at 
> com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:72)
>  at 
> com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:200)
>  at 
> com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:269)
>  at 
> com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:131)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation.executeCommand(MixedBulkWriteOperation.java:419)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation.executeBulkWriteBatch(MixedBulkWriteOperation.java:257)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation.access$700(MixedBulkWriteOperation.java:68)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:201)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation$1.call(MixedBulkWriteOperation.java:192)
>  at 
> com.mongodb.operation.OperationHelper.withReleasableConnection(OperationHelper.java:424)
>  at 
> com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:192){color}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to