Bug 62101 - When writing the workbook to outputstream, getting weird error
Summary: When writing the workbook to outputstream, getting weird error
Status: RESOLVED WORKSFORME
Alias: None
Product: POI
Classification: Unclassified
Component: XSSF (show other bugs)
Version: unspecified
Hardware: Other Linux
: P2 major (vote)
Target Milestone: ---
Assignee: POI Developers List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-02-13 10:14 UTC by Laxmi Narayan
Modified: 2018-03-17 23:31 UTC (History)
0 users



Attachments
Java code that creates the error (74.55 KB, text/plain)
2018-02-13 10:14 UTC, Laxmi Narayan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Laxmi Narayan 2018-02-13 10:14:03 UTC
Created attachment 35729 [details]
Java code that creates the error

The following is the error stacktrace:
 org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Rule M2.4 exception : this error should NEVER happen! Please raise a bug at https://bz.apache.org/bugzilla/enter_bug.cgi?product=POI and attach a file that triggers it, thanks!
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.getContentType(ContentTypeManager.java:343)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.removeContentType(ContentTypeManager.java:256)
at org.apache.poi.openxml4j.opc.OPCPackage.removePart(OPCPackage.java:958)
at org.apache.poi.openxml4j.opc.PackagePart.getOutputStream(PackagePart.java:522)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.commit(XSSFWorkbook.java:1687)
at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:464)
at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:211)
at ext.ikea.icomp.report.util.SupplierReportUtil.finalizeReport(SupplierReportUtil.java:2732)
at ext.ikea.icomp.report.IKEACSISupplierRequirementReportFormProcessor.createWTPartReport(IKEACSISupplierRequirementReportFormProcessor.java:710)
at ext.ikea.icomp.report.IKEACSISupplierRequirementReportFormProcessor.doOperation(IKEACSISupplierRequirementReportFormProcessor.java:449)
at com.ptc.core.components.forms.DefaultFormProcessorController.executeDoOperation(DefaultFormProcessorController.java:538)
at com.ptc.core.components.forms.DefaultFormProcessorController.performExecuteDoOperationAndPostProcess(DefaultFormProcessorController.java:342)
at com.ptc.core.components.forms.DefaultFormProcessorController.execute(DefaultFormProcessorController.java:263)
at com.ptc.core.components.forms.FormDispatcher.callControllerExecute(FormDispatcher.java:146)
at com.ptc.core.components.forms.FormDispatcher.callFormProcessorController(FormDispatcher.java:116)
at com.ptc.core.components.forms.FormDispatcher.execute(FormDispatcher.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.ptc.netmarkets.util.beans.NmCommandBean.execute(NmCommandBean.java:2005)
at com.ptc.jca.mvc.controllers.ActionController.executeWizardAction(ActionController.java:211)
at com.ptc.jca.mvc.controllers.ActionController.processRequest(ActionController.java:114)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at com.ptc.core.ui.validation.URLValidationFilter.doFilter(URLValidationFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at wt.httpgw.filter.WTContextBeanFilter.doWithWtContextBeanHandler(WTContextBeanFilter.java:104)
at wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at wt.servlet.CompressionFilter.doFilter(CompressionFilter.java:301)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:335)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1660)
at wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:486)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1465)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Comment 1 PJ Fanning 2018-02-13 17:31:02 UTC
Thanks Laxmi for the test case. Would it be possible to rewrite it to have only imports from POI and other commonly available open source projects?
Comment 2 Laxmi Narayan 2018-02-14 07:55:40 UTC
It is not possible to rewrite this, because we have some API's which actually gives the needed result. Our system is a PLM system from PTC. Please let me know if you need any clarification.
Comment 3 Alain Fagot Bearez 2018-02-15 11:51:30 UTC
Comment on attachment 35729 [details]
Java code that creates the error

There are three methods in your code where the workbook is closed. The stack trace you submitted is typical of a situation where the workbook has been closed and the code tries to write it again.

I would suggest to set the wb variable to null right after closing. This way you will get a nice NullPointerException when the rest of your code will try to access the same report again. Thereafter, all you will need is to avoid the rest of your code calling a report that has already been finalized.
Comment 4 Dominik Stadler 2018-03-17 23:31:08 UTC
Seems to have been caused by multiple and too early closing of the Workbook.