diff --git a/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java b/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java index 611f5048283..00be8166075 100644 --- a/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java +++ b/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThreadPool.java @@ -41,6 +41,11 @@ import org.apache.lucene.util.SetOnce; *

*/ public abstract class DocumentsWriterPerThreadPool { + /** The maximum number of simultaneous threads that may be + * indexing documents at once in IndexWriter; if more + * than this many threads arrive they will wait for + * others to finish. */ + public final static int DEFAULT_MAX_THREAD_STATES = 8; /** * {@link ThreadState} references and guards a @@ -127,9 +132,17 @@ public abstract class DocumentsWriterPerThreadPool { private CodecProvider codecProvider; private FieldNumberBiMap globalFieldMap; private final SetOnce documentsWriter = new SetOnce(); + + /** + * Creates a new {@link DocumentsWriterPerThreadPool} with max. + * {@link #DEFAULT_MAX_THREAD_STATES} thread states. + */ + public DocumentsWriterPerThreadPool() { + this(DEFAULT_MAX_THREAD_STATES); + } public DocumentsWriterPerThreadPool(int maxNumPerThreads) { - maxNumPerThreads = (maxNumPerThreads < 1) ? IndexWriterConfig.DEFAULT_MAX_THREAD_STATES : maxNumPerThreads; + maxNumPerThreads = (maxNumPerThreads < 1) ? DEFAULT_MAX_THREAD_STATES : maxNumPerThreads; perThreads = new ThreadState[maxNumPerThreads]; numThreadStatesActive = 0; } diff --git a/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java b/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java index ef7b27caabf..72002bcd17c 100644 --- a/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java +++ b/lucene/src/java/org/apache/lucene/index/IndexWriterConfig.java @@ -82,12 +82,6 @@ public final class IndexWriterConfig implements Cloneable { */ public static long WRITE_LOCK_TIMEOUT = 1000; - /** The maximum number of simultaneous threads that may be - * indexing documents at once in IndexWriter; if more - * than this many threads arrive they will wait for - * others to finish. */ - public final static int DEFAULT_MAX_THREAD_STATES = 8; - /** Default setting for {@link #setReaderPooling}. */ public final static boolean DEFAULT_READER_POOLING = false; @@ -162,7 +156,7 @@ public final class IndexWriterConfig implements Cloneable { codecProvider = CodecProvider.getDefault(); mergePolicy = new TieredMergePolicy(); readerPooling = DEFAULT_READER_POOLING; - indexerThreadPool = new ThreadAffinityDocumentsWriterThreadPool(DEFAULT_MAX_THREAD_STATES); + indexerThreadPool = new ThreadAffinityDocumentsWriterThreadPool(); readerTermsIndexDivisor = DEFAULT_READER_TERMS_INDEX_DIVISOR; perThreadHardLimitMB = DEFAULT_RAM_PER_THREAD_HARD_LIMIT_MB; } @@ -544,8 +538,8 @@ public final class IndexWriterConfig implements Cloneable { * IndexWriter to assign thread-states to incoming indexing threads. If no * {@link DocumentsWriterPerThreadPool} is set {@link IndexWriter} will use * {@link ThreadAffinityDocumentsWriterThreadPool} with max number of - * thread-states set to {@value #DEFAULT_MAX_THREAD_STATES} (see - * {@link #DEFAULT_MAX_THREAD_STATES}). + * thread-states set to {@value DocumentsWriterPerThreadPool#DEFAULT_MAX_THREAD_STATES} (see + * {@link DocumentsWriterPerThreadPool#DEFAULT_MAX_THREAD_STATES}). *

*

* NOTE: The given {@link DocumentsWriterPerThreadPool} instance must not be used with @@ -569,18 +563,6 @@ public final class IndexWriterConfig implements Cloneable { return this.indexerThreadPool; } - /** Returns the max number of simultaneous threads that may be indexing - * documents at once in IndexWriter. - *

- * To modify the max number of thread-states a new - * {@link DocumentsWriterPerThreadPool} must be set via - * {@link #setIndexerThreadPool(DocumentsWriterPerThreadPool)}. - *

- * @see #setIndexerThreadPool(DocumentsWriterPerThreadPool) */ - public int getMaxThreadStates() { - return indexerThreadPool.getMaxThreadStates(); - } - /** By default, IndexWriter does not pool the * SegmentReaders it must open for deletions and * merging, unless a near-real-time reader has been @@ -705,7 +687,6 @@ public final class IndexWriterConfig implements Cloneable { sb.append("codecProvider=").append(codecProvider).append("\n"); sb.append("mergePolicy=").append(mergePolicy).append("\n"); sb.append("indexerThreadPool=").append(indexerThreadPool).append("\n"); - sb.append("maxThreadStates=").append(indexerThreadPool.getMaxThreadStates()).append("\n"); sb.append("readerPooling=").append(readerPooling).append("\n"); sb.append("readerTermsIndexDivisor=").append(readerTermsIndexDivisor).append("\n"); sb.append("flushPolicy=").append(flushPolicy).append("\n"); diff --git a/lucene/src/java/org/apache/lucene/index/ThreadAffinityDocumentsWriterThreadPool.java b/lucene/src/java/org/apache/lucene/index/ThreadAffinityDocumentsWriterThreadPool.java index c646ec267c0..9df6b5aebf9 100644 --- a/lucene/src/java/org/apache/lucene/index/ThreadAffinityDocumentsWriterThreadPool.java +++ b/lucene/src/java/org/apache/lucene/index/ThreadAffinityDocumentsWriterThreadPool.java @@ -32,7 +32,15 @@ import org.apache.lucene.document.Document; */ public class ThreadAffinityDocumentsWriterThreadPool extends DocumentsWriterPerThreadPool { private Map threadBindings = new ConcurrentHashMap(); - + + /** + * Creates a new {@link DocumentsWriterPerThreadPool} with max. + * {@link #DEFAULT_MAX_THREAD_STATES} thread states. + */ + public ThreadAffinityDocumentsWriterThreadPool() { + this(DEFAULT_MAX_THREAD_STATES); + } + public ThreadAffinityDocumentsWriterThreadPool(int maxNumPerThreads) { super(maxNumPerThreads); assert getMaxThreadStates() >= 1; diff --git a/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java b/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java index 6dc45249d88..689a6ad0911 100644 --- a/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java +++ b/lucene/src/test/org/apache/lucene/index/TestIndexWriterConfig.java @@ -66,7 +66,6 @@ public class TestIndexWriterConfig extends LuceneTestCase { assertEquals(IndexWriterConfig.DEFAULT_READER_POOLING, conf.getReaderPooling()); assertTrue(DocumentsWriterPerThread.defaultIndexingChain == conf.getIndexingChain()); assertNull(conf.getMergedSegmentWarmer()); - assertEquals(IndexWriterConfig.DEFAULT_MAX_THREAD_STATES, conf.getMaxThreadStates()); assertEquals(IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR, conf.getReaderTermsIndexDivisor()); assertEquals(TieredMergePolicy.class, conf.getMergePolicy().getClass()); assertEquals(ThreadAffinityDocumentsWriterThreadPool.class, conf.getIndexerThreadPool().getClass()); @@ -132,7 +131,6 @@ public class TestIndexWriterConfig extends LuceneTestCase { assertEquals(IndexWriterConfig.DISABLE_AUTO_FLUSH, IndexWriterConfig.DEFAULT_MAX_BUFFERED_DOCS); assertEquals(16.0, IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB, 0.0); assertEquals(false, IndexWriterConfig.DEFAULT_READER_POOLING); - assertEquals(8, IndexWriterConfig.DEFAULT_MAX_THREAD_STATES); assertEquals(IndexReader.DEFAULT_TERMS_INDEX_DIVISOR, IndexWriterConfig.DEFAULT_READER_TERMS_INDEX_DIVISOR); } @@ -262,12 +260,6 @@ public class TestIndexWriterConfig extends LuceneTestCase { // this is expected } - assertEquals(IndexWriterConfig.DEFAULT_MAX_THREAD_STATES, conf.getMaxThreadStates()); - conf.setIndexerThreadPool(new ThreadAffinityDocumentsWriterThreadPool(5)); - assertEquals(5, conf.getMaxThreadStates()); - conf.setIndexerThreadPool(new ThreadAffinityDocumentsWriterThreadPool(0)); - assertEquals(IndexWriterConfig.DEFAULT_MAX_THREAD_STATES, conf.getMaxThreadStates()); - // Test MergePolicy assertEquals(TieredMergePolicy.class, conf.getMergePolicy().getClass()); conf.setMergePolicy(new LogDocMergePolicy());