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/08/12 14:12:26 UTC

svn commit: r1157065 [1/2] - in /incubator/lcf/trunk: ./ connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/ framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/

Author: kwright
Date: Fri Aug 12 12:12:26 2011
New Revision: 1157065

URL: http://svn.apache.org/viewvc?rev=1157065&view=rev
Log:
Fix for CONNECTORS-226.  Roll back special treatment of the REPOSITORY_CONNECTION_ERROR ManifoldCFException type.

Modified:
    incubator/lcf/trunk/CHANGES.txt
    incubator/lcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/DocumentCleanupThread.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ExpireThread.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/SeedingThread.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/StartupThread.java
    incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/WorkerThread.java

Modified: incubator/lcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/CHANGES.txt?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/CHANGES.txt (original)
+++ incubator/lcf/trunk/CHANGES.txt Fri Aug 12 12:12:26 2011
@@ -3,6 +3,10 @@ $Id$
 
 ======================= 0.3-dev =========================
 
+CONNECTORS-226: Clean up usage of REPOSITORY_CONNECTION_ERROR
+ManifoldCFException type.
+(Karl Wright)
+
 CONNECTORS-236: Add tests for CMIS connector.
 (Piergiorgio Lucidi, Karl Wright)
 

Modified: incubator/lcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java (original)
+++ incubator/lcf/trunk/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java Fri Aug 12 12:12:26 2011
@@ -6175,7 +6175,8 @@ public class LivelinkConnector extends o
     )
     {
       String details = llServer.getErrors();
-      throw new ManifoldCFException("Livelink API error: "+e.getMessage()+((details==null)?"":"; "+details),e,ManifoldCFException.REPOSITORY_CONNECTION_ERROR);
+      long currentTime = System.currentTimeMillis();
+      throw new ServiceInterruption("Livelink API error: "+e.getMessage()+((details==null)?"":"; "+details),e,currentTime + 5*60000L,currentTime+12*60*60000L,-1,failIfTimeout);
     }
     else if (
       e instanceof com.opentext.api.LLBadServerCertificateException ||

Modified: incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/DocumentCleanupThread.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/DocumentCleanupThread.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/DocumentCleanupThread.java (original)
+++ incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/DocumentCleanupThread.java Fri Aug 12 12:12:26 2011
@@ -142,126 +142,110 @@ public class DocumentCleanupThread exten
             }
 
             // Grab one connection for each connectionName.  If we fail, nothing is lost and retries are possible.
