Pārlūkot izejas kodu

Merge branch 'master' into 10.3.x

Shinsuke Sugaya 8 gadi atpakaļ
vecāks
revīzija
7f8a1d0225
1 mainītis faili ar 9 papildinājumiem un 4 dzēšanām
  1. 9 4
      src/main/java/org/codelibs/fess/exec/Crawler.java

+ 9 - 4
src/main/java/org/codelibs/fess/exec/Crawler.java

@@ -26,6 +26,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 
 
@@ -64,6 +65,8 @@ public class Crawler {
 
 
     private static final String DATA_CRAWLING_PROCESS = "DataStoreCrawler";
     private static final String DATA_CRAWLING_PROCESS = "DataStoreCrawler";
 
 
+    private static AtomicBoolean running = new AtomicBoolean(false);
+
     @Resource
     @Resource
     protected FessEsClient fessEsClient;
     protected FessEsClient fessEsClient;
 
 
@@ -182,6 +185,7 @@ public class Crawler {
 
 
         int exitCode;
         int exitCode;
         try {
         try {
+            running.set(true);
             SingletonLaContainerFactory.setConfigPath("app.xml");
             SingletonLaContainerFactory.setConfigPath("app.xml");
             SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
             SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
             SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
             SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
@@ -190,9 +194,6 @@ public class Crawler {
             final Thread shutdownCallback = new Thread("ShutdownHook") {
             final Thread shutdownCallback = new Thread("ShutdownHook") {
                 @Override
                 @Override
                 public void run() {
                 public void run() {
-                    if (logger.isDebugEnabled()) {
-                        logger.debug("Destroying LaContainer..");
-                    }
                     destroyContainer();
                     destroyContainer();
                 }
                 }
 
 
@@ -220,8 +221,12 @@ public class Crawler {
     }
     }
 
 
     private static void destroyContainer() {
     private static void destroyContainer() {
-        synchronized (SingletonLaContainerFactory.class) {
+        if (running.getAndSet(false)) {
+            if (logger.isDebugEnabled()) {
+                logger.debug("Destroying LaContainer...");
+            }
             SingletonLaContainerFactory.destroy();
             SingletonLaContainerFactory.destroy();
+            logger.info("Destroyed LaContainer.");
         }
         }
     }
     }