Author: olamy
Date: Tue Jun 28 22:19:47 2011
New Revision: 1140870
URL: http://svn.apache.org/viewvc?rev=1140870&view=rev
Log:
correctly close index on shutdown
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java?rev=1140870&r1=1140869&r2=1140870&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
Tue Jun 28 22:19:47 2011
@@ -19,8 +19,12 @@ package org.apache.maven.archiva.web.sta
* under the License.
*/
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
import org.apache.maven.archiva.common.ArchivaException;
+import org.apache.maven.index.NexusIndexer;
+import org.apache.maven.index.context.IndexingContext;
import org.codehaus.plexus.taskqueue.Task;
import org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor;
import org.codehaus.redback.components.scheduler.DefaultScheduler;
@@ -30,6 +34,7 @@ import org.springframework.web.context.s
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
+import java.io.IOException;
import java.lang.reflect.Field;
import java.util.concurrent.ExecutorService;
@@ -49,6 +54,10 @@ public class ArchivaStartup
private RepositoryArchivaTaskScheduler repositoryTaskScheduler;
+ private PlexusSisuBridge plexusSisuBridge;
+
+ private NexusIndexer nexusIndexer;
+
public void contextInitialized( ServletContextEvent contextEvent )
{
WebApplicationContext wac =
@@ -56,12 +65,23 @@ public class ArchivaStartup
SecuritySynchronization securitySync = wac.getBean(
SecuritySynchronization.class );
- repositoryTaskScheduler = wac.getBean(
"archivaTaskScheduler#repository", RepositoryArchivaTaskScheduler.class );
+ repositoryTaskScheduler =
+ wac.getBean( "archivaTaskScheduler#repository",
RepositoryArchivaTaskScheduler.class );
tqeRepoScanning = wac.getBean(
"taskQueueExecutor#repository-scanning", ThreadedTaskQueueExecutor.class );
tqeIndexing = wac.getBean( "taskQueueExecutor#indexing",
ThreadedTaskQueueExecutor.class );
+ plexusSisuBridge = wac.getBean( PlexusSisuBridge.class );
+
+ try
+ {
+ nexusIndexer = plexusSisuBridge.lookup( NexusIndexer.class );
+ }
+ catch ( PlexusSisuBridgeException e )
+ {
+ throw new RuntimeException( "Unable to get NexusIndexer: " +
e.getMessage(), e );
+ }
try
{
securitySync.startup();
@@ -126,6 +146,19 @@ public class ArchivaStartup
// TODO fix close call
//applicationContext.
}
+
+ // closing correctly indexer to close correctly lock and file
+ for( IndexingContext indexingContext :
nexusIndexer.getIndexingContexts().values() )
+ {
+ try
+ {
+ indexingContext.close( false );
+ } catch ( Exception e )
+ {
+ contextEvent.getServletContext().log( "skip error closing
indexingContext " + e.getMessage() );
+ }
+ }
+
}
private void stopTaskQueueExecutor( ThreadedTaskQueueExecutor
taskQueueExecutor )