mirror of
https://github.com/apache/lucene.git
synced 2025-02-08 02:58:58 +00:00
LUCENE-5161: set sane default readChunkSizes, make the setter work, and test the chunking
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1512723 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0e332a923d
commit
51314afdd4
@ -112,6 +112,10 @@ Bug Fixes
|
||||
seek/lookup which can cause sideeffects if done on a cached FST root arc.
|
||||
(Simon Willnauer)
|
||||
|
||||
* LUCENE-5161: Fix default chunk sizes in FSDirectory.java to not be unnecessarily large,
|
||||
and fix setReadChunkSize to always work regardless of whether the machine is 32bit
|
||||
or 64bit. (Uwe Schindler, Robert Muir)
|
||||
|
||||
API Changes
|
||||
|
||||
* LUCENE-5094: Add ramBytesUsed() to MultiDocValues.OrdinalMap.
|
||||
|
@ -112,12 +112,9 @@ import org.apache.lucene.util.Constants;
|
||||
public abstract class FSDirectory extends Directory {
|
||||
|
||||
/**
|
||||
* Default read chunk size. This is a conditional default: on 32bit JVMs, it defaults to 100 MB. On 64bit JVMs, it's
|
||||
* <code>Integer.MAX_VALUE</code>.
|
||||
*
|
||||
* @see #setReadChunkSize
|
||||
* Default read chunk size: 2*{@link BufferedIndexInput#MERGE_BUFFER_SIZE}.
|
||||
*/
|
||||
public static final int DEFAULT_READ_CHUNK_SIZE = Constants.JRE_IS_64BIT ? Integer.MAX_VALUE : 100 * 1024 * 1024;
|
||||
public static final int DEFAULT_READ_CHUNK_SIZE = BufferedIndexInput.MERGE_BUFFER_SIZE * 2;
|
||||
|
||||
protected final File directory; // The underlying filesystem directory
|
||||
protected final Set<String> staleFiles = synchronizedSet(new HashSet<String>()); // Files written, but not yet sync'ed
|
||||
@ -370,20 +367,13 @@ public abstract class FSDirectory extends Directory {
|
||||
* already-opened {@link IndexInput}s. You should call
|
||||
* this before attempting to open an index on the
|
||||
* directory.</p>
|
||||
*
|
||||
* <p> <b>NOTE</b>: This value should be as large as
|
||||
* possible to reduce any possible performance impact. If
|
||||
* you still encounter an incorrect OutOfMemoryError,
|
||||
* trying lowering the chunk size.</p>
|
||||
*/
|
||||
public final void setReadChunkSize(int chunkSize) {
|
||||
// LUCENE-1566
|
||||
if (chunkSize <= 0) {
|
||||
throw new IllegalArgumentException("chunkSize must be positive");
|
||||
}
|
||||
if (!Constants.JRE_IS_64BIT) {
|
||||
this.chunkSize = chunkSize;
|
||||
}
|
||||
this.chunkSize = chunkSize;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -20,6 +20,7 @@ package org.apache.lucene.util;
|
||||
import java.io.*;
|
||||
import java.lang.annotation.*;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
@ -1135,9 +1136,10 @@ public abstract class LuceneTestCase extends Assert {
|
||||
FSDirectory d = null;
|
||||
try {
|
||||
d = CommandLineUtil.newFSDirectory(clazz, file);
|
||||
} catch (Exception e) {
|
||||
d = FSDirectory.open(file);
|
||||
} catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
|
||||
Rethrow.rethrow(e);
|
||||
}
|
||||
d.setReadChunkSize(_TestUtil.nextInt(random(), 8, 32678));
|
||||
return d;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user