Author: toad
Date: 2009-03-17 23:20:32 +0000 (Tue, 17 Mar 2009)
New Revision: 26071

Modified:
   branches/db4o/freenet/src/freenet/support/io/BaseFileBucket.java
   branches/db4o/freenet/src/freenet/support/io/FileBucket.java
   branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
Log:
Fix deleting shadowed tempfiles on exit, and never deleting even if 
deleteOnExit=true if it is a parameter.
Paranoia, logging.


Modified: branches/db4o/freenet/src/freenet/support/io/BaseFileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/BaseFileBucket.java    
2009-03-17 23:18:47 UTC (rev 26070)
+++ branches/db4o/freenet/src/freenet/support/io/BaseFileBucket.java    
2009-03-17 23:20:32 UTC (rev 26071)
@@ -35,15 +35,16 @@
        public BaseFileBucket(File file) {
                if(file == null) throw new NullPointerException();
                this.length = file.length();
-               if(deleteOnExit()) {
-                       try {
-                               file.deleteOnExit();
-                       } catch (NullPointerException e) {
-                               
if(WrapperManager.hasShutdownHookBeenTriggered()) {
-                                       Logger.normal(this, 
"NullPointerException setting deleteOnExit while shutting down - buggy JVM 
code: "+e, e);
-                               } else {
-                                       Logger.error(this, "Caught "+e+" doing 
deleteOnExit() for "+file+" - JVM bug ????");
-                               }
+       }
+       
+       protected void setDeleteOnExit(File file) {
+               try {
+                       file.deleteOnExit();
+               } catch (NullPointerException e) {
+                       if(WrapperManager.hasShutdownHookBeenTriggered()) {
+                               Logger.normal(this, "NullPointerException 
setting deleteOnExit while shutting down - buggy JVM code: "+e, e);
+                       } else {
+                               Logger.error(this, "Caught "+e+" doing 
deleteOnExit() for "+file+" - JVM bug ????");
                        }
                }
        }

Modified: branches/db4o/freenet/src/freenet/support/io/FileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/FileBucket.java        
2009-03-17 23:18:47 UTC (rev 26070)
+++ branches/db4o/freenet/src/freenet/support/io/FileBucket.java        
2009-03-17 23:20:32 UTC (rev 26071)
@@ -8,6 +8,7 @@
 
 import com.db4o.ObjectContainer;
 
+import freenet.support.Logger;
 import freenet.support.api.Bucket;
 
 /**
@@ -55,6 +56,8 @@
                this.deleteOnFinalize = deleteOnFinalize;
                this.deleteOnFree = deleteOnFree;
                this.deleteOnExit = deleteOnExit;
+               if(deleteOnExit)
+                       setDeleteOnExit(file);
                // Useful for finding temp file leaks.
                // System.err.println("-- FileBucket.ctr(0) -- " +
                // file.getAbsolutePath());
@@ -112,6 +115,7 @@
        }
 
        public void removeFrom(ObjectContainer container) {
+               Logger.minor(this, "Removing "+this);
                container.activate(file, 5);
                container.delete(file);
                container.delete(this);
@@ -120,7 +124,19 @@
        public void objectOnActivate(ObjectContainer container) {
                container.activate(file, 5);
        }
-
+       
+       public void objectOnNew(ObjectContainer container) {
+               Logger.minor(this, "Storing "+this, new Exception("debug"));
+       }
+       
+       public void objectOnUpdate(ObjectContainer container) {
+               Logger.minor(this, "Updating "+this, new Exception("debug"));
+       }
+       
+       public void objectOnDelete(ObjectContainer container) {
+               Logger.minor(this, "Deleting "+this, new Exception("debug"));
+       }
+       
        public Bucket createShadow() throws IOException {
                String fnam = new String(file.getPath());
                File newFile = new File(fnam);

Modified: branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2009-03-17 23:18:47 UTC (rev 26070)
+++ branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2009-03-17 23:20:32 UTC (rev 26071)
@@ -49,6 +49,8 @@
                                        this,
                                        "Initializing TempFileBucket(" + 
getFile());
                }
+               if(deleteOnFree)
+                       setDeleteOnExit(getFile());
        }
 
        @Override
@@ -91,7 +93,7 @@
 
        @Override
        protected boolean deleteOnExit() {
-               return true;
+               return deleteOnFree;
        }
 
        public void storeTo(ObjectContainer container) {
@@ -109,6 +111,7 @@
        public Bucket createShadow() throws IOException {
                TempFileBucket ret = new TempFileBucket(filenameID, generator, 
false);
                ret.setReadOnly();
+               if(!getFile().exists()) Logger.error(this, "File does not exist 
when creating shadow: "+getFile());
                return ret;
        }
 }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to