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.

View raw message