Author: toad
Date: 2008-07-12 13:55:31 +0000 (Sat, 12 Jul 2008)
New Revision: 21105

Modified:
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
More arcane db4o workarounds.
We should seriously consider upgrading to 7.2, maybe it has fewer bugs!

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 13:51:51 UTC (rev 21104)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 13:55:31 UTC (rev 21105)
@@ -155,12 +155,17 @@
 //                             });
                                Query query = container.query();
                                query.constrain(RegisterMe.class);
-                               
query.descend("core").constrain(ClientRequestSchedulerCore.this);
+                               /**
+                                * Another db4o bug. This doesn't return 
anything unless I move all the constraints into
+                                * the Evaluation. Getting rid of the indexes 
might help. Or upgrading to a fixed version
+                                * of db4o?? :<
+                                */
+//                             
query.descend("core").constrain(ClientRequestSchedulerCore.this);
                                Evaluation eval = new Evaluation() {

                                        public void evaluate(Candidate 
candidate) {
                                                RegisterMe reg = (RegisterMe) 
candidate.getObject();
-                                               if(reg.key.addedTime > 
initTime) {
+                                               if(reg.key.addedTime > initTime 
|| reg.core != ClientRequestSchedulerCore.this) {
                                                        
candidate.include(false);
                                                } else {
                                                        candidate.include(true);
@@ -169,12 +174,12 @@

                                };
                                query.constrain(eval);
-                               
query.descend("key").descend("priority").orderAscending();
-                               
query.descend("key").descend("addedTime").orderAscending();
+//                             
query.descend("key").descend("priority").orderAscending();
+//                             
query.descend("key").descend("addedTime").orderAscending();
                                registerMeSet = query.execute();
                        long tEnd = System.currentTimeMillis();
                        if(logMINOR)
-                               Logger.minor(this, "RegisterMe query took 
"+(tEnd-tStart));
+                               Logger.minor(this, "RegisterMe query took 
"+(tEnd-tStart)+" hasNext="+registerMeSet.hasNext()+" for 
insert="+isInsertScheduler+" ssk="+isSSKScheduler);
 //                             if(logMINOR)
 //                                     Logger.minor(this, "RegisterMe query 
returned: "+registerMeSet.size());
                                context.jobRunner.queue(registerMeRunner, 
NativeThread.NORM_PRIORITY, true);


Reply via email to