Author: toad
Date: 2009-03-07 20:46:51 +0000 (Sat, 07 Mar 2009)
New Revision: 25951

Modified:
   branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
Log:
freeJob/clearJob not members!


Modified: 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java    
    2009-03-07 20:46:15 UTC (rev 25950)
+++ 
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java    
    2009-03-07 20:46:51 UTC (rev 25951)
@@ -59,39 +59,6 @@
                return null;
        }
 
-       private final DBJob freeJob = new DBJob() {
-               
-               public void run(ObjectContainer container, ClientContext 
context) {
-                       SegmentedChainBucketSegment segment = null;
-                       synchronized(this) {
-                               if(!segments.isEmpty())
-                                       segment = segments.remove(0);
-                       }
-                       if(segment != null) {
-                               container.activate(segment, 1);
-                               if(Logger.shouldLog(Logger.MINOR, 
SegmentedBucketChainBucket.this)) 
-                                       
Logger.minor(SegmentedBucketChainBucket.this, "Freeing segment "+segment);
-                               segment.activateBuckets(container);
-                               segment.free();
-                               segment.removeFrom(container);
-                               synchronized(this) {
-                                       if(!segments.isEmpty()) {
-                                               dbJobRunner.queue(freeJob, 
NativeThread.HIGH_PRIORITY, true);
-                                               container.store(this);
-                                               return;
-                                       }
-                               }
-                       }
-                       container.delete(segments);
-                       container.delete(SegmentedBucketChainBucket.this);
-                       synchronized(SegmentedBucketChainBucket.this) {
-                               if(killMe == null) return;
-                       }
-                       dbJobRunner.removeRestartJob(killMe, 
NativeThread.HIGH_PRIORITY, container);
-               }
-               
-       };
-       
        public void free() {
                synchronized(this) {
                        freed = true;
@@ -99,6 +66,40 @@
                }
                
                // Due to memory issues, we cannot complete the cleanup before 
returning, especially if we are already on the database thread...
+               DBJob freeJob = new DBJob() {
+                       
+                       public void run(ObjectContainer container, 
ClientContext context) {
+                               SegmentedChainBucketSegment segment = null;
+                               synchronized(this) {
+                                       if(!segments.isEmpty())
+                                               segment = segments.remove(0);
+                               }
+                               if(segment != null) {
+                                       container.activate(segment, 1);
+                                       if(Logger.shouldLog(Logger.MINOR, 
SegmentedBucketChainBucket.this)) 
+                                               
Logger.minor(SegmentedBucketChainBucket.this, "Freeing segment "+segment);
+                                       segment.activateBuckets(container);
+                                       segment.free();
+                                       segment.removeFrom(container);
+                                       synchronized(this) {
+                                               if(!segments.isEmpty()) {
+                                                       dbJobRunner.queue(this, 
NativeThread.HIGH_PRIORITY, true);
+                                                       container.store(this);
+                                                       return;
+                                               }
+                                       }
+                               }
+                               container.delete(segments);
+                               
container.delete(SegmentedBucketChainBucket.this);
+                               synchronized(SegmentedBucketChainBucket.this) {
+                                       if(killMe == null) return;
+                               }
+                               dbJobRunner.removeRestartJob(killMe, 
NativeThread.HIGH_PRIORITY, container);
+                               container.delete(killMe);
+                       }
+                       
+               };
+               
                dbJobRunner.queue(freeJob, NativeThread.HIGH_PRIORITY, true);
        }
 
@@ -433,37 +434,6 @@
                return buckets;
        }
        
-       private final DBJob clearJob = new DBJob() {
-               
-               public void run(ObjectContainer container, ClientContext 
context) {
-                       SegmentedChainBucketSegment segment = null;
-                       synchronized(this) {
-                               if(!segments.isEmpty())
-                                       segment = segments.remove(0);
-                       }
-                       if(segment != null) {
-                               container.activate(segment, 1);
-                               if(Logger.shouldLog(Logger.MINOR, 
SegmentedBucketChainBucket.this)) 
-                                       
Logger.minor(SegmentedBucketChainBucket.this, "Freeing segment "+segment);
-                               segment.clear(container);
-                               synchronized(this) {
-                                       if(!segments.isEmpty()) {
-                                               dbJobRunner.queue(clearJob, 
NativeThread.HIGH_PRIORITY, true);
-                                               container.store(segments);
-                                               
container.store(SegmentedBucketChainBucket.this);
-                                               return;
-                                       }
-                               }
-                       }
-                       container.delete(segments);
-                       container.delete(SegmentedBucketChainBucket.this);
-                       synchronized(SegmentedBucketChainBucket.this) {
-                               if(killMe == null) return;
-                       }
-                       dbJobRunner.removeRestartJob(killMe, 
NativeThread.HIGH_PRIORITY, container);
-               }
-
-       };
        
        private boolean clearing;
        
@@ -472,6 +442,38 @@
                synchronized(this) {
                        clearing = true;
                }
+               DBJob clearJob = new DBJob() {
+                       
+                       public void run(ObjectContainer container, 
ClientContext context) {
+                               SegmentedChainBucketSegment segment = null;
+                               synchronized(this) {
+                                       if(!segments.isEmpty())
+                                               segment = segments.remove(0);
+                               }
+                               if(segment != null) {
+                                       container.activate(segment, 1);
+                                       if(Logger.shouldLog(Logger.MINOR, 
SegmentedBucketChainBucket.this)) 
+                                               
Logger.minor(SegmentedBucketChainBucket.this, "Freeing segment "+segment);
+                                       segment.clear(container);
+                                       synchronized(this) {
+                                               if(!segments.isEmpty()) {
+                                                       dbJobRunner.queue(this, 
NativeThread.HIGH_PRIORITY, true);
+                                                       
container.store(segments);
+                                                       
container.store(SegmentedBucketChainBucket.this);
+                                                       return;
+                                               }
+                                       }
+                               }
+                               container.delete(segments);
+                               
container.delete(SegmentedBucketChainBucket.this);
+                               synchronized(SegmentedBucketChainBucket.this) {
+                                       if(killMe == null) return;
+                               }
+                               dbJobRunner.removeRestartJob(killMe, 
NativeThread.HIGH_PRIORITY, container);
+                               container.delete(killMe);
+                       }
+
+               };
                dbJobRunner.queue(clearJob, NativeThread.HIGH_PRIORITY-1, true);
        }
 

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

Reply via email to