Class DocumentsWriterStallControl


  • final class DocumentsWriterStallControl
    extends java.lang.Object
    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 DocumentsWriterPerThreadPool.ThreadStates in DocumentsWriterPerThreadPool is exceeded. Once flushing catches up and the number of flushing DWPT is equal or lower than the number of active DocumentsWriterPerThreadPool.ThreadStates threads are released and can continue indexing.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int numWaiting  
      private boolean stalled  
      private java.util.Map<java.lang.Thread,​java.lang.Boolean> waiting  
      private boolean wasStalled  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) boolean anyStalledThreads()  
      private void decrWaiters()  
      (package private) boolean hasBlocked()  
      private void incWaiters()  
      (package private) boolean isHealthy()  
      (package private) boolean isThreadQueued​(java.lang.Thread t)  
      (package private) void updateStalled​(boolean stalled)
      Update the stalled flag status.
      (package private) void waitIfStalled()
      Blocks if documents writing is currently in a stalled state.
      (package private) boolean wasStalled()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • stalled

        private volatile boolean stalled
      • numWaiting

        private int numWaiting
      • wasStalled

        private boolean wasStalled
      • waiting

        private final java.util.Map<java.lang.Thread,​java.lang.Boolean> waiting
    • Constructor Detail

      • DocumentsWriterStallControl

        DocumentsWriterStallControl()
    • Method Detail

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

        boolean isHealthy()
      • isThreadQueued

        boolean isThreadQueued​(java.lang.Thread t)
      • wasStalled

        boolean wasStalled()