Author: toad
Date: 2009-03-07 14:44:56 +0000 (Sat, 07 Mar 2009)
New Revision: 25938

Modified:
   branches/db4o/freenet/src/freenet/support/io/PersistentTempFileBucket.java
   branches/db4o/freenet/src/freenet/support/io/TempBucketFactory.java
   branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
Log:
Fix shadow buckets for tempfile-based buckets: we were removing the underlying 
tempfile on free(), this is *bad*!


Modified: 
branches/db4o/freenet/src/freenet/support/io/PersistentTempFileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/PersistentTempFileBucket.java  
2009-03-07 14:13:29 UTC (rev 25937)
+++ branches/db4o/freenet/src/freenet/support/io/PersistentTempFileBucket.java  
2009-03-07 14:44:56 UTC (rev 25938)
@@ -8,7 +8,7 @@
 public class PersistentTempFileBucket extends TempFileBucket {
 
        protected PersistentTempFileBucket(long id, FilenameGenerator 
generator) {
-               super(id, generator);
+               super(id, generator, false);
        }
 
        @Override

Modified: branches/db4o/freenet/src/freenet/support/io/TempBucketFactory.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/TempBucketFactory.java 
2009-03-07 14:13:29 UTC (rev 25937)
+++ branches/db4o/freenet/src/freenet/support/io/TempBucketFactory.java 
2009-03-07 14:44:56 UTC (rev 25938)
@@ -543,7 +543,7 @@
        private final Queue<WeakReference<TempBucket>> ramBucketQueue = new 
LinkedBlockingQueue<WeakReference<TempBucket>>();
        
        private Bucket _makeFileBucket() {
-               Bucket fileBucket = new 
TempFileBucket(filenameGenerator.makeRandomFilename(), filenameGenerator);
+               Bucket fileBucket = new 
TempFileBucket(filenameGenerator.makeRandomFilename(), filenameGenerator, true);
                // Do we want it to be encrypted?
                return (reallyEncrypt ? new 
PaddedEphemerallyEncryptedBucket(fileBucket, 1024, strongPRNG, weakPRNG) : 
fileBucket);
        }

Modified: branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2009-03-07 14:13:29 UTC (rev 25937)
+++ branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2009-03-07 14:44:56 UTC (rev 25938)
@@ -24,6 +24,7 @@
        final FilenameGenerator generator;
        private static boolean logDebug = true;
        private boolean readOnly;
+       private final boolean deleteOnFinalize;
        /**
         * Constructor for the TempFileBucket object
         *
@@ -31,10 +32,11 @@
         */
        public TempFileBucket(
                long id,
-               FilenameGenerator generator) {
+               FilenameGenerator generator, boolean deleteOnFinalize) {
                super(generator.getFilename(id));
                this.filenameID = id;
                this.generator = generator;
+               this.deleteOnFinalize = deleteOnFinalize;
                synchronized(this) {
                        logDebug = Logger.shouldLog(Logger.DEBUG, this);
                }
@@ -53,7 +55,7 @@
        protected boolean deleteOnFinalize() {
                // Make sure finalize wacks temp file 
                // if it is not explictly freed.
-               return true;
+               return deleteOnFinalize;
        }
        
        @Override
@@ -105,7 +107,7 @@
        }
 
        public Bucket createShadow() throws IOException {
-               TempFileBucket ret = new TempFileBucket(filenameID, generator);
+               TempFileBucket ret = new TempFileBucket(filenameID, generator, 
false);
                ret.setReadOnly();
                return ret;
        }

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

Reply via email to