Author: toad
Date: 2006-12-19 15:01:04 +0000 (Tue, 19 Dec 2006)
New Revision: 11483

Modified:
   trunk/freenet/src/freenet/support/io/DelayedFreeBucket.java
Log:


Modified: trunk/freenet/src/freenet/support/io/DelayedFreeBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/DelayedFreeBucket.java 2006-12-19 
15:00:43 UTC (rev 11482)
+++ trunk/freenet/src/freenet/support/io/DelayedFreeBucket.java 2006-12-19 
15:01:04 UTC (rev 11483)
@@ -28,7 +28,7 @@
        public DelayedFreeBucket(SimpleFieldSet fs, RandomSource random, 
PersistentFileTracker f) throws CannotCreateFromFieldSetException {
                factory = f;
                freed = false;
-               bucket = SerializableToFieldSetBucketUtil.create(fs, random, f);
+               bucket = 
SerializableToFieldSetBucketUtil.create(fs.subset("Underlying"), random, f);
        }

        public OutputStream getOutputStream() throws IOException {
@@ -60,13 +60,18 @@
        public void free() {
                synchronized(this) { // mutex on just this method; make a 
separate lock if necessary to lock the above
                        if(freed) return;
+                       if(Logger.shouldLog(Logger.MINOR, this)) 
+                               Logger.minor(this, "Freeing "+this+" 
underlying="+bucket, new Exception("debug"));
                        this.factory.delayedFreeBucket(bucket);
                        freed = true;
                }
        }

        public SimpleFieldSet toFieldSet() {
-               if(freed) return null;
+               if(freed) {
+                       Logger.error(this, "Cannot serialize because already 
freed: "+this);
+                       return null;
+               }
                SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "DelayedFreeBucket");
                if(bucket instanceof SerializableToFieldSetBucket) {


Reply via email to