axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Akitoshi Yoshida (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Closed: (AXIS-2782) AttachmentPart does not remove its temporary Axis???.att file, created by ManagedMemoryDataSource, if this file is created by its flushToDisk method
Date Thu, 02 Apr 2009 11:14:13 GMT

     [ https://issues.apache.org/jira/browse/AXIS-2782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Akitoshi Yoshida closed AXIS-2782.
----------------------------------

    Resolution: Invalid

I created this issue but upon further analysis, It seems attribute attachmentFile will be
always set.
So this does not seem to be the cause.
Therefore, I am closing this issue.
aki

> AttachmentPart does not remove its temporary Axis???.att file, created by ManagedMemoryDataSource,
if this file is created by its flushToDisk method
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS-2782
>                 URL: https://issues.apache.org/jira/browse/AXIS-2782
>             Project: Axis
>          Issue Type: Bug
>          Components: Basic Architecture
>    Affects Versions: 1.4
>         Environment: Windows XP
> Axis 1.4
>            Reporter: Akitoshi Yoshida
>             Fix For: current (nightly)
>
>         Attachments: AttachmentPart.zip
>
>
> org.apache.axis.attachments.AttachmentPart has its resource clean up method dispose(),
which gets called when the message is garbage collected.
> This AttachmentPart uses org.apache.axis.attachments.ManagedMemoryDataSource to hold
the attachment content.
> The ManagedMemoryDataSource class may create a temporary Axis???.att file and flush the
content into this file when there are too many mesages held in memoryh.
> When this happens, unfortunately the ManagedMemoryDataSource object's delete() method
is not called, when its associated AttachementPart object's dispose() method gets called,
as attribute attachmentFile is null as shown in the following code segment:
>     public synchronized void dispose() {
>         if (attachmentFile != null) {
>             javax.activation.DataSource ds = datahandler.getDataSource();
>             if (ds instanceof ManagedMemoryDataSource) {
>                 ((ManagedMemoryDataSource) ds).delete(); //and delete the file
>             } else {
>                 File f = new File(attachmentFile);
>                 //no need to check for existence here.
>                 f.delete();
>             }
>             //set the filename to null to stop repeated use
>             setAttachmentFile(null);
>         }
> Consequently, this temporary file is not removed.
> To fix this problem, I think the ManagedMemoryDataSource's delete method needs to be
called independent of the attachmentFile attribute value, as in
>     public synchronized void dispose() {
>         javax.activation.DataSource ds = datahandler.getDataSource();
>         // delete the ManagedMemoryDataSource (may have been flushed into a temp file)
>         if (ds instanceof ManagedMemoryDataSource) {
>             ((ManagedMemoryDataSource) ds).delete(); //and delete the file
>         }
>         if (attachmentFile != null) {
>             File f = new File(attachmentFile);
>             //no need to check for existence here.
>             f.delete();
>             //set the filename to null to stop repeated use
>             setAttachmentFile(null);
>         }
> Regards, aki

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message