Fix shutdown procedure of ContinuousWorkerThread (it won't stop if interrupt() has been invoked during the thread is running)


git-svn-id: https://svn.apache.org/repos/asf/roller/trunk@1708081 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/HitCountQueue.java b/app/src/main/java/org/apache/roller/weblogger/business/HitCountQueue.java
index 0bc0448..5a4494b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/HitCountQueue.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/HitCountQueue.java
@@ -114,6 +114,12 @@
         if(this.worker != null) {
             log.info("stopping worker "+this.worker.getName());
             worker.interrupt();
+            try {
+                // wait 10 seconds for graceful shutdown
+                worker.join(10 * 1000);
+            } catch (InterruptedException e) {
+                log.debug("interrupted", e);
+            }
         }
         
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
index da54803..098d9f9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
@@ -60,8 +60,8 @@
         
         mLogger.info(this.id+" Started.");
         
-        // run forever
-        while(true) {
+        // run till interrupted
+        while (!Thread.currentThread().isInterrupted()) {
             
             // execute our job
             super.run();
@@ -75,6 +75,8 @@
                 break;
             }
         }
+
+        mLogger.info(this.id+" Done.");
     }
-    
+
 }