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()
-