Author: olamy
Date: Tue Aug 16 23:03:05 2011
New Revision: 1158468
URL: http://svn.apache.org/viewvc?rev=1158468&view=rev
Log:
doh ensure we scan repository to index datas for the first scan, ensure we are
not searching on all index
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java?rev=1158468&r1=1158467&r2=1158468&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
Tue Aug 16 23:03:05 2011
@@ -112,7 +112,7 @@ public class NexusIndexerConsumer
try
{
- log.info( "Creating indexing context for repo : " +
repository.getId() );
+ log.info( "Creating indexing context for repo : {}",
repository.getId() );
context = ArtifactIndexingTask.createContext( repository,
nexusIndexer, allIndexCreators );
}
catch ( IOException e )
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=1158468&r1=1158467&r2=1158468&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
Tue Aug 16 23:03:05 2011
@@ -46,6 +46,7 @@ import org.springframework.stereotype.Se
import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -83,7 +84,7 @@ public class NexusRepositorySearch
List<String> previousSearchTerms )
throws RepositorySearchException
{
- addIndexingContexts( selectedRepos );
+ List<String> indexingContextIds = addIndexingContexts( selectedRepos );
// since upgrade to nexus 2.0.0, query has changed from g:[QUERIED
TERM]* to g:*[QUERIED TERM]*
// resulting to more wildcard searches so we need to increase max
clause count
@@ -109,7 +110,7 @@ public class NexusRepositorySearch
q.add( iQuery, Occur.MUST );
}
- return search( limits, q );
+ return search( limits, q, indexingContextIds );
}
/**
@@ -123,7 +124,7 @@ public class NexusRepositorySearch
throw new RepositorySearchException( "Repositories cannot be
null." );
}
- addIndexingContexts( searchFields.getRepositories() );
+ List<String> indexingContextIds = addIndexingContexts(
searchFields.getRepositories() );
BooleanQuery q = new BooleanQuery();
if ( StringUtils.isNotBlank( searchFields.getGroupId() ) )
@@ -191,15 +192,16 @@ public class NexusRepositorySearch
throw new RepositorySearchException( "No search fields set." );
}
- return search( limits, q );
+ return search( limits, q, indexingContextIds );
}
- private SearchResults search( SearchResultLimits limits, BooleanQuery q )
+ private SearchResults search( SearchResultLimits limits, BooleanQuery q,
List<String> indexingContextIds )
throws RepositorySearchException
{
try
{
FlatSearchRequest request = new FlatSearchRequest( q );
+ request.setContexts( getIndexingContexts( indexingContextIds ) );
FlatSearchResponse response = indexer.searchFlat( request );
if ( response == null || response.getTotalHits() == 0 )
@@ -238,6 +240,26 @@ public class NexusRepositorySearch
}*/
}
+ private List<IndexingContext> getIndexingContexts( List<String> ids )
+ {
+ List<IndexingContext> contexts = new ArrayList<IndexingContext>(
ids.size() );
+
+ for ( String id : ids )
+ {
+ IndexingContext context = indexer.getIndexingContexts().get( id );
+ if ( context != null )
+ {
+ contexts.add( context );
+ }
+ else
+ {
+ log.warn( "context with id {} not exists", id );
+ }
+ }
+
+ return contexts;
+ }
+
private void constructQuery( String term, BooleanQuery q )
{
q.add( indexer.constructQuery( MAVEN.GROUP_ID, new
StringSearchExpression( term ) ), Occur.SHOULD );
@@ -245,11 +267,18 @@ public class NexusRepositorySearch
q.add( indexer.constructQuery( MAVEN.VERSION, new
StringSearchExpression( term ) ), Occur.SHOULD );
q.add( indexer.constructQuery( MAVEN.PACKAGING, new
StringSearchExpression( term ) ), Occur.SHOULD );
q.add( indexer.constructQuery( MAVEN.CLASSNAMES, new
StringSearchExpression( term ) ), Occur.SHOULD );
+ // olamy IMHO we could set this option as at least one must match
+ //q.setMinimumNumberShouldMatch( 1 );
}
- private void addIndexingContexts( List<String> selectedRepos )
+ /**
+ * @param selectedRepos
+ * @return indexing contextId used
+ */
+ private List<String> addIndexingContexts( List<String> selectedRepos )
{
+ List<String> indexingContextIds = new ArrayList<String>();
for ( String repo : selectedRepos )
{
try
@@ -270,18 +299,30 @@ public class NexusRepositorySearch
indexDirectory = new File( repoConfig.getLocation(),
".indexer" );
}
- if ( indexer.getIndexingContexts().containsKey(
repoConfig.getId() ) )
+ IndexingContext context =
indexer.getIndexingContexts().get( repoConfig.getId() );
+ if ( context != null )
{
// alreday here so no need to record it again
- log.info( "index with id {} already exists skip adding
it", repoConfig.getId() );
+ log.debug( "index with id {} already exists skip
adding it", repoConfig.getId() );
+ // set searchable flag
+ context.setSearchable( repoConfig.isScanned() );
+ indexingContextIds.add( context.getId() );
continue;
}
- IndexingContext context = indexer.addIndexingContext(
repoConfig.getId(), repoConfig.getId(),
- new
File( repoConfig.getLocation() ),
-
indexDirectory, null, null,
-
getAllIndexCreators() );
+ context = indexer.addIndexingContext( repoConfig.getId(),
repoConfig.getId(),
+ new File(
repoConfig.getLocation() ), indexDirectory, null,
+ null,
getAllIndexCreators() );
context.setSearchable( repoConfig.isScanned() );
+ if ( context.isSearchable() )
+ {
+ indexingContextIds.add( context.getId() );
+ }
+ else
+ {
+ log.warn( "indexingContext with id {} not searchable",
repoConfig.getId() );
+ }
+
}
else
{
@@ -299,6 +340,7 @@ public class NexusRepositorySearch
continue;
}
}
+ return indexingContextIds;
}
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java?rev=1158468&r1=1158467&r2=1158468&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
Tue Aug 16 23:03:05 2011
@@ -112,6 +112,16 @@ public class ArchivaIndexingTaskExecutor
if ( ArtifactIndexingTask.Action.FINISH.equals(
indexingTask.getAction() )
&& indexingTask.isExecuteOnEntireRepo() )
{
+ // TODO update or not !!
+ // do the full scan
+ try
+ {
+ nexusIndexer.scan( context );
+ }
+ catch ( IOException e )
+ {
+ throw new TaskExecutionException( "Error scan repository "
+ repository, e );
+ }
log.debug( "Finishing indexing task on repo: {}",
repository.getId() );
finishIndexingTask( indexingTask, repository, context );
}
@@ -129,12 +139,14 @@ public class ArchivaIndexingTaskExecutor
catch ( IOException e )
{
log.error( "Error occurred while creating context: " +
e.getMessage() );
- throw new TaskExecutionException( "Error occurred
while creating context: " + e.getMessage() );
+ throw new TaskExecutionException( "Error occurred
while creating context: " + e.getMessage(),
+ e );
}
catch ( UnsupportedExistingLuceneIndexException e )
{
log.error( "Error occurred while creating context: " +
e.getMessage() );
- throw new TaskExecutionException( "Error occurred
while creating context: " + e.getMessage() );
+ throw new TaskExecutionException( "Error occurred
while creating context: " + e.getMessage(),
+ e );
}
}
@@ -163,12 +175,12 @@ public class ArchivaIndexingTaskExecutor
ac.getArtifactInfo().artifactId ) ),
BooleanClause.Occur.MUST );
q.add( nexusIndexer.constructQuery( MAVEN.VERSION,
new SourcedSearchExpression(
ac.getArtifactInfo().version ) ),
BooleanClause.Occur.MUST );
- if (ac.getArtifactInfo().classifier != null)
+ if ( ac.getArtifactInfo().classifier != null )
{
q.add( nexusIndexer.constructQuery(
MAVEN.CLASSIFIER, new SourcedSearchExpression(
ac.getArtifactInfo().classifier ) ),
BooleanClause.Occur.MUST );
}
- if (ac.getArtifactInfo().packaging != null)
+ if ( ac.getArtifactInfo().packaging != null )
{
q.add( nexusIndexer.constructQuery(
MAVEN.PACKAGING, new SourcedSearchExpression(
ac.getArtifactInfo().packaging ) ),
BooleanClause.Occur.MUST );
@@ -212,8 +224,8 @@ public class ArchivaIndexingTaskExecutor
}
catch ( IOException e )
{
- log.error(
- "Error occurred while executing indexing task '" +
indexingTask + "': " + e.getMessage() );
+ log.error( "Error occurred while executing indexing task
'" + indexingTask + "': " + e.getMessage(),
+ e );
throw new TaskExecutionException(
"Error occurred while executing indexing task '" +
indexingTask + "'", e );
}
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java?rev=1158468&r1=1158467&r2=1158468&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
Tue Aug 16 23:03:05 2011
@@ -175,16 +175,18 @@ public class ArtifactIndexingTask
indexDirectory = new File( managedRepository, ".indexer" );
}
- if ( indexer.getIndexingContexts().containsKey( repository.getId() ) )
+ IndexingContext context = indexer.getIndexingContexts().get(
repository.getId() );
+
+ if ( context != null )
{
LoggerFactory.getLogger( ArtifactIndexingTask.class ).warn(
"skip adding repository with id {} as already exists",
repository.getId() );
+ return context;
}
- IndexingContext context =
- indexer.addIndexingContext( repository.getId(),
repository.getId(), managedRepository, indexDirectory,
-
managedRepository.toURI().toURL().toString(),
-
indexDirectory.toURI().toURL().toString(), indexCreators );
+ context = indexer.addIndexingContext( repository.getId(),
repository.getId(), managedRepository, indexDirectory,
+
managedRepository.toURI().toURL().toString(),
+
indexDirectory.toURI().toURL().toString(), indexCreators );
context.setSearchable( repository.isScanned() );
return context;