Author: cstamas Date: Wed Jun 8 15:34:30 2011 New Revision: 1133437 URL: http://svn.apache.org/viewvc?rev=1133437&view=rev Log: MINDEXER-30: Fixing the AlreadyClosedException problem, tested with previous two UTs
Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java Modified: maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java URL: http://svn.apache.org/viewvc/maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java?rev=1133437&r1=1133436&r2=1133437&view=diff ============================================================================== --- maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java (original) +++ maven/indexer/trunk/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java Wed Jun 8 15:34:30 2011 @@ -107,97 +107,110 @@ public class DefaultIndexPacker Properties info = null; + final IndexingContext context = request.getContext(); + + context.lock(); + try { - // Note that for incremental indexes to work properly, a valid index.properties file - // must be present - info = readIndexProperties( request ); - - if ( request.isCreateIncrementalChunks() ) + try { - List<Integer> chunk = incrementalHandler.getIncrementalUpdates( request, info ); + // Note that for incremental indexes to work properly, a valid index.properties file + // must be present + info = readIndexProperties( request ); - if ( chunk == null ) - { - getLogger().debug( "Problem with Chunks, forcing regeneration of whole index" ); - incrementalHandler.initializeProperties( info ); - } - else if ( chunk.isEmpty() ) + if ( request.isCreateIncrementalChunks() ) { - getLogger().debug( "No incremental changes, not writing new incremental chunk" ); - } - else - { - File file = - new File( request.getTargetDir(), // - IndexingContext.INDEX_FILE_PREFIX + "." - + info.getProperty( IndexingContext.INDEX_CHUNK_COUNTER ) + ".gz" ); - - writeIndexData( request.getContext(), // - chunk, file ); + List<Integer> chunk = incrementalHandler.getIncrementalUpdates( request, info ); - if ( request.isCreateChecksumFiles() ) + if ( chunk == null ) + { + getLogger().debug( "Problem with Chunks, forcing regeneration of whole index" ); + incrementalHandler.initializeProperties( info ); + } + else if ( chunk.isEmpty() ) { - FileUtils.fileWrite( - new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(), - DigesterUtils.getSha1Digest( file ) ); - - FileUtils.fileWrite( - new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(), - DigesterUtils.getMd5Digest( file ) ); + getLogger().debug( "No incremental changes, not writing new incremental chunk" ); + } + else + { + File file = + new File( request.getTargetDir(), // + IndexingContext.INDEX_FILE_PREFIX + "." + + info.getProperty( IndexingContext.INDEX_CHUNK_COUNTER ) + ".gz" ); + + writeIndexData( request.getContext(), // + chunk, file ); + + if ( request.isCreateChecksumFiles() ) + { + FileUtils.fileWrite( + new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(), + DigesterUtils.getSha1Digest( file ) ); + + FileUtils.fileWrite( + new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(), + DigesterUtils.getMd5Digest( file ) ); + } } } } - } - catch ( IOException e ) - { - getLogger().info( "Unable to read properties file, will force index regeneration" ); - info = new Properties(); - incrementalHandler.initializeProperties( info ); - } - - Date timestamp = request.getContext().getTimestamp(); - - if ( timestamp == null ) - { - timestamp = new Date( 0 ); // never updated - } - - if ( request.getFormats().contains( IndexPackingRequest.IndexFormat.FORMAT_LEGACY ) ) - { - info.setProperty( IndexingContext.INDEX_LEGACY_TIMESTAMP, format( timestamp ) ); + catch ( IOException e ) + { + getLogger().info( "Unable to read properties file, will force index regeneration" ); + info = new Properties(); + incrementalHandler.initializeProperties( info ); + } - writeIndexArchive( request.getContext(), legacyFile ); + Date timestamp = request.getContext().getTimestamp(); - if ( request.isCreateChecksumFiles() ) + if ( timestamp == null ) { - FileUtils.fileWrite( - new File( legacyFile.getParentFile(), legacyFile.getName() + ".sha1" ).getAbsolutePath(), - DigesterUtils.getSha1Digest( legacyFile ) ); - - FileUtils.fileWrite( - new File( legacyFile.getParentFile(), legacyFile.getName() + ".md5" ).getAbsolutePath(), - DigesterUtils.getMd5Digest( legacyFile ) ); + timestamp = new Date( 0 ); // never updated } - } - if ( request.getFormats().contains( IndexPackingRequest.IndexFormat.FORMAT_V1 ) ) - { - info.setProperty( IndexingContext.INDEX_TIMESTAMP, format( timestamp ) ); + if ( request.getFormats().contains( IndexPackingRequest.IndexFormat.FORMAT_LEGACY ) ) + { + info.setProperty( IndexingContext.INDEX_LEGACY_TIMESTAMP, format( timestamp ) ); - writeIndexData( request.getContext(), null, v1File ); + writeIndexArchive( request.getContext(), legacyFile ); - if ( request.isCreateChecksumFiles() ) + if ( request.isCreateChecksumFiles() ) + { + FileUtils.fileWrite( + new File( legacyFile.getParentFile(), legacyFile.getName() + ".sha1" ).getAbsolutePath(), + DigesterUtils.getSha1Digest( legacyFile ) ); + + FileUtils.fileWrite( + new File( legacyFile.getParentFile(), legacyFile.getName() + ".md5" ).getAbsolutePath(), + DigesterUtils.getMd5Digest( legacyFile ) ); + } + } + + if ( request.getFormats().contains( IndexPackingRequest.IndexFormat.FORMAT_V1 ) ) { - FileUtils.fileWrite( new File( v1File.getParentFile(), v1File.getName() + ".sha1" ).getAbsolutePath(), - DigesterUtils.getSha1Digest( v1File ) ); + info.setProperty( IndexingContext.INDEX_TIMESTAMP, format( timestamp ) ); + + writeIndexData( request.getContext(), null, v1File ); - FileUtils.fileWrite( new File( v1File.getParentFile(), v1File.getName() + ".md5" ).getAbsolutePath(), - DigesterUtils.getMd5Digest( v1File ) ); + if ( request.isCreateChecksumFiles() ) + { + FileUtils.fileWrite( + new File( v1File.getParentFile(), v1File.getName() + ".sha1" ).getAbsolutePath(), + DigesterUtils.getSha1Digest( v1File ) ); + + FileUtils.fileWrite( + new File( v1File.getParentFile(), v1File.getName() + ".md5" ).getAbsolutePath(), + DigesterUtils.getMd5Digest( v1File ) ); + } } - } - writeIndexProperties( request, info ); + writeIndexProperties( request, info ); + } + finally + { + context.unlock(); + } } private Properties readIndexProperties( IndexPackingRequest request )