I have as job that I run once in a while to cleanup and regenerate the build statistics reports (using the "Rebuild Statistics" step).
However, for my job which has a lot of builds in it history, I got an error "GC overhead limit exceeded".
Is this a practical limit or can it be increased somehow? Would adding more memory to the box help? How much memory should I need to calculate the statistics on 35,000 build records? (I know this is a lot, but my team likes to keep things forever.)
Could perhaps an improvement be made to limit the statistics collection to a certain range?
16:11:52,506 INFO - Cleaning up statistics (name:Build Stats, configuration:root/legacy/Builds)...
16:16:09,255 INFO - Executing post-execute action...
16:16:09,792 ERROR - Step 'master>rebuild legacy build stats' is failed.
java.lang.RuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.pmease.quickbuild.bootstrap.BootstrapUtils.wrapAsUnchecked(BootstrapUtils.java:56)
at com.pmease.quickbuild.util.ExceptionUtils.wrapAsUnchecked(ExceptionUtils.java:82)
at com.pmease.quickbuild.stepsupport.Step.doExecute(Step.java:689)
at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:577)
at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:31)
at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:56)
at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:77)
at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:131)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded