You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/10/28 12:21:52 UTC

svn commit: r1190232 - in /incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs: JobManager.java JobQueue.java

Author: kwright
Date: Fri Oct 28 10:21:52 2011
New Revision: 1190232

URL: http://svn.apache.org/viewvc?rev=1190232&view=rev
Log:
Rejigger jobqueue indexes to drop one and reorder another.  This lines up better with HSQLDB usage constraints.

Modified:
    incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
    incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobQueue.java

Modified: incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java?rev=1190232&r1=1190231&r2=1190232&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java (original)
+++ incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java Fri Oct 28 10:21:52 2011
@@ -1598,11 +1598,10 @@ public class JobManager implements IJobM
     // If FOR UPDATE was included, deadlock conditions would be common because of the complexity of this query.
 
     ArrayList list = new ArrayList();
-    list.add(new Long(currentTime));
-    list.add(jobQueue.actionToString(JobQueue.ACTION_REMOVE));
-
     list.add(jobQueue.statusToString(JobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(JobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(JobQueue.ACTION_REMOVE));
+    list.add(new Long(currentTime));
 
     list.add(jobs.statusToString(jobs.STATUS_ACTIVE));
     list.add(jobs.statusToString(jobs.STATUS_ACTIVESEEDING));
@@ -1622,10 +1621,11 @@ public class JobManager implements IJobM
     sb.append(jobQueue.statusField).append(",t0.");
     sb.append(jobQueue.failTimeField).append(",t0.");
     sb.append(jobQueue.failCountField).append(" FROM ").append(jobQueue.getTableName()).append(" t0,")
-      .append(jobs.getTableName()).append(" t1 WHERE t0.");
-    sb.append(jobQueue.checkTimeField).append("<=? AND t0.");
-    sb.append(jobQueue.checkActionField).append("=? AND ");
-    sb.append("t0.").append(jobQueue.statusField).append(" IN(?,?) AND t0.").append(jobQueue.jobIDField).append("=t1.").append(jobs.idField).append(" AND t1.")
+      .append(jobs.getTableName()).append(" t1 WHERE ")
+      .append("t0.").append(jobQueue.statusField).append(" IN(?,?) AND ")
+      .append("t0.").append(jobQueue.checkActionField).append("=? AND ")
+      .append("t0.").append(jobQueue.checkTimeField).append("<=? AND ")
+      .append("t0.").append(jobQueue.jobIDField).append("=t1.").append(jobs.idField).append(" AND t1.")
       .append(jobs.statusField).append(" IN (?,?) AND ");
     sb.append("NOT EXISTS(SELECT 'x' FROM ").append(jobQueue.getTableName()).append(" t2 WHERE t0.")
       .append(jobQueue.docHashField).append("=t2.").append(jobQueue.docHashField).append(" AND t0.")
@@ -2060,21 +2060,21 @@ public class JobManager implements IJobM
     list.add(Jobs.statusToString(jobs.STATUS_ACTIVE));
     list.add(Jobs.statusToString(jobs.STATUS_ACTIVESEEDING));
     
+    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDING));
+    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDINGPURGATORY));
+    
     list.add(jobQueue.actionToString(JobQueue.ACTION_RESCAN));
     
     list.add(currentTimeValue);
         
-    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDING));
-    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDINGPURGATORY));
-    
     sb.append(jobQueue.docPriorityField).append(",").append(jobQueue.jobIDField).append(",")
       .append(jobQueue.docHashField).append(",").append(jobQueue.docIDField)
       .append(" FROM ").append(jobQueue.getTableName())
       .append(" t0 WHERE EXISTS(SELECT 'x' FROM ").append(jobs.getTableName()).append(" t1 WHERE t0.").append(jobQueue.jobIDField)
       .append("=t1.").append(jobs.idField).append(" AND t1.").append(jobs.statusField).append(" IN(?,?)) AND ")
+      .append(jobQueue.statusField).append(" IN(?,?) AND ")
       .append(jobQueue.checkActionField).append("=? AND ")
-      .append(jobQueue.checkTimeField).append("<=? AND ")
-      .append(jobQueue.statusField).append(" IN(?,?)")
+      .append(jobQueue.checkTimeField).append("<=?")
       .append(" ORDER BY ").append(jobQueue.docPriorityField).append(" ASC ").append(database.constructOffsetLimitClause(0,1));
 
 
@@ -2119,13 +2119,13 @@ public class JobManager implements IJobM
     
     list.add(currentPriorityValue);
 