+            IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),connection.getMaxConnections());
             try
             {
-              IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),connection.getMaxConnections());
-              try
-              {
 
-                // Iterate over the outputs
-                boolean[] deleteFromQueue = new boolean[arrayDocHashes.size()];
+              // Iterate over the outputs
+              boolean[] deleteFromQueue = new boolean[arrayDocHashes.size()];
                     
-                // Count the number of docs to actually delete.  This will be a subset of the documents in the list.
-                int k = 0;
-                int removeCount = 0;
-                while (k < arrayDocHashes.size())
+              // Count the number of docs to actually delete.  This will be a subset of the documents in the list.
+              int k = 0;
+              int removeCount = 0;
+              while (k < arrayDocHashes.size())
+              {
+                if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
                 {
-                  if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                  {
-                    deleteFromQueue[k] = false;
-                    removeCount++;
-                  }
-                  else
-                    deleteFromQueue[k] = true;
-                  k++;
+                  deleteFromQueue[k] = false;
+                  removeCount++;
                 }
+                else
+                  deleteFromQueue[k] = true;
+                k++;
+              }
                     
-                // Allocate removal arrays
-                String[] docClassesToRemove = new String[removeCount];
-                String[] hashedDocsToRemove = new String[removeCount];
-
-                // Now, iterate over the list
-                k = 0;
-                removeCount = 0;
-                while (k < arrayDocHashes.size())
+              // Allocate removal arrays
+              String[] docClassesToRemove = new String[removeCount];
+              String[] hashedDocsToRemove = new String[removeCount];
+
+              // Now, iterate over the list
+              k = 0;
+              removeCount = 0;
+              while (k < arrayDocHashes.size())
+              {
+                if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
                 {
-                  if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                  {
-                    docClassesToRemove[removeCount] = connectionName;
-                    hashedDocsToRemove[removeCount] = (String)arrayDocHashes.get(k);
-                    removeCount++;
-                  }
-                  k++;
+                  docClassesToRemove[removeCount] = connectionName;
+                  hashedDocsToRemove[removeCount] = (String)arrayDocHashes.get(k);
+                  removeCount++;
                 }
+                k++;
+              }
                 
-                OutputRemoveActivity activities = new OutputRemoveActivity(connectionName,connMgr,outputConnectionName);
+              OutputRemoveActivity activities = new OutputRemoveActivity(connectionName,connMgr,outputConnectionName);
 
-                // Finally, go ahead and delete the documents from the ingestion system.
+              // Finally, go ahead and delete the documents from the ingestion system.
 
-                try
-                {
-                  ingester.documentDeleteMultiple(outputConnectionName,docClassesToRemove,hashedDocsToRemove,activities);
-                  // Success!  Label all these as needing deletion from queue.
-                  k = 0;
-                  while (k < arrayDocHashes.size())
-                  {
-                    if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                      deleteFromQueue[k] = true;
-                    k++;
-                  }
-                }
-                catch (ServiceInterruption e)
+              try
+              {
+                ingester.documentDeleteMultiple(outputConnectionName,docClassesToRemove,hashedDocsToRemove,activities);
+                // Success!  Label all these as needing deletion from queue.
+                k = 0;
+                while (k < arrayDocHashes.size())
                 {
-                  // We don't know which failed, or maybe they all did.
-                  // Go through the list of documents we just tried, and reset them on the queue based on the
-                  // ServiceInterruption parameters.  Then we must proceed to delete ONLY the documents that
-                  // were not part of the index deletion attempt.
-                  k = 0;
-                  while (k < arrayDocHashes.size())
-                  {
-                    CleanupQueuedDocument cqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
-                    if (cqd.shouldBeRemovedFromIndex())
-                    {
-                      DocumentDescription dd = cqd.getDocumentDescription();
-                      // To recover from a cleanup failure, requeue the document to PURGATORY.
-                      jobManager.resetCleaningDocument(dd,e.getRetryTime());
-                      cqd.setProcessed();
-                    }
-                    k++;
-                  }
+                  if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
+                    deleteFromQueue[k] = true;
+                  k++;
                 }
-
-                // Successfully deleted some documents from ingestion system.  Now, remove them from job queue.  This
-                // must currently happen one document at a time, because the jobs and connectors for each document
-                // potentially differ.
+              }
+              catch (ServiceInterruption e)
+              {
+                // We don't know which failed, or maybe they all did.
+                // Go through the list of documents we just tried, and reset them on the queue based on the
+                // ServiceInterruption parameters.  Then we must proceed to delete ONLY the documents that
+                // were not part of the index deletion attempt.
                 k = 0;
                 while (k < arrayDocHashes.size())
                 {
-                  if (deleteFromQueue[k])
+                  CleanupQueuedDocument cqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
+                  if (cqd.shouldBeRemovedFromIndex())
                   {
-                    DeleteQueuedDocument dqd = (DeleteQueuedDocument)arrayDocsToDelete.get(k);
-                    DocumentDescription ddd = dqd.getDocumentDescription();
-                    Long jobID = ddd.getJobID();
-                    int hopcountMethod = ((Integer)hopcountMethods.get(k)).intValue();
-                    String[] legalLinkTypes = (String[])arrayRelationshipTypes.get(k);
-                    DocumentDescription[] requeueCandidates = jobManager.markDocumentDeleted(jobID,legalLinkTypes,ddd,hopcountMethod);
-                    // Use the common method for doing the requeuing
-                    ManifoldCF.requeueDocumentsDueToCarrydown(jobManager,requeueCandidates,
-                      connector,connection,queueTracker,currentTime);
-                    // Finally, completed expiration of the document.
-                    dqd.setProcessed();
+                    DocumentDescription dd = cqd.getDocumentDescription();
+                    // To recover from a cleanup failure, requeue the document to PURGATORY.
+                    jobManager.resetCleaningDocument(dd,e.getRetryTime());
+                    cqd.setProcessed();
                   }
                   k++;
                 }
               }
-              finally
+
+              // Successfully deleted some documents from ingestion system.  Now, remove them from job queue.  This
+              // must currently happen one document at a time, because the jobs and connectors for each document
+              // potentially differ.
+              k = 0;
+              while (k < arrayDocHashes.size())
               {
-                // Free up the reserved connector instance
-                RepositoryConnectorFactory.release(connector);
+                if (deleteFromQueue[k])
+                {
+                  DeleteQueuedDocument dqd = (DeleteQueuedDocument)arrayDocsToDelete.get(k);
+                  DocumentDescription ddd = dqd.getDocumentDescription();
+                  Long jobID = ddd.getJobID();
+                  int hopcountMethod = ((Integer)hopcountMethods.get(k)).intValue();
+                  String[] legalLinkTypes = (String[])arrayRelationshipTypes.get(k);
+                  DocumentDescription[] requeueCandidates = jobManager.markDocumentDeleted(jobID,legalLinkTypes,ddd,hopcountMethod);
+                  // Use the common method for doing the requeuing
+                  ManifoldCF.requeueDocumentsDueToCarrydown(jobManager,requeueCandidates,
+                    connector,connection,queueTracker,currentTime);
+                  // Finally, completed expiration of the document.
+                  dqd.setProcessed();
+                }
+                k++;
               }
             }
