[hibernate-commits] Hibernate SVN: r15526 - search/trunk/src/java/org/hibernate/search/reader.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Nov 6 10:09:01 EST 2008
Author: sannegrinovero
Date: 2008-11-06 10:09:00 -0500 (Thu, 06 Nov 2008)
New Revision: 15526
Modified:
search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java
Log:
HSEARCH-250 avoid calling directoryProvider.getDirectory()
more than once in openReader as the result may change.
Modified: search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java 2008-11-06 03:38:52 UTC (rev 15525)
+++ search/trunk/src/java/org/hibernate/search/reader/SharingBufferReaderProvider.java 2008-11-06 15:09:00 UTC (rev 15526)
@@ -34,7 +34,7 @@
private static final Logger log = LoggerFactory.make();
/**
- * contains all Readers (most current per DP and all unclosed old)
+ * contains all Readers (most current per Directory and all unclosed old readers)
*/
//TODO ConcurrentHashMap's constructor could benefit from some hints as arguments.
protected final Map<IndexReader, ReaderUsagePair> allReaders = new ConcurrentHashMap<IndexReader, ReaderUsagePair>();
@@ -67,7 +67,7 @@
Set<DirectoryProvider<?>> providers = searchFactoryImplementor.getDirectoryProviders();
// create the readers for the known providers. Unfortunately, it is not possible to
- // create all readers in initalize since some providers have more than one directory (eg
+ // create all readers in initialize since some providers have more than one directory (eg
// FSSlaveDirectoryProvider). See also HSEARCH-250.
for ( DirectoryProvider provider : providers ) {
createReader( provider.getDirectory() );
@@ -114,13 +114,11 @@
IndexReader[] readers = new IndexReader[length];
log.debug( "Opening IndexReader for directoryProviders: {}", length );
for ( int index = 0; index < length; index++ ) {
- DirectoryProvider directoryProvider = directoryProviders[index];
- if ( log.isTraceEnabled() ) {
- log.trace( "Opening IndexReader from {}", directoryProvider.getDirectory() );
- }
- PerDirectoryLatestReader directoryLatestReader = currentReaders.get( directoryProvider.getDirectory() );
+ Directory directory = directoryProviders[index].getDirectory();
+ log.trace( "Opening IndexReader from {}", directory );
+ PerDirectoryLatestReader directoryLatestReader = currentReaders.get( directory );
if ( directoryLatestReader == null ) { // might eg happen for FSSlaveDirectoryProvider
- directoryLatestReader = createReader( directoryProvider.getDirectory() );
+ directoryLatestReader = createReader( directory );
}
readers[index] = directoryLatestReader.refreshAndGet();
}
@@ -144,7 +142,7 @@
}
//overridable method for testability:
- protected IndexReader readerFactory(Directory directory) throws IOException {
+ protected IndexReader readerFactory(final Directory directory) throws IOException {
return IndexReader.open( directory, true );
}
@@ -229,7 +227,7 @@
}
/**
- * Gets an updated IndexReader for the current DirectoryProvider;
+ * Gets an updated IndexReader for the current Directory;
* the index status will be checked.
*
* @return the current IndexReader if it's in sync with underlying index, a new one otherwise.
More information about the hibernate-commits
mailing list