IBM Support

IBM Engineering Lifecycle Optimization - Publishing: Aspose.Words out of memory error when generating document-style report from DOORS Next

Troubleshooting


Problem

IBM Engineering Document Generation (EDG) produces a Java heap space java.lang.OutOfMemoryError during the generation of the document-style report from DOORS Next.
 

Heap dump dominator tree

 

Aspose Related Heap

Symptom

The javacore generated with the heap dump contains one or more threads with a name of the format RRDG_57824:71296-CORE. The callstack contains com.aspose.words.* classes.
3XMTHREADINFO   "RRDG_57824:71296-CORE" J9VMThread:0x0000000013884100, omrthread_t:0x00007F4FB41C6D60, java/lang/Thread:0x000000015BF08B58, state:R, prio=5
3XMJAVALTHREAD      (java/lang/Thread getId:0x11680, isDaemon:true)
3XMTHREADINFO1      (native thread ID:0x537D, native priority:0x5, native policy:UNKNOWN, vmstate:CW, vm thread flags:0x00000081)
3XMTHREADINFO2      (native stack address range from:0x00007F51058E9000, to:0x00007F5105929000, size:0x40000)
3XMCPUTIME        CPU usage total: 54920.731742188 secs, current category="Application"
3XMHEAPALLOC       Heap bytes allocated since last GC cycle=0 (0x0)
3XMTHREADINFO3      Java callstack:
4XESTACKTRACE        at com/aspose/words/zzZL5.zzY(Bytecode PC:675)
4XESTACKTRACE        at com/aspose/words/zzZL5.zzVm(Bytecode PC:7)
4XESTACKTRACE        at com/aspose/words/zzZKZ.zzZ(Bytecode PC:34)
4XESTACKTRACE        at com/aspose/words/zzZKZ.zzP(Bytecode PC:87)
4XESTACKTRACE        at com/aspose/words/zzZL8.zzH(Bytecode PC:69)
4XESTACKTRACE        at com/aspose/words/zzZL7.zzC(Bytecode PC:70)
4XESTACKTRACE        at com/aspose/words/zzZL7.zzU(Bytecode PC:203)
4XESTACKTRACE        at com/aspose/words/zzW2.zzY(Bytecode PC:25)
4XESTACKTRACE        at com/aspose/words/zzW2.zzZ(Bytecode PC:16)
4XESTACKTRACE        at com/aspose/words/zzYY4.zzYQb(Bytecode PC:44)
4XESTACKTRACE        at com/aspose/words/zzYY4.zzY(Bytecode PC:47)
4XESTACKTRACE        at com/aspose/words/zzYY4.zzZ(Bytecode PC:20)
4XESTACKTRACE        at com/aspose/words/zzXN.zzjR(Bytecode PC:34)
4XESTACKTRACE        at com/aspose/words/zzXN.zzW(Bytecode PC:129)
4XESTACKTRACE        at com/aspose/words/zzXN.zzX(Bytecode PC:17)
4XESTACKTRACE        at com/aspose/words/zzZ77.zzF(Bytecode PC:44)
4XESTACKTRACE        at com/aspose/words/zzZ77.zzG(Bytecode PC:27)
4XESTACKTRACE        at com/aspose/words/zzZ77.zzZ4R(Bytecode PC:50)
4XESTACKTRACE        at com/aspose/words/zzZ77.zzQ(Bytecode PC:80)
4XESTACKTRACE        at com/aspose/words/zzZ6L.zzF(Bytecode PC:80)
4XESTACKTRACE        at com/aspose/words/zzYW7.zzc(Bytecode PC:113)
4XESTACKTRACE        at com/aspose/words/zz92.zzF(Bytecode PC:14)
4XESTACKTRACE        at com/aspose/words/zz93.zzZPG(Bytecode PC:18)
4XESTACKTRACE        at com/aspose/words/zzZMJ.zzZ(Bytecode PC:157)
4XESTACKTRACE        at com/aspose/words/Document.updatePageLayout(Bytecode PC:19)
4XESTACKTRACE        at com/aspose/words/zz4C.perform(Bytecode PC:29)
4XESTACKTRACE        at com/aspose/words/zz4D.zzHP(Bytecode PC:39)
4XESTACKTRACE        at com/aspose/words/zz1E.zzYi(Bytecode PC:45)
4XESTACKTRACE        at com/aspose/words/zz1E.zzZ(Bytecode PC:8)
4XESTACKTRACE        at com/aspose/words/zz1E.zzZ6(Bytecode PC:14)
4XESTACKTRACE        at com/aspose/words/Range.updateFields(Bytecode PC:4)
4XESTACKTRACE        at com/aspose/words/Document.updateFields(Bytecode PC:13)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/driver/word/WordCOMDriver.updateFields(WordCOMDriver.java:1208)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/driver/word/WordCOMDriver.finalizeSessionImpl(WordCOMDriver.java:1396)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/driver/word/WordCOMDriver.finalizeSession(WordCOMDriver.java:1575)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/driver/SaveDocumentProcessor.finalizeSession(SaveDocumentProcessor.java:86)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/driver/DriverProxy.finalizeSession(DriverProxy.java:2453)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/output/OutputController.finalizeOutput(OutputController.java:138)
4XESTACKTRACE        at com/ibm/rational/rpe/engine/RRDGEngine.run(RRDGEngine.java:1789)
4XESTACKTRACE        at java/lang/Thread.run(Thread.java:822(Compiled Code))

