jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "aasoj (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-2483) Out of memory error while adding a new host due to large number of revisions
Date Wed, 03 Feb 2010 10:45:28 GMT
Out of memory error while adding a new host due to large number of revisions
----------------------------------------------------------------------------

                 Key: JCR-2483
                 URL: https://issues.apache.org/jira/browse/JCR-2483
             Project: Jackrabbit Content Repository
          Issue Type: Improvement
          Components: clustering
         Environment: MySQL DB. 512 MB memory allocated to java app.
            Reporter: aasoj


In a cluster deployment, revisions are saved in Journal Table in the DB. After a while a huge
number of revisions can get created (around 70 k in our test). When a new host is added to
the cluster, it tries to read all the revisions and hence the following error:

Caused by: java.lang.OutOfMemoryError: Java heap space
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2931)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2871)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3414)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
        at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1405)
        at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2816)
        at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:467)
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2510)
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1746)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2135)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
        at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)
        at org.apache.jackrabbit.core.journal.DatabaseJournal.getRecords(DatabaseJournal.java:460)
        at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:201)
        at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:188)
        at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:329)
        at org.apache.jackrabbit.core.cluster.ClusterNode.start(ClusterNode.java:270)

This can also happen to an existing host in the cluster when the number of revisions returned
is very high.


Possible solutions:
1. Cleaning old revisions using Janitor thread: This may be good for new hosts. But it will
fail in a scenario when sync delay is high (few hours) and number of updates is high in existing
hosts in the cluster
2. Increases memory allocated to Java process: This is not a feasible option always
3. Limit the number of updates read from the DB in any cycle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message