You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by sh...@apache.org on 2011/07/08 09:11:33 UTC

svn commit: r1144179 - in /incubator/lcf/trunk: CHANGES.txt framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java

Author: shinichiro
Date: Fri Jul  8 07:11:32 2011
New Revision: 1144179

URL: http://svn.apache.org/viewvc?rev=1144179&view=rev
Log:
Fix for CONNECTORS-217

Modified:
    incubator/lcf/trunk/CHANGES.txt
    incubator/lcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java

Modified: incubator/lcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/CHANGES.txt?rev=1144179&r1=1144178&r2=1144179&view=diff
==============================================================================
--- incubator/lcf/trunk/CHANGES.txt (original)
+++ incubator/lcf/trunk/CHANGES.txt Fri Jul  8 07:11:32 2011
@@ -3,6 +3,9 @@ $Id$
 
 ======================= 0.3-dev =========================
 
+CONNECTORS-217: Check running more than one of instance of agent. 
+(Shinichiro Abe)
+
 CONNECTORS-218: LockClean supports relative path 
 to the synchronization directory. 
 (Shinichiro Abe)

Modified: incubator/lcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java?rev=1144179&r1=1144178&r2=1144179&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java (original)
+++ incubator/lcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/AgentRun.java Fri Jul  8 07:11:32 2011
@@ -28,6 +28,7 @@ public class AgentRun extends BaseAgents
 {
   public static final String _rcsid = "@(#)$Id: AgentRun.java 988245 2010-08-23 18:39:35Z kwright $";
 
+  public static final String agentInUseSignal = "_AGENTINUSE_";
   public static final String agentShutdownSignal = "_AGENTRUN_";
   
   public AgentRun()
@@ -37,28 +38,48 @@ public class AgentRun extends BaseAgents
   protected void doExecute(IThreadContext tc) throws ManifoldCFException
   {
     ILockManager lockManager = LockManagerFactory.make(tc);
-    // Clear the agents shutdown signal.
-    lockManager.clearGlobalFlag(agentShutdownSignal);
-    Logging.root.info("Running...");
-    while (true)
-    {
-      // Any shutdown signal yet?
-      if (lockManager.checkGlobalFlag(agentShutdownSignal))
-        break;
-
-      // Start whatever agents need to be started
-      ManifoldCF.startAgents(tc);
-
-      try
-      {
-        ManifoldCF.sleep(5000);
-      }
-      catch (InterruptedException e)
+    // Agent already in use?
+    if (lockManager.checkGlobalFlag(agentInUseSignal))
+    {
+      System.err.println("Agent already in use");
+      System.exit(1);
+    }
+    // Set the agents in use signal.
+    lockManager.setGlobalFlag(agentInUseSignal);    
+    try
+    {
+      // Clear the agents shutdown signal.
+      lockManager.clearGlobalFlag(agentShutdownSignal);
+      Logging.root.info("Running...");
+      while (true)
       {
-        break;
+        // Any shutdown signal yet?
+        if (lockManager.checkGlobalFlag(agentShutdownSignal))
+          break;
+
+        // Start whatever agents need to be started
+        ManifoldCF.startAgents(tc);
+
+        try
+        {
+          ManifoldCF.sleep(5000);
+        }
+        catch (InterruptedException e)
+        {
+          break;
+        }
       }
+      Logging.root.info("Shutting down...");
+    }
+    catch (ManifoldCFException e)
+    {
+      Logging.root.error("Exception: "+e.getMessage(),e);
+      e.printStackTrace(System.err);
+    }
+    finally
+    {
+      lockManager.clearGlobalFlag(agentInUseSignal);
     }
-    Logging.root.info("Shutting down...");
   }