+    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDING));
+    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDINGPURGATORY));
+    
     list.add(jobQueue.actionToString(JobQueue.ACTION_RESCAN));
 
     list.add(currentTimeValue);
     
-    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDING));
-    list.add(jobQueue.statusToString(JobQueue.STATUS_PENDINGPURGATORY));
-    
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
@@ -2133,9 +2133,9 @@ public class JobManager implements IJobM
     list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGDELETED));
     list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGCLEANED));
     
-    sb.append("t0.").append(jobQueue.checkActionField).append("=? AND ")
-      .append("t0.").append(jobQueue.checkTimeField).append("<=? AND ")
-      .append("t0.").append(jobQueue.statusField).append(" IN (?,?) AND ");
+    sb.append("t0.").append(jobQueue.statusField).append(" IN (?,?) AND ")
+      .append("t0.").append(jobQueue.checkActionField).append("=? AND ")
+      .append("t0.").append(jobQueue.checkTimeField).append("<=? AND ");
       
     sb.append("NOT EXISTS(SELECT 'x' FROM ").append(jobQueue.getTableName()).append(" t2 WHERE t0.")
       .append(jobQueue.docHashField).append("=t2.").append(jobQueue.docHashField).append(" AND t0.")
@@ -6478,21 +6478,21 @@ public class JobManager implements IJobM
     list.add(jobQueue.statusToString(jobQueue.STATUS_COMPLETE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PURGATORY));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
@@ -6501,17 +6501,17 @@ public class JobManager implements IJobM
     list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGCLEANED));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ELIGIBLEFORDELETE));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
     list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
@@ -6538,38 +6538,38 @@ public class JobManager implements IJobM
       .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 'Inactive'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(" AND t0.").append(jobQueue.checkTimeField).append("<=").append(currentTime.toString())
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 'Ready for processing'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(" AND t0.").append(jobQueue.checkTimeField).append("<=").append(currentTime.toString())
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 'Ready for expiration'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(" AND t0.").append(jobQueue.checkTimeField).append(">").append(currentTime.toString())
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 'Waiting for processing'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(" AND t0.").append(jobQueue.checkTimeField).append(">").append(currentTime.toString())
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 'Waiting for expiration'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkTimeField).append(" IS NULL")
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkTimeField).append(" IS NULL")
       .append(" THEN 'Waiting forever'")
       .append(" WHEN ").append("t0.").append(jobQueue.statusField).append(" IN (?,?,?)")
       .append(" THEN 'Deleting'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(" THEN 'Processing'")
       .append(" WHEN ")
-      .append("t0.").append(jobQueue.checkActionField).append("=?")
-      .append(" AND ").append("t0.").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append("t0.").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(" AND ").append("t0.").append(jobQueue.checkActionField).append("=?")
       .append(")")
       .append(" THEN 'Expiring'")
       .append(" ELSE 'Unknown'")
@@ -6625,37 +6625,37 @@ public class JobManager implements IJobM
     list.add(jobQueue.statusToString(jobQueue.STATUS_COMPLETE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PURGATORY));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
     list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGDELETED));
     list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGCLEANED));
     list.add(jobQueue.statusToString(jobQueue.STATUS_ELIGIBLEFORDELETE));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
     
-    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
+    list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
     
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
     list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
@@ -6668,15 +6668,15 @@ public class JobManager implements IJobM
       .append(" AS inactive,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as processing,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(jobQueue.statusField).append(" IN (?,?,?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as expiring,")
@@ -6688,40 +6688,40 @@ public class JobManager implements IJobM
       .append(" as deleting,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
+      .append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" AND ").append(jobQueue.checkTimeField).append("<=").append(currentTime.toString())
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as processready,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
+      .append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" AND ").append(jobQueue.checkTimeField).append("<=").append(currentTime.toString())
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as expireready,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
+      .append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" AND ").append(jobQueue.checkTimeField).append(">").append(currentTime.toString())
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as processwaiting,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkActionField).append("=?")
+      .append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append(jobQueue.checkActionField).append("=?")
       .append(" AND ").append(jobQueue.checkTimeField).append(">").append(currentTime.toString())
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?)")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as expirewaiting,")
       .append("CASE")
       .append(" WHEN ")