-            catch (ManifoldCFException e)
+            finally
             {
-              if (e.getErrorCode() == ManifoldCFException.REPOSITORY_CONNECTION_ERROR)
-              {
-                // This error can only come from grabbing the connections.  So, if this occurs it means that
-                // all the documents we've been handed have to be stuffed back onto the queue for processing at a later time.
-                Logging.threads.warn("Document cleanup thread couldn't establish necessary connections, retrying later: "+e.getMessage(),e);
-
-                // Let the unprocessed documents get requeued!  This is handled at the end of the loop...
-              }
-              else
-                throw e;
+              // Free up the reserved connector instance
+              RepositoryConnectorFactory.release(connector);
             }
           }
           catch (ManifoldCFException e)

Modified: incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ExpireThread.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ExpireThread.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ExpireThread.java (original)
+++ incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ExpireThread.java Fri Aug 12 12:12:26 2011
@@ -134,137 +134,121 @@ public class ExpireThread extends Thread
             }
 
             // Grab one connection for the connectionName.  If we fail, nothing is lost and retries are possible.
+            IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),connection.getMaxConnections());
             try
             {
-              IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,connection.getClassName(),connection.getConfigParams(),connection.getMaxConnections());
-              try
-              {
 
-                // Iterate over the outputs
-                boolean[] deleteFromQueue = new boolean[arrayDocHashes.size()];
+              // Iterate over the outputs
+              boolean[] deleteFromQueue = new boolean[arrayDocHashes.size()];
                     
-                // Count the number of docs to actually delete.  This will be a subset of the documents in the list.
-                int k = 0;
-                int removeCount = 0;
-                while (k < arrayDocHashes.size())
+              // Count the number of docs to actually delete.  This will be a subset of the documents in the list.
+              int k = 0;
+              int removeCount = 0;
+              while (k < arrayDocHashes.size())
+              {
+                if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
                 {
-                  if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                  {
-                    deleteFromQueue[k] = false;
-                    removeCount++;
-                  }
-                  else
-                    deleteFromQueue[k] = true;
-                  k++;
+                  deleteFromQueue[k] = false;
+                  removeCount++;
                 }
+                else
+                  deleteFromQueue[k] = true;
+                k++;
+              }
                     
-                // Allocate removal arrays
-                String[] docClassesToRemove = new String[removeCount];
-                String[] hashedDocsToRemove = new String[removeCount];
+              // Allocate removal arrays
+              String[] docClassesToRemove = new String[removeCount];
+              String[] hashedDocsToRemove = new String[removeCount];
+
+              // Now, iterate over the list
+              k = 0;
+              removeCount = 0;
+              while (k < arrayDocHashes.size())
+              {
+                if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
+                {
+                  docClassesToRemove[removeCount] = connectionName;
+                  hashedDocsToRemove[removeCount] = (String)arrayDocHashes.get(k);
+                  removeCount++;
+                }
+                k++;
+              }
+
+              OutputRemoveActivity activities = new OutputRemoveActivity(connectionName,connMgr,outputConnectionName);
 
-                // Now, iterate over the list
+              // Finally, go ahead and delete the documents from the ingestion system.
+              // If we fail, we need to put the documents back on the queue.
+              try
+              {
+                ingester.documentDeleteMultiple(outputConnectionName,docClassesToRemove,hashedDocsToRemove,activities);
+                // Success!  Label all these as needing deletion from queue.
                 k = 0;
-                removeCount = 0;
                 while (k < arrayDocHashes.size())
                 {
                   if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                  {
-                    docClassesToRemove[removeCount] = connectionName;
-                    hashedDocsToRemove[removeCount] = (String)arrayDocHashes.get(k);
-                    removeCount++;
-                  }
+                    deleteFromQueue[k] = true;
                   k++;
                 }
-
-                OutputRemoveActivity activities = new OutputRemoveActivity(connectionName,connMgr,outputConnectionName);
-
-                // Finally, go ahead and delete the documents from the ingestion system.
-                // If we fail, we need to put the documents back on the queue.
-                try
-                {
-                  ingester.documentDeleteMultiple(outputConnectionName,docClassesToRemove,hashedDocsToRemove,activities);
-                  // Success!  Label all these as needing deletion from queue.
-                  k = 0;
-                  while (k < arrayDocHashes.size())
-                  {
-                    if (((CleanupQueuedDocument)arrayDocsToDelete.get(k)).shouldBeRemovedFromIndex())
-                      deleteFromQueue[k] = true;
-                    k++;
-                  }
-                }
-                catch (ServiceInterruption e)
-                {
-                  // We don't know which failed, or maybe they all did.
-                  // Go through the list of documents we just tried, and reset them on the queue based on the
-                  // ServiceInterruption parameters.  Then we must proceed to delete ONLY the documents that
-                  // were not part of the index deletion attempt.
-                  k = 0;
-                  while (k < arrayDocHashes.size())
-                  {
-                    CleanupQueuedDocument cqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
-                    if (cqd.shouldBeRemovedFromIndex())
-                    {
-                      DocumentDescription dd = cqd.getDocumentDescription();
-                      if (dd.getFailTime() != -1L && dd.getFailTime() < e.getRetryTime() ||
-                        dd.getFailRetryCount() == 0)
-                      {
-                        // Treat this as a hard failure.
-                        if (e.isAbortOnFail())
-                          throw new ManifoldCFException("Repeated service interruptions - failure expiring document"+((e.getCause()!=null)?": "+e.getCause().getMessage():""),e.getCause());
-                      }
-                      else
-                      {
-                        // To recover from an expiration failure, requeue the document to PENDING etc.
-                        jobManager.resetDocument(dd,e.getRetryTime(),
-                          IJobManager.ACTION_REMOVE,e.getFailTime(),e.getFailRetryCount());
-                        cqd.setProcessed();
-                      }
-                    }
-                    k++;
-                  }
-                }
-
-                // Successfully deleted some documents from ingestion system.  Now, remove them from job queue.  This
-                // must currently happen one document at a time, because the jobs and connectors for each document
-                // potentially differ.
+              }
+              catch (ServiceInterruption e)
+              {
+                // We don't know which failed, or maybe they all did.
+                // Go through the list of documents we just tried, and reset them on the queue based on the
+                // ServiceInterruption parameters.  Then we must proceed to delete ONLY the documents that
+                // were not part of the index deletion attempt.
                 k = 0;
                 while (k < arrayDocHashes.size())
                 {
-                  if (deleteFromQueue[k])
+                  CleanupQueuedDocument cqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
+                  if (cqd.shouldBeRemovedFromIndex())
                   {
-                    CleanupQueuedDocument dqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
-                    DocumentDescription ddd = dqd.getDocumentDescription();
-                    Long jobID = ddd.getJobID();
-                    int hopcountMethod = ((Integer)hopcountMethods.get(k)).intValue();
-                    String[] legalLinkTypes = (String[])arrayRelationshipTypes.get(k);
-                    DocumentDescription[] requeueCandidates = jobManager.markDocumentDeleted(jobID,legalLinkTypes,ddd,hopcountMethod);
-                    // Use the common method for doing the requeuing
-                    ManifoldCF.requeueDocumentsDueToCarrydown(jobManager,requeueCandidates,
-                      connector,connection,queueTracker,currentTime);
-                    // Finally, completed expiration of the document.
-                    dqd.setProcessed();
+                    DocumentDescription dd = cqd.getDocumentDescription();
+                    if (dd.getFailTime() != -1L && dd.getFailTime() < e.getRetryTime() ||
+                      dd.getFailRetryCount() == 0)
+                    {
+                      // Treat this as a hard failure.
+                      if (e.isAbortOnFail())
+                        throw new ManifoldCFException("Repeated service interruptions - failure expiring document"+((e.getCause()!=null)?": "+e.getCause().getMessage():""),e.getCause());
+                    }
+                    else
+                    {
+                      // To recover from an expiration failure, requeue the document to PENDING etc.
+                      jobManager.resetDocument(dd,e.getRetryTime(),
+                        IJobManager.ACTION_REMOVE,e.getFailTime(),e.getFailRetryCount());
+                      cqd.setProcessed();
+                    }
                   }
                   k++;
                 }
               }
-              finally
+
+              // Successfully deleted some documents from ingestion system.  Now, remove them from job queue.  This
+              // must currently happen one document at a time, because the jobs and connectors for each document
+              // potentially differ.
+              k = 0;
+              while (k < arrayDocHashes.size())
               {
-                // Free up the reserved connector instance
-                RepositoryConnectorFactory.release(connector);
+                if (deleteFromQueue[k])
+                {
+                  CleanupQueuedDocument dqd = (CleanupQueuedDocument)arrayDocsToDelete.get(k);
+                  DocumentDescription ddd = dqd.getDocumentDescription();
+                  Long jobID = ddd.getJobID();
+                  int hopcountMethod = ((Integer)hopcountMethods.get(k)).intValue();
+                  String[] legalLinkTypes = (String[])arrayRelationshipTypes.get(k);
+                  DocumentDescription[] requeueCandidates = jobManager.markDocumentDeleted(jobID,legalLinkTypes,ddd,hopcountMethod);
+                  // Use the common method for doing the requeuing
+                  ManifoldCF.requeueDocumentsDueToCarrydown(jobManager,requeueCandidates,
+                    connector,connection,queueTracker,currentTime);
+                  // Finally, completed expiration of the document.
+                  dqd.setProcessed();
+                }
+                k++;
               }
             }
