Search code examples
graph-databasestitanrexster

Rexster/Rexpro : RexProScriptException: .. java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space


I am using a TITAN-0.4.3, REXSTER 2.4 over Cassandra & Elasticsearch. I am calling rexpro from Python. In a single gremlin-request, I am trying to add 100 vertices and commit. I am able to successfully add 40000+ vertices, in 400+ gremlin-requests. However after that , I am getting exception :

Encountered a RexProScriptException: An error occurred while processing the script for language [groov
    y]. All transactions across all graphs in the session have been concluded with failure: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space

Rexster.sh [JVM heap size] I tried to increase heap memory, but still throws the exception, after insertion of few more batches of vertices.

# Set Java options
if [ "$JAVA_OPTIONS" = "" ] ; then
    JAVA_OPTIONS="-Xms256m -Xmx1024m"
fi

Please advice


Solution

  • Just a guess based on the information you provided, but.....PermGen errors usually show up in Rexster if you are not parameterizing the scripts you are sending. Most of the python libraries out there that I know of support that feature. You can read more about this issue here:

    https://github.com/tinkerpop/rexster/issues/143

    and other places in the gremlin users mailing list if you search around. If for some reason you can't parameterize then you can alter this JVM setting:

    -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M
    

    but I'd consider that a last resort. Parameterization should not only get rid of your problem but will also greatly speed up your data loading process.