Author: tomekr
Date: Wed May 29 13:52:24 2019
New Revision: 1860348

URL: http://svn.apache.org/viewvc?rev=1860348&view=rev
Log:
OAK-7155: Executor in S3DataStoreFactory is not shut down

Modified:
    
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/blob/S3DataStoreFactory.java

Modified: 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/blob/S3DataStoreFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/blob/S3DataStoreFactory.java?rev=1860348&r1=1860347&r2=1860348&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/blob/S3DataStoreFactory.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/blob/S3DataStoreFactory.java
 Wed May 29 13:52:24 2019
@@ -24,6 +24,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -72,7 +74,8 @@ public class S3DataStoreFactory implemen
     public BlobStore create(Closer closer) throws IOException {
         S3DataStore delegate = createDS(directory, props);
         // Initialize a default stats provider
-        StatisticsProvider statsProvider = new 
DefaultStatisticsProvider(Executors.newSingleThreadScheduledExecutor());
+        final ScheduledExecutorService executor = 
Executors.newSingleThreadScheduledExecutor();
+        StatisticsProvider statsProvider = new 
DefaultStatisticsProvider(executor);
         delegate.setStatisticsProvider(statsProvider);
         // Reduce staging purge interval to 60 seconds
         delegate.setStagingPurgeInterval(60);
@@ -83,6 +86,19 @@ public class S3DataStoreFactory implemen
             throw new IOException(e);
         }
         closer.register(asCloseable(delegate));
+        closer.register(new Closeable() {
+            @Override
+            public void close() throws IOException {
+                executor.shutdown();
+                try {
+                    if (!executor.awaitTermination(30, TimeUnit.SECONDS)) {
+                        throw new IOException("Can't shut down the executor");
+                    }
+                } catch (InterruptedException e) {
+                    throw new IOException(e);
+                }
+            }
+        });
         if (ignoreMissingBlobs) {
             return new SafeDataStoreBlobStore(delegate);
         } else {


Reply via email to