mirror of https://github.com/apache/archiva.git
[MRM-1956] Replace tomcat-jdbc pool with HikariCP
Signed-off-by: olivier lamy <olamy@apache.org>
This commit is contained in:
parent
c6d882dfdc
commit
8d3f82a479
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 )
|
||||
|
|
|
@ -27,9 +27,11 @@ 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;
|
||||
|
@ -48,7 +50,7 @@ import static org.mockito.Mockito.mock;
|
|||
@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
|
||||
public abstract class AbstractArchivaRepositoryScanningTaskExecutorTest
|
||||
extends TestCase
|
||||
{
|
||||
@Inject
|
||||
|
@ -96,12 +98,11 @@ public abstract class ArchivaRepositoryScanningTaskExecutorAbstractTest
|
|||
// 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() );
|
||||
}
|
||||
FileUtils.getFiles( repoDir, "**", null ) //
|
||||
.stream().forEach( file -> file.setLastModified( cal.getTimeInMillis() ) );
|
||||
|
||||
// TODO: test they are excluded instead
|
||||
for ( String dir : (List<String>) FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
|
||||
for ( String dir : FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
|
||||
{
|
||||
FileUtils.deleteDirectory( new File( repoDir, dir ) );
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
21
pom.xml
21
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>
|
||||
|
||||
<!--
|
||||
|
@ -644,16 +649,6 @@
|
|||
<artifactId>commons-lang</artifactId>
|
||||
<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>
|
||||
|
|
Loading…
Reference in New Issue