[ https://issues.apache.org/jira/browse/FOP-3083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569878#comment-17569878 ]
Simon Steiner commented on FOP-3083: ------------------------------------ for linux to test: {code:java} @Test public void x() throws Exception { try { FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(new File(".").toURI()); fopFactoryBuilder.setStrictFOValidation(true); fopFactoryBuilder.setStrictUserConfigValidation(true); FopFactory fopFactory = fopFactoryBuilder.build(); try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) { Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, stream); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); Source src = new StreamSource(new File("test.fo")); Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(src, res); } } finally { Assert.assertTrue(isFileClosed(new File("example.jpg"))); } } private boolean isFileClosed(File file) throws Exception { Process plsof = new ProcessBuilder(new String[]{"lsof", "|", "grep", file.getAbsolutePath()}).start(); BufferedReader reader = new BufferedReader(new InputStreamReader(plsof.getInputStream())); String line; while((line=reader.readLine())!=null) { if(line.contains(file.getAbsolutePath())) { reader.close(); plsof.destroy(); return false; } } reader.close(); plsof.destroy(); return true; } {code} > Referenced JPG image is not closed when TransformerException is thrown by > transform() > ------------------------------------------------------------------------------------- > > Key: FOP-3083 > URL: https://issues.apache.org/jira/browse/FOP-3083 > Project: FOP > Issue Type: Bug > Components: renderer/pdf > Affects Versions: 2.7 > Environment: jdk-17.0.3.7-hotspot (Microsoft) > Reporter: Paul Sharp > Priority: Major > Attachments: Code snippet.txt, example.jpg, xsl-fo.xml > > > We are trying to implement a workflow where the FO file and the images > referenced within, are stored in a temporary directory which we can clear > down once complete. > When we disable strict FO validation, the approach works fine. > However, when strict FO validation is enabled, a TransformerException is > thrown (as expected for a poor FO). But it appears to keep the image file > open until the JVM is shut down. > I have checked through previous Jira entries and tried many other suggestions > (clearing the image cache etc.) but we cannot seem to get the file closed. > The attached example code snippet illustrates the behaviour. We would expect > the example.jpg file to be deleted after processing. > I hope I've provided enough here. Let me know if more detail is required. -- This message was sent by Atlassian Jira (v8.20.10#820010)