[jira] [Commented] (JAMES-3451) james 3.5.0 OutOfMemoryError
[ https://issues.apache.org/jira/browse/JAMES-3451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17236760#comment-17236760 ] Simon Levesque commented on JAMES-3451: --- I also use JPA with MariaDB and I have to restart daily because of these memory leaks. I fixed some in the past (JAMES-3026), but still, it happens. This is the only project I know that uses OpenJPA. For all the other projects where I use JPA, I use Hibernate and it is very stable. I wonder how big of a change it would be to switch to Hibernate and if that could solve all these issues. > 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.(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 >
[jira] [Commented] (JAMES-3452) Implement Identity/get
[ https://issues.apache.org/jira/browse/JAMES-3452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17236628#comment-17236628 ] Benoit Tellier commented on JAMES-3452: --- https://github.com/linagora/james-project/pull/4062 contributes this... > Implement Identity/get > -- > > Key: JAMES-3452 > URL: https://issues.apache.org/jira/browse/JAMES-3452 > Project: James Server > Issue Type: Sub-task >Reporter: Benoit Tellier >Priority: Major > > Why: This is required by some third party clients to discover the mail > address they can use, and which identityId to position on there email > submissions. > How: > Implement Identity/get. Only retrieve all is implemented. > id is a hash of the email address. > Use CanSendFrom API to broadcast the email addresses the client can use. > Add an identityId in the EmailSubmission object. > Example of query > {code:java} > { > "using": ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"], > "methodCalls": [[ > "Identity/get", > { > "accountId": > "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", > "ids": null > }, > "c1"]] > } > Will respond > { > "accountId": > "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", > "state": "01", > "list": [ > { > "id": > "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", > "name": "b...@domain.tld", > "email": "b...@domain.tld", > "mayDelete": false > }, > { > "id": > "725cfddc2c1905fefa6b8c3a6ab5dd9f8ba611c4d7772cf066f69cfd2ec23832", > "name": "b...@domain-alias.tld", > "email": "b...@domain-alias.tld", > "mayDelete": false > }, > { > "id": > "6310e0a86aedaad878f634a5ff5c2cb8bb3c2401319305ef3272591ebcdc6cb4", > "name": "bob-al...@domain.tld", > "email": "bob-al...@domain.tld", > "mayDelete": false > }, > { > "id": > "62844b5cd203bcb86cb590355fc509773ef1972ce8457b13a7d55d99a308c8f6", > "name": "bob-al...@domain-alias.tld", > "email": "bob-al...@domain-alias.tld", > "mayDelete": false > } > ] > } > {code} > Identity/set & Identity/changes will not be implemented. -- 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
[jira] [Created] (JAMES-3452) Implement Identity/get
Benoit Tellier created JAMES-3452: - Summary: Implement Identity/get Key: JAMES-3452 URL: https://issues.apache.org/jira/browse/JAMES-3452 Project: James Server Issue Type: Sub-task Reporter: Benoit Tellier Why: This is required by some third party clients to discover the mail address they can use, and which identityId to position on there email submissions. How: Implement Identity/get. Only retrieve all is implemented. id is a hash of the email address. Use CanSendFrom API to broadcast the email addresses the client can use. Add an identityId in the EmailSubmission object. Example of query {code:java} { "using": ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"], "methodCalls": [[ "Identity/get", { "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", "ids": null }, "c1"]] } Will respond { "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", "state": "01", "list": [ { "id": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", "name": "b...@domain.tld", "email": "b...@domain.tld", "mayDelete": false }, { "id": "725cfddc2c1905fefa6b8c3a6ab5dd9f8ba611c4d7772cf066f69cfd2ec23832", "name": "b...@domain-alias.tld", "email": "b...@domain-alias.tld", "mayDelete": false }, { "id": "6310e0a86aedaad878f634a5ff5c2cb8bb3c2401319305ef3272591ebcdc6cb4", "name": "bob-al...@domain.tld", "email": "bob-al...@domain.tld", "mayDelete": false }, { "id": "62844b5cd203bcb86cb590355fc509773ef1972ce8457b13a7d55d99a308c8f6", "name": "bob-al...@domain-alias.tld", "email": "bob-al...@domain-alias.tld", "mayDelete": false } ] } {code} Identity/set & Identity/changes will not be implemented. -- 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