[ https://issues.apache.org/jira/browse/SYNAPSE-212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Asankha C. Perera updated SYNAPSE-212: -------------------------------------- Fix Version/s: 1.2 postponing to fix post 1.1.1 > XSLTMediator doesn't close/delete temporary files properly > ---------------------------------------------------------- > > Key: SYNAPSE-212 > URL: https://issues.apache.org/jira/browse/SYNAPSE-212 > Project: Synapse > Issue Type: Bug > Components: Core > Affects Versions: 1.1, NIGHTLY > Reporter: Andreas Veithen > Fix For: 1.2 > > > When a temporary file is used for the transformation result, XSLTMediator > will read it back using the following instructions: > StAXOMBuilder builder = new StAXOMBuilder(new > FileInputStream(tempTargetFile)); > result = builder.getDocumentElement(); > Since Axiom constructs the XML tree on demand, this will actually not read > the entire file but only a small part of it. Also, since nobody ever closes > the input stream explicitly, the file will only be closed when the > FileInputStream object is garbage collected. > Immediately after the above instructions, XSLTMediator executes the following > piece of code: > boolean deleted = tempTargetFile.delete(); > if (!deleted) { > tempTargetFile.deleteOnExit(); > } > Since the file is still open at that moment, on Windows platforms, the delete > operation will fail. Therefore the file will not be deleted until Synapse is > shut down or restarted. On Unix systems, only the directory entry will be > removed, but not the inode (and the content). On these systems, the file will > be deleted by the OS when the file is closed, i.e. when the FileInputStream > object is garbage collected. > This problem is not easy to solve because the input stream can't be closed > inside the mediate method (the whole purpose of having a temporary file being > to allow streaming). It can only be closed (and deleted) safely once the > sequence containing the XSLT mediation is completed and the message has been > sent. Unfortunately, there seems to be no generic mechanism in Synapse to do > this. Actually what would be needed is something similar to the flowComplete > method in org.apache.axis2.engine.Handler. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]