-      .append(jobQueue.checkTimeField).append(" IS NULL")
-      .append(" AND ").append(jobQueue.statusField).append(" IN (?,?)")
+      .append(jobQueue.statusField).append(" IN (?,?)")
+      .append(" AND ").append(jobQueue.checkTimeField).append(" IS NULL")
       .append(" THEN 1 ELSE 0")
       .append(" END")
       .append(" as waitingforever");
@@ -6842,22 +6842,22 @@ public class JobManager implements IJobM
         sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)");
         break;
       case DOCSTATUS_PROCESSING:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
-        sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?,?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?,?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?");
         break;
       case DOCSTATUS_EXPIRING:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVE));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCAN));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVEPURGATORY));
         list.add(jobQueue.statusToString(jobQueue.STATUS_ACTIVENEEDRESCANPURGATORY));
-        sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?,?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?,?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?");
         break;
       case DOCSTATUS_DELETING:
         list.add(jobQueue.statusToString(jobQueue.STATUS_BEINGDELETED));
@@ -6866,36 +6866,36 @@ public class JobManager implements IJobM
         sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?,?)");
         break;
       case DOCSTATUS_READYFORPROCESSING:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
-        sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append("<=").append(nowTime.toString())
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append("<=").append(nowTime.toString());
         break;
       case DOCSTATUS_READYFOREXPIRATION:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
-        sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append("<=").append(nowTime.toString())
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append("<=").append(nowTime.toString());
         break;
       case DOCSTATUS_WAITINGFORPROCESSING:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
-          sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append(">").append(nowTime.toString())
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_RESCAN));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append(">").append(nowTime.toString());
         break;
       case DOCSTATUS_WAITINGFOREXPIRATION:
-        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDINGPURGATORY));
-          sb.append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
-          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append(">").append(nowTime.toString())
-          .append(" AND ").append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)");
+        list.add(jobQueue.actionToString(jobQueue.ACTION_REMOVE));
+        sb.append(fieldPrefix).append(jobQueue.statusField).append(" IN (?,?)")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkActionField).append("=?")
+          .append(" AND ").append(fieldPrefix).append(jobQueue.checkTimeField).append(">").append(nowTime.toString());
         break;
       case DOCSTATUS_WAITINGFOREVER:
         list.add(jobQueue.statusToString(jobQueue.STATUS_PENDING));

Modified: incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobQueue.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobQueue.java?rev=1190232&r1=1190231&r2=1190232&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobQueue.java (original)
+++ incubator/lcf/branches/CONNECTORS-284/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobQueue.java Fri Oct 28 10:21:52 2011
@@ -205,9 +205,8 @@ public class JobQueue extends org.apache
       IndexDescription jobStatusIndex = new IndexDescription(false,new String[]{jobIDField,statusField});
       IndexDescription jobSeedIndex = new IndexDescription(false,new String[]{jobIDField,isSeedField});
       IndexDescription jobHashStatusIndex = new IndexDescription(false,new String[]{jobIDField,docHashField,statusField});
-      IndexDescription statusIndex = new IndexDescription(false,new String[]{statusField});
-      IndexDescription actionTimeStatusIndex = new IndexDescription(false,new String[]{checkActionField,checkTimeField,statusField});
-      IndexDescription prioritysetStatusIndex = new IndexDescription(false,new String[]{prioritySetField,statusField});
+      IndexDescription actionTimeStatusIndex = new IndexDescription(false,new String[]{statusField,checkActionField,checkTimeField});
+      IndexDescription prioritysetStatusIndex = new IndexDescription(false,new String[]{prioritySetField,statusField,checkActionField});
       IndexDescription docpriorityIndex = new IndexDescription(false,new String[]{docPriorityField});
 
       // Get rid of unused indexes
@@ -226,8 +225,6 @@ public class JobQueue extends org.apache
           jobSeedIndex = null;
         else if (jobHashStatusIndex != null && id.equals(jobHashStatusIndex))
           jobHashStatusIndex = null;
-        else if (statusIndex != null && id.equals(statusIndex))
-          statusIndex = null;
         else if (actionTimeStatusIndex != null && id.equals(actionTimeStatusIndex))
           actionTimeStatusIndex = null;
         else if (prioritysetStatusIndex != null && id.equals(prioritysetStatusIndex))
@@ -250,9 +247,6 @@ public class JobQueue extends org.apache
       if (jobHashStatusIndex != null)
         performAddIndex(null,jobHashStatusIndex);
 
-      if (statusIndex != null)
-        performAddIndex(null,statusIndex);
-
       if (actionTimeStatusIndex != null)
         performAddIndex(null,actionTimeStatusIndex);