-
Bug
-
Resolution: Fixed
-
Highest
-
6.0.6, 6.1.1, 6.3.4, 6.4.1, 6.4.3
-
22
-
Severity 1 - Critical
-
112
-
Summary
Uploading some PPTX files to Confluence can cause OutOfMemory error while generating preview.
Steps to Reproduce
- Upload a Powerpoint file with 300 pages containing graphs/pictures to Confluence (attached, 9.87MB)
- Open file in preview window several times
Expected Results
Confluence should pre-calculate the resource commitment before previewing the document. Similar to CONFSERVER-45209
Actual Results
Confluence became unresponsive. The below exception is thrown in the catalina.out file:
11-Jan-2018 14:19:12.170 SEVERE [http-nio-8090-ClientPoller-1] org.apache.tomcat.util.net.NioEndpoint$Poller.run java.lang.OutOfMemoryError: Java heap spaceException in thread "C3P0PooledConnectionPoolManager[identityToken->1bqxcmo9s1qzxzgfaa24s0|4be2e790]-HelperThread-#1" java.lang.OutOfMemoryError: Java heap space 11-Jan-2018 14:20:25.883 SEVERE [http-nio-8090-ClientPoller-0] org.apache.tomcat.util.net.NioEndpoint$Poller.run java.lang.OutOfMemoryError: Java heap space
Heap Dump Analysis
Workaround
Upgrade the Document Conversion add-on with the latest version, below
- Download the right document-conversion-library-x.x.xx.jar
- Install the add on by file upload, as per installing plugins
STEP TO REPLICATE
- Create a PPTX files and include multiple charts in the PPTX file.
- Attach the file in the Confluence page.
- Preview the file.
EXPECTED BEHAVIOUR
- The thumbnails for the PPTX file will load correctly.
- The file will preview correctly in Confluence.
ACTUAL BEHAVIOUR
- Thumbnails for the file will not load.
- The preview will take sometime depending on the number and complexity of the Charts inside the file.
- Noticed a CPU SPIKE while previewing the file:
- The following conversion thread found in the thread dump:
"conversion-thread-0-internal" #192 daemon prio=5 tid=0x00007f06e81f0000 nid=0x39cb runnable [0x00007f066bbbd000] java.lang.Thread.State: RUNNABLE at java.util.Vector.indexOf(Vector.java:382) at java.text.AttributedString.addAttributeRunData(AttributedString.java:532) at java.text.AttributedString.addAttributes(AttributedString.java:398) at com.aspose.slides.ms.pbdb106a0.p6a2feef8.pa5e0ff62.r.do(Unknown Source) at com.aspose.slides.ms.pbdb106a0.p6a2feef8.pa5e0ff62.r.break(Unknown Source) at com.aspose.slides.ms.pbdb106a0.p6a2feef8.aw.do(Unknown Source) at com.aspose.slides.ms.pbdb106a0.p6a2feef8.aw.do(Unknown Source) at com.aspose.slides.ms.pbdb106a0.p6a2feef8.aw.do(Unknown Source) at com.aspose.slides.p6a2feef8.af.do(Unknown Source) - locked <0x00000007bac1a908> (a java.lang.Object) at com.aspose.slides.hc.do(Unknown Source) at com.aspose.slides.bvq.if(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq.do(Unknown Source) at com.aspose.slides.bvq. (Unknown Source) at com.aspose.slides.TextFrame.do(Unknown Source) at com.aspose.slides.TextFrame.do(Unknown Source) at com.aspose.slides.TextFrame.else(Unknown Source) at com.aspose.slides.buy.do(Unknown Source) at com.aspose.slides.blj.int(Unknown Source) at com.aspose.slides.rk.byte(Unknown Source) at com.aspose.slides.aht.do(Unknown Source) at com.aspose.slides.ta.int(Unknown Source) at com.aspose.slides.ta.else(Unknown Source) at com.aspose.slides.os.int(Unknown Source) at com.aspose.slides.os.do(Unknown Source) at com.aspose.slides.ta.int(Unknown Source) at com.aspose.slides.ta.else(Unknown Source) at com.aspose.slides.mu.do(Unknown Source) at com.aspose.slides.ta.int(Unknown Source) at com.aspose.slides.ta.else(Unknown Source) at com.aspose.slides.it.int(Unknown Source) at com.aspose.slides.Chart.do(Unknown Source) at com.aspose.slides.GroupShape.do(Unknown Source) at com.aspose.slides.Slide.for(Unknown Source) at com.aspose.slides.Slide.do(Unknown Source) at com.aspose.slides.Slide.do(Unknown Source) at com.aspose.slides.bgv.do(Unknown Source) at com.aspose.slides.bgv.if(Unknown Source) at com.aspose.slides.Presentation.do(Unknown Source) at com.aspose.slides.Presentation.if(Unknown Source) at com.aspose.slides.Presentation.save(Unknown Source) at com.atlassian.plugins.conversion.convert.image.SlidesConverter.convertDocDirect(SlidesConverter.java:83) at com.atlassian.confluence.plugins.conversion.impl.runnable.JVMConversionRunnable.doWork(JVMConversionRunnable.java:83) at com.atlassian.confluence.plugins.conversion.impl.runnable.ConversionRunnable.run(ConversionRunnable.java:36) at com.atlassian.confluence.plugins.conversion.impl.runnable.JVMConversionRunnable.run(JVMConversionRunnable.java:22) 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:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Locked ownable synchronizers: - 0x00000006e2064818> (a java.util.concurrent.ThreadPoolExecutor$Worker)
UPD: investigation details here: https://bulldogwiki.internal.atlassian.com/wiki/display/CSE/Document+Conversion%3A+PSR-62
- duplicates
-
CONFSERVER-54770 Large PPTX File Conversion Service causes OutOfMemory
- Closed
- is related to
-
CONFSERVER-57643 PPTX File Conversion Service causes high CPU and/or memory usage because of Aspose Slides InterruptMonitor is not implemented
- Closed
-
CONFSERVER-45209 PPTX File Conversion Service causes Sustained CPU Spike
- Closed
-
CONFSERVER-74694 Full GC and OOME happened when preview pptx with big chart
- Gathering Impact
- is blocked by
-
PSR-62 Loading...
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...