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