[ 
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]

Reply via email to