shutdown executor service on close

Signed-off-by: olivier lamy <ol...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/c0623553
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/c0623553
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/c0623553

Branch: refs/heads/master
Commit: c0623553f0819cb0cf0e7c7bd5897ba6e00b2fe6
Parents: d93ae43
Author: olivier lamy <ol...@apache.org>
Authored: Mon Jul 31 22:16:08 2017 +1000
Committer: olivier lamy <ol...@apache.org>
Committed: Mon Jul 31 22:16:08 2017 +1000

----------------------------------------------------------------------
 .../repository/jcr/RepositoryFactory.java        | 19 ++++++++++++++-----
 .../JcrRepositoryStatisticsGatheringTest.java    |  4 +++-
 2 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/c0623553/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/RepositoryFactory.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/RepositoryFactory.java
 
b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/RepositoryFactory.java
index e2be03f..c02e71f 100644
--- 
a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/RepositoryFactory.java
+++ 
b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/RepositoryFactory.java
@@ -77,20 +77,22 @@ public class RepositoryFactory
 
     private FileStore fileStore;
 
+    private ExecutorService executorService;
+
     public enum StoreType
     {
         SEGMENT_FILE_TYPE,
         IN_MEMORY_TYPE;
     }
 
-
     private StoreType storeType = SEGMENT_FILE_TYPE;
 
-    Path repositoryPath = Paths.get( "repository" );
+    private Path repositoryPath = Paths.get( "repository" );
 
     public Repository createRepository()
         throws IOException, InvalidFileStoreVersionException
     {
+        createExecutor();
         NodeStore nodeStore;
         if ( SEGMENT_FILE_TYPE == storeType )
         {
@@ -199,7 +201,6 @@ public class RepositoryFactory
             }
         } );
 
-        ExecutorService executorService = createExecutor();
         StatisticsProvider statsProvider = StatisticsProvider.NOOP;
         int queueSize = Integer.getInteger( "queueSize", 10000 );
         File indexDir = Files.createTempDirectory( "archiva_index" ).toFile();
@@ -255,6 +256,10 @@ public class RepositoryFactory
         {
             fileStore.close();
         }
+        if (executorService != null)
+        {
+            executorService.shutdownNow();
+        }
     }
 
     public StoreType getStoreType()
@@ -294,9 +299,13 @@ public class RepositoryFactory
         }
     }
 
-    private ExecutorService createExecutor()
+    private void createExecutor()
     {
-        return Executors.newCachedThreadPool();
+        if (executorService ==null )
+        {
+            executorService = Executors.newCachedThreadPool();
+        }
+
 //
 //        ThreadPoolExecutor executor =
 //            new ThreadPoolExecutor( 0, 5, 60L, TimeUnit.SECONDS, new 
LinkedBlockingQueue<>(),

http://git-wip-us.apache.org/repos/asf/archiva/blob/c0623553/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
----------------------------------------------------------------------
diff --git 
a/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
 
b/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
index 6094a63..52f37b4 100644
--- 
a/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
+++ 
b/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
@@ -84,7 +84,9 @@ public class JcrRepositoryStatisticsGatheringTest
 
         RepositoryFactory repositoryFactory = new RepositoryFactory();
         repositoryFactory.setRepositoryPath( dir.getPath() );
-        session = repositoryFactory.createRepository().login(new 
SimpleCredentials( "admin", "admin".toCharArray()));
+        repositoryFactory.setStoreType( 
RepositoryFactory.StoreType.IN_MEMORY_TYPE );
+        session = repositoryFactory.createRepository() //
+            .login(new SimpleCredentials( "admin", "admin".toCharArray()));
 
 
         // TODO: perhaps have an archiva-jcr-utils module shared by these 
plugins that does this and can contain

Reply via email to