git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1484377 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-1.4-M4
@@ -122,7 +122,7 @@ public class DefaultIndexMerger | |||
indexPacker.packIndex( request ); | |||
} | |||
temporaryGroupIndexes.add( | |||
new TemporaryGroupIndex( tempRepoFile, tempRepoId, indexMergerRequest.getGroupId() ) ); | |||
new TemporaryGroupIndex( tempRepoFile, tempRepoId, indexMergerRequest.getGroupId(), indexMergerRequest.getMergedIndexTtl() ) ); | |||
stopWatch.stop(); | |||
log.info( "merged index for repos {} in {} s", indexMergerRequest.getRepositoriesIds(), | |||
stopWatch.getTime() ); |
@@ -42,6 +42,8 @@ public class IndexMergerRequest | |||
private String mergedIndexPath = "/.indexer"; | |||
private int mergedIndexTtl; | |||
public IndexMergerRequest( Collection<String> repositoriesIds, boolean packIndex, String groupId ) | |||
{ | |||
this.repositoriesIds = repositoriesIds; | |||
@@ -52,13 +54,14 @@ public class IndexMergerRequest | |||
/** | |||
* @since 1.4-M4 | |||
*/ | |||
public IndexMergerRequest( Collection<String> repositoriesIds, boolean packIndex, String groupId, | |||
String mergedIndexPath ) | |||
public IndexMergerRequest(Collection<String> repositoriesIds, boolean packIndex, String groupId, | |||
String mergedIndexPath, int mergedIndexTtl) | |||
{ | |||
this.repositoriesIds = repositoriesIds; | |||
this.packIndex = packIndex; | |||
this.groupId = groupId; | |||
this.mergedIndexPath = mergedIndexPath; | |||
this.mergedIndexTtl = mergedIndexTtl; | |||
} | |||
public Collection<String> getRepositoriesIds() | |||
@@ -101,6 +104,14 @@ public class IndexMergerRequest | |||
this.mergedIndexPath = mergedIndexPath; | |||
} | |||
public int getMergedIndexTtl() { | |||
return mergedIndexTtl; | |||
} | |||
public void setMergedIndexTtl(int mergedIndexTtl) { | |||
this.mergedIndexTtl = mergedIndexTtl; | |||
} | |||
@Override | |||
public String toString() | |||
{ | |||
@@ -109,6 +120,7 @@ public class IndexMergerRequest | |||
sb.append( ", packIndex=" ).append( packIndex ); | |||
sb.append( ", groupId='" ).append( groupId ).append( '\'' ); | |||
sb.append( ", mergedIndexPath='" ).append( mergedIndexPath ).append( '\'' ); | |||
sb.append( ", mergedIndexTtl='" ).append( mergedIndexTtl ).append( '\'' ); | |||
sb.append( '}' ); | |||
return sb.toString(); | |||
} |
@@ -36,11 +36,14 @@ public class TemporaryGroupIndex | |||
private String groupId; | |||
public TemporaryGroupIndex( File directory, String indexId, String groupId ) | |||
private int mergedIndexTtl; | |||
public TemporaryGroupIndex(File directory, String indexId, String groupId, int mergedIndexTtl) | |||
{ | |||
this.directory = directory; | |||
this.indexId = indexId; | |||
this.groupId = groupId; | |||
this.mergedIndexTtl = mergedIndexTtl; | |||
} | |||
public long getCreationTime() | |||
@@ -86,6 +89,14 @@ public class TemporaryGroupIndex | |||
this.groupId = groupId; | |||
} | |||
public int getMergedIndexTtl() { | |||
return mergedIndexTtl; | |||
} | |||
public void setMergedIndexTtl(int mergedIndexTtl) { | |||
this.mergedIndexTtl = mergedIndexTtl; | |||
} | |||
@Override | |||
public int hashCode() | |||
{ |
@@ -58,7 +58,7 @@ public class TemporaryGroupIndexCleaner | |||
for ( TemporaryGroupIndex temporaryGroupIndex : indexMerger.getTemporaryGroupIndexes() ) | |||
{ | |||
// cleanup files older than the ttl | |||
if ( new Date().getTime() - temporaryGroupIndex.getCreationTime() > indexMerger.getGroupMergedIndexTtl() ) | |||
if ( new Date().getTime() - temporaryGroupIndex.getCreationTime() > temporaryGroupIndex.getMergedIndexTtl() ) | |||
{ | |||
log.info( "cleanTemporaryIndex for groupId {}", temporaryGroupIndex.getGroupId() ); | |||
indexMerger.cleanTemporaryGroupIndex( temporaryGroupIndex ); |
@@ -1240,11 +1240,11 @@ public class ArchivaDavResourceFactory | |||
repositoryGroupConfiguration.getId(), authzRepos ); | |||
IndexingContext indexingContext = indexMerger.buildMergedIndex( | |||
new IndexMergerRequest( authzRepos, true, repositoryGroupConfiguration.getId(), | |||
repositoryGroupConfiguration.getMergedIndexPath() ) ); | |||
repositoryGroupConfiguration.getMergedIndexPath(), repositoryGroupConfiguration.getMergedIndexTtl() ) ); | |||
File mergedRepoDir = indexingContext.getIndexDirectoryFile(); | |||
TemporaryGroupIndex temporaryGroupIndex = new TemporaryGroupIndex( mergedRepoDir, indexingContext.getId(), | |||
repositoryGroupConfiguration.getId() ).setCreationTime( | |||
new Date().getTime() ); | |||
repositoryGroupConfiguration.getId(),repositoryGroupConfiguration.getMergedIndexTtl() ) | |||
.setCreationTime(new Date().getTime() ); | |||
temporaryGroupIndexMap.put( repositoryGroupConfiguration.getId(), temporaryGroupIndex ); | |||
session.setAttribute( TemporaryGroupIndexSessionCleaner.TEMPORARY_INDEX_SESSION_KEY, | |||
temporaryGroupIndexMap ); |