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