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);