Author: toad
Date: 2009-03-17 23:16:37 +0000 (Tue, 17 Mar 2009)
New Revision: 26067

Modified:
   branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
Log:
Paranoia - yes this does happen, due to bugs...


Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2009-03-17 
17:16:45 UTC (rev 26066)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2009-03-17 
23:16:37 UTC (rev 26067)
@@ -218,10 +218,33 @@
                }
                synchronized(this) {
                        req = clientRequestsByIdentifier.get(identifier);
-                       boolean removedFromRunning;
-                       if(req == null)
-                               return false;
-                       else if(!((removedFromRunning = 
runningPersistentRequests.remove(req)) || 
completedUnackedRequests.remove(req))) {
+                       boolean removedFromRunning = false;
+                       if(req == null) {
+                               for(ClientRequest r : completedUnackedRequests) 
{
+                                       container.activate(r, 1);
+                                       
if(r.getIdentifier().equals(identifier)) {
+                                               req = r;
+                                               
completedUnackedRequests.remove(r);
+                                               Logger.error(this, "Found 
completed unacked request "+r+" for identifier "+r.getIdentifier()+" but not in 
clientRequestsByIdentifier!!");
+                                               break;
+                                       }
+                                       container.deactivate(r, 1);
+                               }
+                               if(req == null) {
+                                       for(ClientRequest r : 
runningPersistentRequests) {
+                                               container.activate(r, 1);
+                                               
if(r.getIdentifier().equals(identifier)) {
+                                                       req = r;
+                                                       
runningPersistentRequests.remove(r);
+                                                       removedFromRunning = 
true;
+                                                       Logger.error(this, 
"Found running request "+r+" for identifier "+r.getIdentifier()+" but not in 
clientRequestsByIdentifier!!");
+                                                       break;
+                                               }
+                                               container.deactivate(r, 1);
+                                       }
+                               }
+                               if(req == null) return false;
+                       } else if(!((removedFromRunning = 
runningPersistentRequests.remove(req)) || 
completedUnackedRequests.remove(req))) {
                                Logger.error(this, "Removing "+identifier+": in 
clientRequestsByIdentifier but not in running/completed maps!");
                                
                                return false;

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

Reply via email to