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 2011/11/02 23:33:35 UTC
svn commit: r1196846 - in /archiva/trunk: ./
archiva-modules/archiva-base/archiva-indexer/
archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/
archiva-modules/archiva-base/archiva-indexer/src/main/resources/MET...
Author: olamy
Date: Wed Nov 2 22:33:35 2011
New Revision: 1196846
URL: http://svn.apache.org/viewvc?rev=1196846&view=rev
Log:
[MRM-815] aggregate indices for repository groups.
cleanup created temp directories.
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/pom.xml
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j.xml
archiva/trunk/pom.xml
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-indexer/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/pom.xml?rev=1196846&r1=1196845&r2=1196846&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-indexer/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-indexer/pom.xml Wed Nov 2 22:33:35 2011
@@ -34,6 +34,20 @@
<artifactId>archiva-repository-admin-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
</dependency>
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java?rev=1196846&r1=1196845&r2=1196846&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultIndexMerger.java Wed Nov 2 22:33:35 2011
@@ -19,21 +19,28 @@ package org.apache.archiva.indexer.merge
*/
import com.google.common.io.Files;
-import com.google.inject.Inject;
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.common.plexusbridge.MavenIndexerUtils;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
+import org.apache.commons.io.FileUtils;
import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
import org.apache.maven.index.packer.IndexPacker;
import org.apache.maven.index.packer.IndexPackingRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author Olivier Lamy
@@ -44,6 +51,8 @@ public class DefaultIndexMerger
implements IndexMerger
{
+ private Logger log = LoggerFactory.getLogger( getClass() );
+
@Inject
private ManagedRepositoryAdmin managedRepositoryAdmin;
@@ -53,7 +62,9 @@ public class DefaultIndexMerger
private IndexPacker indexPacker;
- @javax.inject.Inject
+ private List<TemporaryIndex> temporaryIndexes = new CopyOnWriteArrayList<TemporaryIndex>();
+
+ @Inject
public DefaultIndexMerger( PlexusSisuBridge plexusSisuBridge, MavenIndexerUtils mavenIndexerUtils )
throws PlexusSisuBridgeException
{
@@ -93,6 +104,7 @@ public class DefaultIndexMerger
IndexPackingRequest request = new IndexPackingRequest( indexingContext, indexLocation );
indexPacker.packIndex( request );
}
+ temporaryIndexes.add( new TemporaryIndex( tempRepoFile ) );
return indexingContext.getIndexDirectoryFile();
}
catch ( IOException e )
@@ -104,4 +116,60 @@ public class DefaultIndexMerger
throw new IndexMergerException( e.getMessage(), e );
}
}
+
+
+ @Scheduled( fixedDelay = 900000 )
+ public void cleanTemporaryIndex()
+ {
+ for ( TemporaryIndex temporaryIndex : temporaryIndexes )
+ {
+ // cleanup files older than 30 minutes
+ if ( new Date().getTime() - temporaryIndex.creationTime > 1800000 )
+ {
+ try
+ {
+ FileUtils.deleteDirectory( temporaryIndex.directory );
+ temporaryIndexes.remove( temporaryIndex );
+ log.debug( "remove directory {}", temporaryIndex.directory );
+ }
+ catch ( IOException e )
+ {
+ log.warn( "failed to remove directory:" + temporaryIndex.directory, e );
+ }
+ }
+ temporaryIndexes.remove( temporaryIndex );
+ }
+ }
+
+ private static class TemporaryIndex
+ {
+ private long creationTime = new Date().getTime();
+
+ private File directory;
+
+ TemporaryIndex( File directory )
+ {
+ this.directory = directory;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return Long.toString( creationTime ).hashCode();
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( !( o instanceof TemporaryIndex ) )
+ {
+ return false;
+ }
+ return this.creationTime == ( (TemporaryIndex) o ).creationTime;
+ }
+ }
}
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml?rev=1196846&r1=1196845&r2=1196846&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml Wed Nov 2 22:33:35 2011
@@ -22,17 +22,27 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd"
- default-lazy-init="true">
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd
+ http://www.springframework.org/schema/task
+ http://www.springframework.org/schema/task/spring-task-3.0.xsd"
+ default-lazy-init="false">
<context:annotation-config/>
<context:component-scan base-package="org.apache.archiva.indexer.search,org.apache.archiva.indexer.merger"/>
<bean id="logger" class="org.apache.archiva.common.utils.Slf4JPlexusLogger">
- <constructor-arg type="java.lang.Class"><value>org.sonatype.nexus.index.DefaultNexusIndexer</value></constructor-arg>
+ <constructor-arg type="java.lang.Class">
+ <value>org.apache.maven.index.DefaultNexusIndexer</value>
+ </constructor-arg>
</bean>
+
+ <task:executor id="springExecutor" pool-size="2"/>
+ <task:scheduler id="springScheduler" pool-size="2"/>
+ <task:annotation-driven executor="springExecutor" scheduler="springScheduler"/>
+
</beans>
\ No newline at end of file
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j.xml?rev=1196846&r1=1196845&r2=1196846&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/tomcat/log4j.xml Wed Nov 2 22:33:35 2011
@@ -73,6 +73,10 @@
<level value="info"/>
</logger>
+ <logger name="org.apache.archiva.indexer.merger">
+ <level value="debug"/>
+ </logger>
+
<root>
<priority value ="info" />
<appender-ref ref="console" />
Modified: archiva/trunk/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/pom.xml?rev=1196846&r1=1196845&r2=1196846&view=diff
==============================================================================
--- archiva/trunk/pom.xml (original)
+++ archiva/trunk/pom.xml Wed Nov 2 22:33:35 2011
@@ -1223,6 +1223,17 @@
</dependency>
<dependency>
<groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${spring.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<exclusions>