Author: toad
Date: 2008-07-12 16:03:02 +0000 (Sat, 12 Jul 2008)
New Revision: 21106

Modified:
   branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java
Log:
Maybe fix OOMs

Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java   
2008-07-12 13:55:31 UTC (rev 21105)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java   
2008-07-12 16:03:02 UTC (rev 21106)
@@ -55,12 +55,17 @@
                 */
                Query query = container.query();
                query.constrain(FCPClient.class);
+               // Don't constrain by root because that set is huge.
+               // I think that was the cause of the OOMs here...
                query.descend("name").constrain(name);
-               query.descend("root").constrain(this);
                ObjectSet set = query.execute();
-               if(set.hasNext()) {
+               while(set.hasNext()) {
                        FCPClient client = (FCPClient) set.next();
                        container.activate(client, 1);
+                       if(client.root != this) {
+                               container.deactivate(client, 1);
+                               continue;
+                       }
                        client.setConnection(handler);
                        if(!(name.equals(client.name)))
                                Logger.error(this, "Returning "+client+" for 
"+name);


Reply via email to