Author: toad
Date: 2008-06-17 18:03:30 +0000 (Tue, 17 Jun 2008)
New Revision: 20409

Modified:
   branches/db4o/freenet/src/freenet/clients/http/QueueToadlet.java
Log:
Finish fixing QueueToadlet.
Occasionally some now-deleted completion alerts may show temporarily on the web 
interface.

Modified: branches/db4o/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- branches/db4o/freenet/src/freenet/clients/http/QueueToadlet.java    
2008-06-17 18:01:05 UTC (rev 20408)
+++ branches/db4o/freenet/src/freenet/clients/http/QueueToadlet.java    
2008-06-17 18:03:30 UTC (rev 20409)
@@ -1139,20 +1139,26 @@
                if(!readCompletedIdentifiers(completedIdentifiersList)) {
                        readCompletedIdentifiers(completedIdentifiersListNew);
                }
-               String[] identifiers;
-               synchronized(completedRequestIdentifiers) {
-                       identifiers = (String[]) 
completedRequestIdentifiers.toArray(new 
String[completedRequestIdentifiers.size()]);
-               }
-               for(int i=0;i<identifiers.length;i++) {
-                       ClientRequest req = 
fcp.getGlobalRequest(identifiers[i]);
-                       if(req == null) {
+               core.clientContext.jobRunner.queue(new DBJob() {
+
+                       public void run(ObjectContainer container, 
ClientContext context) {
+                               String[] identifiers;
                                synchronized(completedRequestIdentifiers) {
-                                       
completedRequestIdentifiers.remove(identifiers[i]);
+                                       identifiers = (String[]) 
completedRequestIdentifiers.toArray(new 
String[completedRequestIdentifiers.size()]);
                                }
-                               continue;
+                               for(int i=0;i<identifiers.length;i++) {
+                                       ClientRequest req = 
fcp.getGlobalRequest(identifiers[i], container);
+                                       if(req == null) {
+                                               
synchronized(completedRequestIdentifiers) {
+                                                       
completedRequestIdentifiers.remove(identifiers[i]);
+                                               }
+                                               continue;
+                                       }
+                                       registerAlert(req);
+                               }
                        }
-                       registerAlert(req);
-               }
+                       
+               }, NativeThread.HIGH_PRIORITY, false);
        }

        private boolean readCompletedIdentifiers(File file) {


Reply via email to