You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Davide Giannella <da...@apache.org> on 2015/04/29 17:10:35 UTC

Re: svn commit: r1673140 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/Oak.java test/java/org/apache/jackrabbit/oak/OakTest.java

On 13/04/2015 10:12, chetanm@apache.org wrote:
> ... 
> +    private static class ExecutorCloser implements Closeable {
> +        final ExecutorService executorService;
> +
> +        private ExecutorCloser(ExecutorService executorService) {
> +            this.executorService = executorService;
> +        }
> +
> +        @Override
> +        public void close() throws IOException {
> +            executorService.shutdown();
> +        }
> +    }
> +
>
Was going through some commits.

Wouldn't it be better something like the following? It will provide us
with more insights during shutdown.

diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
index 451395c..b06cc9f 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
@@ -684,7 +684,17 @@ public class Oak {
 
         @Override
         public void close() throws IOException {
-            executorService.shutdown();
+            try {
+                executorService.shutdown();
+                executorService.awaitTermination(5, TimeUnit.SECONDS);
+            } catch (InterruptedException e) {
+                LOG.error("Error while shutting down executor", e);
+            } finally {
+                if (!executorService.isTerminated()) {
+                    LOG.warn("Executor didn't shutdown properly. Will
be forced now.");
+                }
+                executorService.shutdownNow();
+            }
         }
     }
 


Davide