Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » UploadWidget: temporary files
UploadWidget: temporary files [message #639098] Mon, 15 November 2010 09:58 Go to next message
Oliver B. is currently offline Oliver B.Friend
Messages: 38
Registered: November 2010
Member
While testing the upload widget, I found out that the underlying apache library creates temporary files for bigger uploads. These files are created in the local temp directory of the server.

In some cases these files are never deleted to the point that my harddrive was full (testing with big files).

This is reproduceable with the upload demo. In some cases the files are deleted. But most of the time they are never deleted even after the shutdown of the server.

From my understanding these temp files should be deleted automatically by the gargabe collector after there is no more reference to it.

I made a patch which deletes the temporary files after a reset/dispose of the upload-widget.
Re: UploadWidget: temporary files [message #639101 is a reply to message #639098] Mon, 15 November 2010 10:01 Go to previous messageGo to next message
Oliver B. is currently offline Oliver B.Friend
Messages: 38
Registered: November 2010
Member
Patch:


### Eclipse Workspace Patch 1.0
#P org.eclipse.rwt.widgets.upload
Index: src/org/eclipse/rwt/widgets/upload/servlet/FileUploadServiceHandler.java
===================================================================
RCS file: /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets.upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUploadServiceHandler.java,v
retrieving revision 1.6
diff -u -r1.6 FileUploadServiceHandler.java
--- src/org/eclipse/rwt/widgets/upload/servlet/FileUploadServiceHandler.java	5 May 2010 11:40:29 -0000	1.6
+++ src/org/eclipse/rwt/widgets/upload/servlet/FileUploadServiceHandler.java	15 Nov 2010 09:32:22 -0000
@@ -141,6 +141,7 @@
           if( !fileItem.isFormField() ) {
             fileUploadStorageitem.setFileInputStream( fileItem.getInputStream() );
             fileUploadStorageitem.setContentType(fileItem.getContentType());
+            fileUploadStorageitem.setFileItem(fileItem);
           }
         }
       } catch( final FileUploadException e ) {
Index: src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage.java
===================================================================
RCS file: /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets.upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage.java,v
retrieving revision 1.1
diff -u -r1.1 FileUploadStorage.java
--- src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage.java	5 Jun 2008 10:47:03 -0000	1.1
+++ src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage.java	15 Nov 2010 09:32:22 -0000
@@ -43,6 +43,12 @@
    * Sets a {@link FileUploadStorageItem} or removes an existing one, if the item is null.
    */
   public void setUploadStorageItem(final String key, final FileUploadStorageItem item) {
+    FileUploadStorageItem oldItem = getUploadStorageItem(key);
+    if( oldItem != null )
+    {
+      oldItem.reset();
+    }
+    
     if( item == null ) {
       items.remove( key );
     } else {
Index: src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorageItem.java
===================================================================
RCS file: /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets.upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorageItem.java,v
retrieving revision 1.4
diff -u -r1.4 FileUploadStorageItem.java
--- src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorageItem.java	5 May 2010 11:40:29 -0000	1.4
+++ src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorageItem.java	15 Nov 2010 09:32:22 -0000
@@ -13,6 +13,8 @@
 
 import java.io.InputStream;
 
+import org.apache.commons.fileupload.FileItem;
+
 
 /**
  * This Pojo is used to store a file reference and a progress listener.
@@ -24,16 +26,24 @@
  * @author stefan.roeck
  */
 public class FileUploadStorageItem {
+  private FileItem fileItem;
   private InputStream fileInputStream;
   private String contentType;
   private String uploadProcessId;
   private long bytesRead;
   private long contentLength;
-  private Exception exception;
-  
+  private Exception exception;  
   
   public FileUploadStorageItem() {
     reset();
+  }  
+
+  public synchronized FileItem getFileItem() {
+    return this.fileItem;
+  }
+  
+  public synchronized void setFileItem(final FileItem fileItem) {
+    this.fileItem = fileItem;
   }
   
   public synchronized InputStream getFileInputStream() {
@@ -74,6 +84,13 @@
   }
 
   public synchronized void reset() {
+    if(fileItem != null)
+    {
+      // clean temp files
+      fileItem.delete();
+    }
+    
+    fileItem = null;
     contentLength = -1;
     bytesRead = -1;
     contentType = null;


Re: UploadWidget: temporary files [message #639137 is a reply to message #639101] Mon, 15 November 2010 11:42 Go to previous messageGo to next message
Ivan Furnadjiev is currently offline Ivan FurnadjievFriend
Messages: 2426
Registered: July 2009
Location: Sofia, Bulgaria
Senior Member
Hi Oliver,
please open a bugzilla and attach your patch there.
Thanks,
Ivan

On 15.11.2010 12:01 PM, Oliver wrote:
> Patch:
>
>
>
> ### Eclipse Workspace Patch 1.0
> #P org.eclipse.rwt.widgets.upload
> Index:
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadService Handler.java
> ============================================================ =======
> RCS file:
> /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets. upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUpload ServiceHandler.java,v
> retrieving revision 1.6
> diff -u -r1.6 FileUploadServiceHandler.java
> ---
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadService Handler.java
> 5 May 2010 11:40:29 -0000 1.6
> +++
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadService Handler.java
> 15 Nov 2010 09:32:22 -0000
> @@ -141,6 +141,7 @@
> if( !fileItem.isFormField() ) {
> fileUploadStorageitem.setFileInputStream(
> fileItem.getInputStream() );
>
> fileUploadStorageitem.setContentType(fileItem.getContentType ());
> + fileUploadStorageitem.setFileItem(fileItem);
> }
> }
> } catch( final FileUploadException e ) {
> Index: src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage .java
> ============================================================ =======
> RCS file:
> /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets. upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUpload Storage.java,v
> retrieving revision 1.1
> diff -u -r1.1 FileUploadStorage.java
> ---
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage .java 5
> Jun 2008 10:47:03 -0000 1.1
> +++
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage .java
> 15 Nov 2010 09:32:22 -0000
> @@ -43,6 +43,12 @@
> * Sets a {@link FileUploadStorageItem} or removes an existing one,
> if the item is null.
> */
> public void setUploadStorageItem(final String key, final
> FileUploadStorageItem item) {
> + FileUploadStorageItem oldItem = getUploadStorageItem(key);
> + if( oldItem != null )
> + {
> + oldItem.reset();
> + }
> + if( item == null ) {
> items.remove( key );
> } else {
> Index:
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage Item.java
> ============================================================ =======
> RCS file:
> /cvsroot/rt/org.eclipse.rap/sandbox/org.eclipse.rwt.widgets. upload/src/org/eclipse/rwt/widgets/upload/servlet/FileUpload StorageItem.java,v
> retrieving revision 1.4
> diff -u -r1.4 FileUploadStorageItem.java
> ---
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage Item.java
> 5 May 2010 11:40:29 -0000 1.4
> +++
> src/org/eclipse/rwt/widgets/upload/servlet/FileUploadStorage Item.java
> 15 Nov 2010 09:32:22 -0000
> @@ -13,6 +13,8 @@
>
> import java.io.InputStream;
>
> +import org.apache.commons.fileupload.FileItem;
> +
>
> /**
> * This Pojo is used to store a file reference and a progress listener.
> @@ -24,16 +26,24 @@
> * @author stefan.roeck
> */
> public class FileUploadStorageItem {
> + private FileItem fileItem;
> private InputStream fileInputStream;
> private String contentType;
> private String uploadProcessId;
> private long bytesRead;
> private long contentLength;
> - private Exception exception;
> - + private Exception exception; public FileUploadStorageItem() {
> reset();
> + } +
> + public synchronized FileItem getFileItem() {
> + return this.fileItem;
> + }
> + + public synchronized void setFileItem(final FileItem fileItem) {
> + this.fileItem = fileItem;
> }
> public synchronized InputStream getFileInputStream() {
> @@ -74,6 +84,13 @@
> }
>
> public synchronized void reset() {
> + if(fileItem != null)
> + {
> + // clean temp files
> + fileItem.delete();
> + }
> + + fileItem = null;
> contentLength = -1;
> bytesRead = -1;
> contentType = null;
>
>
>
Re: UploadWidget: temporary files [message #639144 is a reply to message #639098] Mon, 15 November 2010 12:23 Go to previous message
Oliver B. is currently offline Oliver B.Friend
Messages: 38
Registered: November 2010
Member
Hi Ivan,

I have opened the bugzilla entry:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=330233

Regards,
Oliver
Previous Topic:[ANN] RAP 1.4 M3 is available
Next Topic:Customizing Tree Appearance
Goto Forum:
  


Current Time: Fri Apr 26 17:36:37 GMT 2024

Powered by FUDForum. Page generated in 0.03737 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top