Package org.apache.lucene.index
Class MergeScheduler
- java.lang.Object
-
- org.apache.lucene.index.MergeScheduler
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
ConcurrentMergeScheduler
,NoMergeScheduler
,SerialMergeScheduler
public abstract class MergeScheduler extends Object implements Closeable
Expert:IndexWriter
uses an instance implementing this interface to execute the merges selected by aMergePolicy
. The default MergeScheduler isConcurrentMergeScheduler
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
MergeScheduler.MergeSource
Provides access to new merges and executes the actual merge
-
Field Summary
Fields Modifier and Type Field Description protected InfoStream
infoStream
For messages about merge scheduling
-
Constructor Summary
Constructors Modifier Constructor Description protected
MergeScheduler()
Sole constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
close()
Close this MergeScheduler.Executor
getIntraMergeExecutor(MergePolicy.OneMerge merge)
Provides an executor for parallelism during a single merge operation.abstract void
merge(MergeScheduler.MergeSource mergeSource, MergeTrigger trigger)
Run the merges provided byMergeScheduler.MergeSource.getNextMerge()
.protected void
message(String message)
Outputs the given message - this method assumesverbose()
was called and returned true.protected boolean
verbose()
Returns true if infoStream messages are enabled.Directory
wrapForMerge(MergePolicy.OneMerge merge, Directory in)
Wraps the incomingDirectory
so that we can merge-throttle it usingRateLimitedIndexOutput
.
-
-
-
Field Detail
-
infoStream
protected InfoStream infoStream
For messages about merge scheduling
-
-
Method Detail
-
merge
public abstract void merge(MergeScheduler.MergeSource mergeSource, MergeTrigger trigger) throws IOException
Run the merges provided byMergeScheduler.MergeSource.getNextMerge()
.- Parameters:
mergeSource
- theIndexWriter
to obtain the merges from.trigger
- theMergeTrigger
that caused this merge to happen- Throws:
IOException
-
wrapForMerge
public Directory wrapForMerge(MergePolicy.OneMerge merge, Directory in)
Wraps the incomingDirectory
so that we can merge-throttle it usingRateLimitedIndexOutput
.
-
getIntraMergeExecutor
public Executor getIntraMergeExecutor(MergePolicy.OneMerge merge)
Provides an executor for parallelism during a single merge operation. By default, the method returns aSameThreadExecutorService
where all intra-merge actions occur in their calling thread.
-
close
public void close() throws IOException
Close this MergeScheduler.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
verbose
protected boolean verbose()
Returns true if infoStream messages are enabled. This method is usually used in conjunction withmessage(String)
:if (verbose()) { message("your message"); }
-
-