-            catch (ManifoldCFException e)
+            finally
             {
-              if (e.getErrorCode() == ManifoldCFException.REPOSITORY_CONNECTION_ERROR)
-              {
-                // This error can only come from grabbing the connections.  So, if this occurs it means that
-                // all the documents we've been handed have to be stuffed back onto the queue for processing at a later time.
-                Logging.threads.warn("Expire thread couldn't establish necessary connections, retrying later: "+e.getMessage(),e);
-
-                // Let the unprocessed documents get requeued!  This is handled at the end of the loop...
-              }
-              else
-                throw e;
+              // Free up the reserved connector instance
+              RepositoryConnectorFactory.release(connector);
             }
           }
           catch (ManifoldCFException e)

Modified: incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java (original)
+++ incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java Fri Aug 12 12:12:26 2011
@@ -980,34 +980,22 @@ public class ManifoldCF extends org.apac
       }
 
       String[] binNames;
+      // Grab a connector handle
+      IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,
+        connection.getClassName(),
+        connection.getConfigParams(),
+        connection.getMaxConnections());
       try
       {
-        // Grab a connector handle
-        IRepositoryConnector connector = RepositoryConnectorFactory.grab(threadContext,
-          connection.getClassName(),
-          connection.getConfigParams(),
-          connection.getMaxConnections());
-        try
-        {
-          if (connector == null)
-            binNames = new String[]{""};
-          else
-            // Get the bins for the document identifier
-            binNames = connector.getBinNames(descs[i].getDocumentIdentifier());
-        }
-        finally
-        {
-          RepositoryConnectorFactory.release(connector);
-        }
-      }
-      catch (ManifoldCFException e)
-      {
-        if (e.getErrorCode() == ManifoldCFException.REPOSITORY_CONNECTION_ERROR)
-        {
+        if (connector == null)
           binNames = new String[]{""};
-        }
         else
-          throw e;
+          // Get the bins for the document identifier
+          binNames = connector.getBinNames(descs[i].getDocumentIdentifier());
+      }
+      finally
+      {
+        RepositoryConnectorFactory.release(connector);
       }
 
       priorities[i] = queueTracker.calculatePriority(binNames,connection);

