You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2017/06/20 11:49:45 UTC

archiva git commit: [MRM-1956] Replace tomcat-jdbc pool with HikariCP

Repository: archiva
Updated Branches:
  refs/heads/master c6d882dfd -> 8d3f82a47


[MRM-1956] Replace tomcat-jdbc pool with HikariCP

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/8d3f82a4
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/8d3f82a4
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/8d3f82a4

Branch: refs/heads/master
Commit: 8d3f82a479b6eb2bf709b1831351e20309735683
Parents: c6d882d
Author: olivier lamy <ol...@apache.org>
Authored: Tue Jun 20 21:49:28 2017 +1000
Committer: olivier lamy <ol...@apache.org>
Committed: Tue Jun 20 21:49:28 2017 +1000

----------------------------------------------------------------------
 archiva-jetty/pom.xml                           |  16 +--
 archiva-jetty/src/main/conf/jetty.xml           |  20 ++-
 .../scanner/DefaultRepositoryScanner.java       |   2 +-
 ...chivaRepositoryScanningTaskExecutorTest.java | 139 +++++++++++++++++++
 ...ositoryScanningTaskExecutorAbstractTest.java | 138 ------------------
 ...epositoryScanningTaskExecutorPhase1Test.java |   2 +-
 ...epositoryScanningTaskExecutorPhase2Test.java |  38 ++---
 .../src/test/resources/log4j2-test.xml          |  38 +++++
 pom.xml                                         |  21 ++-
 9 files changed, 215 insertions(+), 199 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-jetty/pom.xml
----------------------------------------------------------------------
diff --git a/archiva-jetty/pom.xml b/archiva-jetty/pom.xml
index 33b0048..36b95ae 100644
--- a/archiva-jetty/pom.xml
+++ b/archiva-jetty/pom.xml
@@ -65,7 +65,11 @@
       <version>${jettyVersion}</version>
       <scope>runtime</scope>
     </dependency>
-
+    <dependency>
+      <groupId>com.zaxxer</groupId>
+      <artifactId>HikariCP</artifactId>
+      <scope>runtime</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.derby</groupId>
       <artifactId>derby</artifactId>
@@ -81,16 +85,6 @@
       <artifactId>ant</artifactId>
       <scope>runtime</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-jdbc</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-juli</artifactId>
-      <scope>runtime</scope>
-    </dependency>
   </dependencies>
   <build>
     <plugins>

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-jetty/src/main/conf/jetty.xml
----------------------------------------------------------------------
diff --git a/archiva-jetty/src/main/conf/jetty.xml b/archiva-jetty/src/main/conf/jetty.xml
index b7e66d4..31c8182 100644
--- a/archiva-jetty/src/main/conf/jetty.xml
+++ b/archiva-jetty/src/main/conf/jetty.xml
@@ -157,31 +157,29 @@
   <New id="users" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg>jdbc/users</Arg>
     <Arg>
-      <New class="org.apache.tomcat.jdbc.pool.DataSource">
+      <New class="com.zaxxer.hikari.HikariDataSource">
         <Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
-        <Set name="url">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users;create=true</Set>
+        <Set name="jdbcUrl">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users;create=true</Set>
         <Set name="username">sa</Set>
-        <Set name="maxActive">20</Set>
-        <Set name="removeAbandoned">true</Set>
-        <Set name="logAbandoned">true</Set>
-        <Set name="initialSize">5</Set>
-        <Set name="testOnBorrow">true</Set>
+        <Set name="maximumPoolSize">20</Set>
+        <Set name="minimumIdle">5</Set>
         <!-- very rigourous sql query validation -->
-        <Set name="validationQuery">select 1</Set>
+        <!--Set name="connectionTestQuery">select 1</Set-->
       </New>
     </Arg>
   </New>
 
+  <!--
   <New id="usersShutdown" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg>jdbc/usersShutdown</Arg>
     <Arg>
-      <New class="org.apache.tomcat.jdbc.pool.DataSource">
+      <New class="com.zaxxer.hikari.HikariDataSource">
         <Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
-        <Set name="url">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users</Set>
+        <Set name="jdbcUrl">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users</Set>
         <Set name="username">sa</Set>
       </New>
     </Arg>
   </New>
-
+  -->
 
 </Configure>

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java b/archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java
index 56ef2fd..6257880 100644
--- a/archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java
+++ b/archiva-modules/archiva-base/archiva-repository-scanner/src/main/java/org/apache/archiva/repository/scanner/DefaultRepositoryScanner.java
@@ -53,7 +53,7 @@ public class DefaultRepositoryScanner
     @Inject
     private RepositoryContentConsumers repositoryContentConsumers;
 