Cause

IBM Engineering Lifecycle Optimization - Publishing (PUB) is designed to handle large amounts of data. However, a sufficient heap memory needs to be allocated to the Java virtual machine to prevent an out-of-memory condition on the DOORS Next server. The heap available to the report equals the difference between the maximum heap size, -Xmx, and the nursery heap size of the JVM, -Xmn. For example, if the value of -Xmx is 16 GB and -Xmn is 4 GB, the report is allocated roughly 16 GB - 4 GB, which is 12 GB heap.
During report generation, PUB processes input data, prepares output, and then finalizes the report. It is at this final stage of document generation that memory errors usually occur. PUB loads large amounts of data into the memory because the Word and PDF output formats that rely on the Aspose API require a large amount of memory to store data.
When the document starts rendering Aspose objects, it needs to build two models in memory. The first model is for the document and the second model is for the rendered document. It also needs more memory than the document size to build a model of the document in the memory. For example, if a document’s size is 1 MB, Aspose needs 10 - 20 MB of heap to build its DOM in the memory. The multiplier depends on the format of the report because some formats are more compact than others. In the context of DOORS Next, PDF format relies on Word format and so both Word and PDF formats require similar heap.
To successfully generate document-style reports requires significantly more memory than the memory required to prevent a server out-of-memory condition. For example, if the size of the generated report is 500 MB, then a heap setting of at least 24 GB must be used for the day-to-day DOORS Next operation. For successful generation of a report of size 1.5 GB, the heap setting must be at least 34 GB.

You can check whether your heap usage exceeds available heap in rrdg.log. To check the heap usage in DOORS Next version 7.0.2 up to iFix014, see rmExt.log. If the document-style report generation exceeds 100% of the heap, the report might not be generated successfully, displaying the following warning message in the log files-

CRRPE3125W tenured-SOA has exceeded the threshold of XXXX MB(100 % of maximum allowed heap space). YYYY MB of memory has been used from maximum of XXXX MB.)

Environment

IBM Requirements Management DOORS Next (DNG) 7.x
IBM Engineering Lifecycle Optimization - Publishing (ELO) 7.x

Resolving The Problem

To resolve this problem, provide sufficient heap memory to the DOORS Next server in the server.startup shell to generate your report. Selecting to compare against an older baseline in the compare configuration report can have a large impact on heap requirements.
If you frequently generate large reports, then you must set the DOORS Next Advanced Property RDMPublishReportsRunners to 1 to limit concurrent report generation to a single report.
Alternatively, if you own PUB licenses you might want to run the report outside of DOORS Next to reduce load. To do that, import the Document Specification file *.dsx into IBM Engineering Lifecycle Optimization - Publishing Launcher with large heap set in rpe-launcher.ini. When a report is run on the DOORS Next server, the *.dsx file is generated in the temp directory of the server.
For Linux: Check the /tmp/rrc_reports directory.
For Windows: Check Users\Administrator\AppData\Local\Temp\2\rrc_reports directory.
To reduce network traffic, import the report template and stylesheet from the JazzTeamServer/server/conf/rm/reporting/initialization/templates directory of the DOORS Next server and refer them locally.

If you add HTML format output instead of Word or PDF in PUB Launcher, it reduces the amount of heap that is used, as it avoids the Aspose API. Report generation might sometimes take more time, depending on the template and the nature of the data. For tips on generating large documents in PUB, follow the steps in Generating large documents.

If you own PUB licenses and you encounter an issue with a different RRDG out-of-the-box report, you can import the report template into Document Studio Eclipse client, simplify the template by removing unnecessary content, and reintroduce it to DOORS Next. This workaround works for all the reports other than the configuration comparison report, which is built into the web UI.

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSUBFB","label":"IBM Engineering Lifecycle Optimization - Publishing"},"ARM Category":[{"code":"a8m50000000L3DAAA0","label":"ELO Publishing"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Product Synonym

PUB;DNG

Document Information

Modified date:
04 December 2022

UID

ibm16828501