Modified: incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/SeedingThread.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/SeedingThread.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/SeedingThread.java (original)
+++ incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/SeedingThread.java Fri Aug 12 12:12:26 2011
@@ -189,11 +189,6 @@ public class SeedingThread extends Threa
                   throw new InterruptedException();
                 if (e.getErrorCode() == ManifoldCFException.DATABASE_CONNECTION_ERROR)
                   throw e;
-                if (e.getErrorCode() == ManifoldCFException.REPOSITORY_CONNECTION_ERROR)
-                {
-                  Logging.threads.warn("Seeding thread: Ignoring connection error: "+e.getMessage(),e);
-                  continue;
-                }
                 if (jobManager.errorAbort(jobID,e.getMessage()))
                   Logging.threads.error("Exception tossed: "+e.getMessage(),e);
                 // We DO have to clean up, because there is otherwise no

Modified: incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/StartupThread.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/StartupThread.java?rev=1157065&r1=1157064&r2=1157065&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/StartupThread.java (original)
+++ incubator/lcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/StartupThread.java Fri Aug 12 12:12:26 2011
@@ -185,7 +185,7 @@ public class StartupThread extends Threa
                   catch (ServiceInterruption e)
                   {
                     // Note the service interruption
-                    Logging.threads.warn("Service interruption for job "+jobID,e);
+                    Logging.threads.warn("Service interruption for job "+jobID+": "+e.getMessage(),e);
                     long retryInterval = e.getRetryTime() - currentTime;
                     if (retryInterval >= 0L && retryInterval < waitTime)
                       waitTime = retryInterval;
@@ -208,11 +208,6 @@ public class StartupThread extends Threa
                   throw new InterruptedException();
                 if (e.getErrorCode() == ManifoldCFException.DATABASE_CONNECTION_ERROR)
                   throw e;
-                if (e.getErrorCode() == ManifoldCFException.REPOSITORY_CONNECTION_ERROR)
-                {
-                  Logging.threads.warn("Startup thread: connection error; continuing: "+e.getMessage(),e);
-                  continue;
-                }
                 // Note: The error abort below will put the job in the "ABORTINGSTARTUP" state.  We still need a reset at that point
                 // to get all the way back to an "aborting" state.
                 if (jobManager.errorAbort(jobID,e.getMessage()))