Author: toad
Date: 2008-07-12 23:38:28 +0000 (Sat, 12 Jul 2008)
New Revision: 21127

Modified:
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Paranoia

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 23:31:27 UTC (rev 21126)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 23:38:28 UTC (rev 21127)
@@ -578,7 +578,19 @@
                                }
                                long startNext = System.currentTimeMillis();
                                RegisterMe reg = (RegisterMe) 
registerMeSet.next();
+                               // FIXME remove the leftover/old core handling 
at some point, an NPE is acceptable long-term.
                                if(reg.core != ClientRequestSchedulerCore.this) 
{
+                                       if(reg.core == null) {
+                                               Logger.error(this, "Leftover 
RegisterMe: core already deleted. THIS IS AN ERROR unless you have seen \"Old 
core not active\" messages before this point.");
+                                               container.delete(reg);
+                                               continue;
+                                       }
+                                       if(!container.ext().isActive(reg.core)) 
{
+                                               Logger.error(this, "Old core 
not active in RegisterMe - duplicated cores????");
+                                               container.delete(reg.core);
+                                               container.delete(reg);
+                                               continue;
+                                       }
                                        Logger.error(this, "Ignoring RegisterMe 
as doesn't belong to me: my insert="+isInsertScheduler+" my 
ssk="+isSSKScheduler+" his insert="+reg.core.isInsertScheduler+" his 
ssk="+reg.core.isSSKScheduler);
                                        container.deactivate(reg, 1);
                                        continue; // Don't delete.


Reply via email to