owenzhu created JAMES-3451:
------------------------------

             Summary: james 3.5.0 OutOfMemoryError
                 Key: JAMES-3451
                 URL: https://issues.apache.org/jira/browse/JAMES-3451
             Project: James Server
          Issue Type: Bug
          Components: mailbox
    Affects Versions: 3.5.0
         Environment: aliyun linux & mysql 8 & jpa-guice 
            Reporter: owenzhu
         Attachments: bigobject.png, thread.png

database: mysql8

platform: aliyun linux 

jvm params: -Xms128m -Xmx2560m 

When I run the James for a long time, the james server used more and more heap 
memory, eventually it runs out of memory  and refuse to receive email. only 
restart the james will work.

java.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: Java 
heap space at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2173) at 
com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1992) at 
com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3413) at 
com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:471) at 
com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3115) at 
com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2344) at 
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2739) at 
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966) 
at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:302)
 at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:1169)
 at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:300)
 at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1866)
 at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:290)
 at org.apache.openjpa.jdbc.sql.SelectImpl.executeQuery(SelectImpl.java:530) at 
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:455) at 
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:422) at 
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:472)
 at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:254) at 
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:243) at 
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:95)
 at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36) 
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1311) at 
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1062) at 
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:912) at 
org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:843) at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:601) at 
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:297) at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:314) at 
org.apache.james.mailbox.jpa.mail.JPAMessageMapper.findMessagesInMailbox(JPAMessageMapper.java:421)
 at 
org.apache.james.mailbox.jpa.mail.JPAMessageMapper.findAsList(JPAMessageMapper.java:113)

I used jProfile to parse the dump file and found that many transactions were 
waiting.See the attached screenshot for details.

In addition, I will find the following error in the log, I don't know whether 
it is the cause of OOM, ApplicableFlags is null in debug :

2020-11-17 21:41:00.390 [ERROR] [elastic-1226] 
(o.a.j.i.p.base.SelectedMailboxImpl:367) - applicableFlags is null, 
boxId=130656, mail=udysk@88mail.vip2020-11-17 21:41:00.390 [ERROR] 
[elastic-1226] (o.a.j.i.p.base.SelectedMailboxImpl:367) - applicableFlags is 
null, boxId=130656, mail=udysk@88mail.vip2020-11-17 21:41:00.391 [ERROR] 
[elastic-1226] (o.a.j.m.e.delivery.InVmEventDelivery:71) - Error while 
processing listenerjava.lang.RuntimeException: java.lang.NullPointerException 
at 
org.apache.james.mailbox.events.delivery.InVmEventDelivery.doDeliverToListener(InVmEventDelivery.java:86)
 at 
org.apache.james.mailbox.events.delivery.InVmEventDelivery.lambda$deliverByOption$1(InVmEventDelivery.java:69)
 at 
org.apache.james.mailbox.events.delivery.InVmEventDelivery$$Lambda$866/2127037983.run(Unknown
 Source) at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49) 
at reactor.core.publisher.Mono.subscribe(Mono.java:4087) at 
reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.run(MonoSubscribeOn.java:124)
 at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) at 
reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) at 
java.util.concurrent.FutureTask.run(FutureTask.java:266) at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
 at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
 at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745)Caused by: 
java.lang.NullPointerException: null at 
org.apache.james.imap.processor.base.SelectedMailboxImpl.mailboxEvent(SelectedMailboxImpl.java:369)
 at 
org.apache.james.imap.processor.base.SelectedMailboxImpl.event(SelectedMailboxImpl.java:312)
 at 
org.apache.james.mailbox.events.delivery.InVmEventDelivery.doDeliverToListener(InVmEventDelivery.java:83)
 ... 13 common frames omitted

Here is my debugging code :

if (applicableFlags == null) {
 LOGGER.error("applicableFlags is null, boxId={}, mail={}", 
mailboxId.serialize(), mailboxEvent.getUsername().asString());
}
int size = applicableFlags.getUserFlags().length;



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to