Good day,
I have created a report that displays all the objects with their attributes as well as all the models with their object occurrences. This report works perfect with all the databases, except one database. This database has 355 980 Objects and 34035 Models. When the report run it fails with the following error message:
When looking at the arisserver_stderr.log file within the log folder of the server, I see the following exception:
report-engine-exception: error running Item.Name(1033): An error occurred in the report object model. - cannot run Attribute(1,1033) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.createException(AArisObject.java:452) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.handleError(AArisObject.java:421) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.handleError(AArisObject.java:433) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.getName(AItem.java:1202) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Name(AItem.java:1176) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Name(AItem.java:1216) at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243) at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66) at org.mozilla.javascript.gen.c2._c21(Test:373) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97) at org.mozilla.javascript.gen.c2._c4(Test:66) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97) at org.mozilla.javascript.gen.c2._c0(Test:17) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401) at com.idsscheer.report.execution.javascript.AScriptContextFactory.doTopCall(AScriptContextFactory.java:226) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.gen.c2.exec(Test) at com.idsscheer.report.execution.interpreter.AJReportInterpreter.openReport(AJReportInterpreter.java:363) at com.idsscheer.report.execution.interpreter.AJReportInterpreter.executeReport(AJReportInterpreter.java:282) at com.idsscheer.aris.server.bl.logic.webreport.scripting.AJavaScriptReportThread.run(AJavaScriptReportThread.java:89) at com.idsscheer.aris.server.bl.logic.webreport.scripting.AJavaScriptRunner.executeReport(AJavaScriptRunner.java:66) at com.idsscheer.aris.server.bl.logic.webreport.reportimpl.AReportProgressAction.run(AReportProgressAction.java:112) at com.idsscheer.aris.server.common.AServerTask$MyRunnable.run(AServerTask.java:61) at java.lang.Thread.run(Thread.java:619) Caused by: report-engine-exception: - cannot run Attribute(1,1033) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Attribute(AItem.java:505) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.getName(AItem.java:1183) ... 28 more Caused by: java.lang.OutOfMemoryError: cannot execute query: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProviderHelper.handleDLException(AObjectProviderHelper.java:59) at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProvider.getAttrs(AObjectProvider.java:168) at com.idsscheer.aris.server.arisomimpl.directctx.ARelationHasAttrAttrDefs.doLoad(ARelationHasAttrAttrDefs.java:21) at com.idsscheer.aris.server.arisomimpl.directctx.ADirectContext.resolveObjects(ADirectContext.java:131) at com.idsscheer.aris.server.arisomimpl.directctx.ARelation.load(ARelation.java:90) at com.idsscheer.aris.server.arisomimpl.directctx.AHasAttr.getAttrs(AHasAttr.java:77) at com.idsscheer.aris.server.arisomimpl.directctx.AHasAttr.getAttr(AHasAttr.java:83) at com.idsscheer.aris.server.arisomimpl.methodctx.AHasAttr.getAttr(AHasAttr.java:277) at com.idsscheer.aris.server.arisomimpl.accessrightctx.AHasAttr.getAttr(AHasAttr.java:176) at com.idsscheer.aris.server.arisomimpl.arisctx.AHasAttr.getAttr(AHasAttr.java:258) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Attribute(AItem.java:494) ... 29 more Caused by: DLException: cannot execute query: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.executeQuery(APreparedQueryPlan.java:83) at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.execute2(APreparedQueryPlan.java:69) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.prepareAndExecute(AUseCaseExecutor.java:78) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.executePlan2(AUseCaseExecutor.java:113) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.executePlan(AUseCaseExecutor.java:97) at com.idsscheer.aris.server.bl.logic.winpersistenceservice.dbpersistenceprovider.ARelation.execute(ARelation.java:118) at com.idsscheer.aris.server.bl.logic.winpersistenceservice.dbpersistenceprovider.APersistenceServiceImpl.getObjectsByRelation(APersistenceServiceImpl.java:160) at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProvider.getAttrs(AObjectProvider.java:166) ... 38 more Caused by: com.idsscheer.dl.util.AMemory$ANotEnoughMemoryException: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.dl.util.AMemory.checkIfEnoughMemoryLeft(AMemory.java:43) at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.executeQuery(APreparedQueryPlan.java:80) ... 45 more
What can I do to fix this?
I don't know the internal workings of Aris, but I would think that 2GB memory would be enough. You don't need have all the objects and models in memory and you free the memory once you are done with the current object/model.
Thank you.
Brian Toops on
Hi Freddy,
Thanks for providing the exception log, very helpful. Based on the following line:
Caused by: java.lang.OutOfMemoryError: cannot execute query: Not enough memory left at server side: max:2044M, total:2044M, used:2036M...it seems like the Java server is running out of memory, not necessarily your physical memory (RAM). ARIS Business Server (7.1 SR9) installs with a default "maxMem" setting of 512mb. Although, based on the log, it looks like this value has already been changed to 2044mb or 2gb (setting is changed in ..\ARIS7.1\server\config\userServerSettings.cfg)
I'm not sure how much physical memory you have on the machine, but there is a danger of performance degradation if you set your "maxMem" setting higher than the amount of physical memory in the machine.
I agree, that 2gb should be plenty (we have ours set to only 1gb), but you *are* dealing with a lot of objects and models, so running a dump of data that large seems like it is exceeding that limit, based on the exception log. We had these errors more frequently before we changed our setting from the default 512 to 1024. If you are able, I would try to set the maxMem setting higher if you are able to do so. Worst case is the server will lock up and need to be restarted so I would try this in your test environment first :)
Hope this helps and please report back your findings!
Regards,
Brian Toops
Cargill, Inc.
ARIS System Analyst