Package org.apache.lucene.index
Class DocumentsWriterStallControl
java.lang.Object
org.apache.lucene.index.DocumentsWriterStallControl
Controls the health status of a
DocumentsWriter sessions. This class
used to block incoming indexing threads if flushing significantly slower than
indexing to ensure the DocumentsWriters healthiness. If flushing is
significantly slower than indexing the net memory used within an
IndexWriter session can increase very quickly and easily exceed the
JVM's available memory.
To prevent OOM Errors and ensure IndexWriter's stability this class blocks
incoming threads from indexing once 2 x number of available
DocumentsWriterPerThreads in DocumentsWriterPerThreadPool is exceeded.
Once flushing catches up and the number of flushing DWPT is equal or lower
than the number of active DocumentsWriterPerThreads threads are released and can
continue indexing.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intprivate booleanprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) booleanprivate void(package private) int(package private) booleanprivate void(package private) boolean(package private) boolean(package private) voidupdateStalled(boolean stalled) Update the stalled flag status.(package private) voidBlocks if documents writing is currently in a stalled state.(package private) boolean
-
Field Details
-
stalled
private volatile boolean stalled -
numWaiting
private int numWaiting -
wasStalled
private boolean wasStalled -
waiting
-
-
Constructor Details
-
DocumentsWriterStallControl
DocumentsWriterStallControl()
-
-
Method Details
-
updateStalled
void updateStalled(boolean stalled) Update the stalled flag status. This method will set the stalled flag totrueiff the number of flushingDocumentsWriterPerThreadis greater than the number of activeDocumentsWriterPerThread. Otherwise it will reset theDocumentsWriterStallControlto healthy and release all threads waiting onwaitIfStalled() -
waitIfStalled
void waitIfStalled()Blocks if documents writing is currently in a stalled state. -
anyStalledThreads
boolean anyStalledThreads() -
incWaiters
private void incWaiters() -
decrWaiters
private void decrWaiters() -
hasBlocked
boolean hasBlocked() -
getNumWaiting
int getNumWaiting() -
isHealthy
boolean isHealthy() -
isThreadQueued
-
wasStalled
boolean wasStalled()
-