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

owenzhu commented on JAMES-3451:
--------------------------------

Maybe it is a mysql Connector/J bug.I used the 
ConnectionPool(commons-dbcp-1.4), and the service ran for three days without 
any memory 
leaks.[https://stackoverflow.com/questions/12240899/memory-leak-application-using-jdbc|https://stackoverflow.com/questions/12240899/memory-leak-application-using-jdbc]

> 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
>            Priority: Major
>         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