-    private Set<RepositoryScannerInstance> inProgressScans = new LinkedHashSet<RepositoryScannerInstance>();
+    private Set<RepositoryScannerInstance> inProgressScans = new LinkedHashSet<>();
 
     @Override
     public RepositoryScanStatistics scan( ManagedRepository repository, long changesSince )

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/AbstractArchivaRepositoryScanningTaskExecutorTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/AbstractArchivaRepositoryScanningTaskExecutorTest.java b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/AbstractArchivaRepositoryScanningTaskExecutorTest.java
new file mode 100644
index 0000000..dcddb71
--- /dev/null
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/AbstractArchivaRepositoryScanningTaskExecutorTest.java
@@ -0,0 +1,139 @@
+package org.apache.archiva.scheduler.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
+import org.apache.archiva.mock.MockRepositorySessionFactory;
+import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
+import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.plexus.util.FileUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.io.File;
+import java.util.Calendar;
+import java.util.List;
+
+import static org.mockito.Mockito.mock;
+
+/**
+ * ArchivaRepositoryScanningTaskExecutorPhase1Test
+ */
+@RunWith( ArchivaSpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
+@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD )
+public abstract class AbstractArchivaRepositoryScanningTaskExecutorTest
+    extends TestCase
+{
+    @Inject
+    @Named( value = "taskExecutor#test-repository-scanning" )
+    protected TaskExecutor taskExecutor;
+
+    @Inject
+    @Named( value = "archivaConfiguration#test-repository-scanning" )
+    protected ArchivaConfiguration archivaConfig;
+
+    @Inject
+    @Named( value = "repositoryStatisticsManager#test" )
+    protected RepositoryStatisticsManager repositoryStatisticsManager;
+
+    @Inject
+    @Named( value = "knownRepositoryContentConsumer#test-consumer" )
+    protected TestConsumer testConsumer;
+
+    @Inject
+    @Named( value = "repositorySessionFactory#mock" )
+    private MockRepositorySessionFactory factory;
+
+    protected File repoDir;
+
+    protected static final String TEST_REPO_ID = "testRepo";
+
+    protected MetadataRepository metadataRepository;
+
+    @Before
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        File sourceRepoDir = new File( "./src/test/repositories/default-repository" );
+        repoDir = new File( "./target/default-repository" );
+
+        FileUtils.deleteDirectory( repoDir );
+        assertFalse( "Default Test Repository should not exist.", repoDir.exists() );
+
+        repoDir.mkdir();
+
+        FileUtils.copyDirectoryStructure( sourceRepoDir, repoDir );
+        // set the timestamps to a time well in the past
+        Calendar cal = Calendar.getInstance();
+        cal.add( Calendar.YEAR, -1 );
+        FileUtils.getFiles( repoDir, "**", null ) //
+            .stream().forEach( file -> file.setLastModified( cal.getTimeInMillis() ) );
+
+        // TODO: test they are excluded instead
+        for ( String dir : FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
+        {
+            FileUtils.deleteDirectory( new File( repoDir, dir ) );
+        }
+
+        assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() );
+
+        assertNotNull( archivaConfig );
+
+        // Create it
+        ManagedRepositoryConfiguration repositoryConfiguration = new ManagedRepositoryConfiguration();
+        repositoryConfiguration.setId( TEST_REPO_ID );
+        repositoryConfiguration.setName( "Test Repository" );
+        repositoryConfiguration.setLocation( repoDir.getAbsolutePath() );
+        archivaConfig.getConfiguration().getManagedRepositories().clear();
+        archivaConfig.getConfiguration().addManagedRepository( repositoryConfiguration );
+
+        metadataRepository = mock( MetadataRepository.class );
+
+        factory.setRepository( metadataRepository );
+    }
+
+    @After
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        FileUtils.deleteDirectory( repoDir );
+
+        assertFalse( repoDir.exists() );
+
+        super.tearDown();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorAbstractTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorAbstractTest.java b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorAbstractTest.java
deleted file mode 100644
index 1698f07..0000000
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorAbstractTest.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package org.apache.archiva.scheduler.repository;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-import org.apache.archiva.configuration.ArchivaConfiguration;
-import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.archiva.metadata.repository.MetadataRepository;
-import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
-import org.apache.archiva.mock.MockRepositorySessionFactory;
-import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
-import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
-import org.codehaus.plexus.util.FileUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import java.io.File;
-import java.util.Calendar;
-import java.util.List;
-
-import static org.mockito.Mockito.mock;
-
-/**
- * ArchivaRepositoryScanningTaskExecutorPhase1Test
- */
-@RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
-@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD )
-public abstract class ArchivaRepositoryScanningTaskExecutorAbstractTest
-    extends TestCase
-{
-    @Inject
-    @Named( value = "taskExecutor#test-repository-scanning" )
-    protected TaskExecutor taskExecutor;
-
-    @Inject
-    @Named( value = "archivaConfiguration#test-repository-scanning" )
-    protected ArchivaConfiguration archivaConfig;
-
-    @Inject
-    @Named( value = "repositoryStatisticsManager#test" )
-    protected RepositoryStatisticsManager repositoryStatisticsManager;
-
-    @Inject
-    @Named( value = "knownRepositoryContentConsumer#test-consumer" )
-    protected TestConsumer testConsumer;
-
-    @Inject
-    @Named( value = "repositorySessionFactory#mock" )
-    private MockRepositorySessionFactory factory;
-
-    protected File repoDir;
-
-    protected static final String TEST_REPO_ID = "testRepo";
-
-    protected MetadataRepository metadataRepository;
-
-    @Before
-    @Override
-    public void setUp()
-        throws Exception
-    {
-        super.setUp();
-
-        File sourceRepoDir = new File( "./src/test/repositories/default-repository" );
-        repoDir = new File( "./target/default-repository" );
-
-        FileUtils.deleteDirectory( repoDir );
-        assertFalse( "Default Test Repository should not exist.", repoDir.exists() );
-
-        repoDir.mkdir();
-
-        FileUtils.copyDirectoryStructure( sourceRepoDir, repoDir );
-        // set the timestamps to a time well in the past
-        Calendar cal = Calendar.getInstance();
-        cal.add( Calendar.YEAR, -1 );
-        for ( File f : (List<File>) FileUtils.getFiles( repoDir, "**", null ) )
-        {
-            f.setLastModified( cal.getTimeInMillis() );
-        }
-        // TODO: test they are excluded instead
-        for ( String dir : (List<String>) FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
-        {
-            FileUtils.deleteDirectory( new File( repoDir, dir ) );
-        }
-
-        assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() );
-
-        assertNotNull( archivaConfig );
-
-        // Create it
-        ManagedRepositoryConfiguration repositoryConfiguration = new ManagedRepositoryConfiguration();
-        repositoryConfiguration.setId( TEST_REPO_ID );
-        repositoryConfiguration.setName( "Test Repository" );
-        repositoryConfiguration.setLocation( repoDir.getAbsolutePath() );
-        archivaConfig.getConfiguration().getManagedRepositories().clear();
-        archivaConfig.getConfiguration().addManagedRepository( repositoryConfiguration );
-
-        metadataRepository = mock( MetadataRepository.class );
-
-        factory.setRepository( metadataRepository );
-    }
-
-    @After
-    @Override
-    public void tearDown()
-        throws Exception
-    {
-        FileUtils.deleteDirectory( repoDir );
-
-        assertFalse( repoDir.exists() );
-
-        super.tearDown();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase1Test.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase1Test.java b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase1Test.java
index 200ebde..6d6383a 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase1Test.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase1Test.java
@@ -33,7 +33,7 @@ import java.util.Collection;
  */
 @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
 public class ArchivaRepositoryScanningTaskExecutorPhase1Test
-    extends ArchivaRepositoryScanningTaskExecutorAbstractTest
+    extends AbstractArchivaRepositoryScanningTaskExecutorTest
 {
     // Split of ArchivaRepositoryScanningTaskExecutorTest should be executed first 
     // to avoid testConsumer in unknown state if member of Phase2 all ready executed

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.java b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.java
index e346945..4a53723 100644
--- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.java
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/java/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.java
@@ -34,26 +34,23 @@ import java.util.Date;
 
 /**
  * ArchivaRepositoryScanningTaskExecutorPhase2Test
- *
- *
  */
 
 @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
 public class ArchivaRepositoryScanningTaskExecutorPhase2Test
-    extends ArchivaRepositoryScanningTaskExecutorAbstractTest
+    extends AbstractArchivaRepositoryScanningTaskExecutorTest
 {
 
     @Test
     public void testExecutorScanOnlyNewArtifacts()
         throws Exception
     {
+        createAndSaveTestStats();
+
         RepositoryTask repoTask = new RepositoryTask();
 
         repoTask.setRepositoryId( TEST_REPO_ID );
         repoTask.setScanAll( false );
-
-        createAndSaveTestStats();
-
         taskExecutor.executeTask( repoTask );
 
         // check no artifacts processed
@@ -67,7 +64,7 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         RepositoryStatistics newStats =
             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
         assertEquals( 0, newStats.getNewFileCount() );
-        assertEquals( 31, newStats.getTotalFileCount() );
+        assertEquals( 41, newStats.getTotalFileCount() );
         // FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
 //        assertEquals( 8, newStats.getTotalArtifactCount() );
 //        assertEquals( 3, newStats.getTotalGroupCount() );
@@ -100,7 +97,7 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         RepositoryStatistics updatedStats =
             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
         assertEquals( 2, updatedStats.getNewFileCount() );
-        assertEquals( 33, updatedStats.getTotalFileCount() );
+        assertEquals( 43, updatedStats.getTotalFileCount() );
         // FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
 //        assertEquals( 8, newStats.getTotalArtifactCount() );
 //        assertEquals( 3, newStats.getTotalGroupCount() );
@@ -147,7 +144,7 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         RepositoryStatistics newStats =
             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
         assertEquals( 2, newStats.getNewFileCount() );
-        assertEquals( 33, newStats.getTotalFileCount() );
+        assertEquals( 43, newStats.getTotalFileCount() );
         // FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
 //        assertEquals( 8, newStats.getTotalArtifactCount() );
 //        assertEquals( 3, newStats.getTotalGroupCount() );
@@ -194,7 +191,7 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         RepositoryStatistics newStats =
             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
         assertEquals( 2, newStats.getNewFileCount() );
-        assertEquals( 33, newStats.getTotalFileCount() );
+        assertEquals( 43, newStats.getTotalFileCount() );
         // FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
 //        assertEquals( 8, newStats.getTotalArtifactCount() );
 //        assertEquals( 3, newStats.getTotalGroupCount() );
@@ -212,8 +209,9 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         repoTask.setScanAll( true );
 
         Date date = Calendar.getInstance().getTime();
-        repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
-                                                            new Date( date.getTime() - 1234567 ), date, 8, 8 );
+        repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID, //
+                                                            new Date( date.getTime() - 1234567 ), //
+                                                            date, 8, 8 ); //
 
         taskExecutor.executeTask( repoTask );
 
@@ -227,17 +225,9 @@ public class ArchivaRepositoryScanningTaskExecutorPhase2Test
         throws MetadataRepositoryException
     {
         Date date = Calendar.getInstance().getTime();
-        RepositoryStatistics stats = new RepositoryStatistics();
-        stats.setScanStartTime( new Date( date.getTime() - 1234567 ) );
-        stats.setScanEndTime( date );
-        stats.setNewFileCount( 31 );
-        stats.setTotalArtifactCount( 8 );
-        stats.setTotalFileCount( 31 );
-        stats.setTotalGroupCount( 3 );
-        stats.setTotalProjectCount( 5 );
-        stats.setTotalArtifactFileSize( 38545 );
-
-        repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
-                                                            new Date( date.getTime() - 1234567 ), date, 31, 31 );
+
+        repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID, //
+                                                            new Date( date.getTime() - 1234567 ), date, //
+                                                            41, 41 );
     }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/log4j2-test.xml
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/log4j2-test.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/log4j2-test.xml
new file mode 100644
index 0000000..fdc40af
--- /dev/null
+++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/src/test/resources/log4j2-test.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+
+<configuration>
+  <appenders>
+    <Console name="console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c %x - %m%n"/>
+    </Console>
+  </appenders>
+  <loggers>
+
+    <logger name="org.springframework" level="error"/>
+    <logger name="org.apache.archiva" level="debug"/>
+    <root level="info">
+      <appender-ref ref="console"/>
+    </root>
+  </loggers>
+</configuration>
+
+

http://git-wip-us.apache.org/repos/asf/archiva/blob/8d3f82a4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b78f61e..8e12a4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
     <jackrabbit.version>2.14.1</jackrabbit.version>
 
     <cxf.version>3.0.3</cxf.version>
-    <derbyVersion>10.10.1.1</derbyVersion>
+    <derbyVersion>10.13.1.1</derbyVersion>
     <httpclient.version>4.5.2</httpclient.version>
     <httpclient.core.version>4.4.4</httpclient.core.version>
     <javaxMailVersion>1.4</javaxMailVersion>
@@ -95,7 +95,6 @@
     <plexus-digest.version>1.1</plexus-digest.version>
     <plexus-expression-evaluator.version>2.1</plexus-expression-evaluator.version>
     <plexus-utils.version>3.0.15</plexus-utils.version>
-    <tomcat7Version>7.0.54</tomcat7Version>
     <htmlUnitVersion>2.27</htmlUnitVersion>
 
     <release.preparationGoals>clean install</release.preparationGoals>
@@ -460,7 +459,13 @@
       <dependency>
         <groupId>com.lmax</groupId>
         <artifactId>disruptor</artifactId>
-        <version>3.2.1</version>
+        <version>3.3.6</version>
+      </dependency>
+
+      <dependency>
+        <groupId>com.zaxxer</groupId>
+        <artifactId>HikariCP</artifactId>
+        <version>2.6.3</version>
       </dependency>
 
       <!--
@@ -645,16 +650,6 @@
         <version>${commons-lang.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jdbc</artifactId>
-        <version>${tomcat7Version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-juli</artifactId>
-        <version>${tomcat7Version}</version>
-      </dependency>
-      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
         <version>1.2</version>