Ryan Hendrickson created NIFI-10824:
---------------------------------------

             Summary: Yellow indicator to say re-sorting is necessary & add a 
warn log if swapping from the Active to Swap Queue takes too long
                 Key: NIFI-10824
                 URL: https://issues.apache.org/jira/browse/NIFI-10824
             Project: Apache NiFi
          Issue Type: Improvement
            Reporter: Ryan Hendrickson


Version 1.1.0 introduced visual indication of queue growth relative to back 
pressure settings and when back pressure is engaged. .. It goes from Grey to 
Red, indicating Back-Pressure has kicked in... It'd be great to add a 3rd 
color, like Yellow, indicating that re-sorting will be necessary due to the 
back-pressure being larger than the queue size, then if it takes longer than 
XXX millis to sort, log something to the bulletin board.

 

*Background..*

A lot of people don't realize they shouldn't have a queue with a million flow 
files in it, especially with a Prioritizor set. 

 
For any Relationship there are 2 underlying queues: 
       (1) An Active Queue (java.util.PriorityQueue) for the first 20,000 
items, defined by the nifi.queue.swap.threshold in nifi.properties.
       (2) A Swap Queue (java.util.ArrayList) for the rest of the queue's items.
 
If the Active Queue is full, every new item, regardless of priority, is placed 
on the Swap Queue.  No item on the Swap Queue will be re-prioritized until the 
entire Active Queue is empty ([Line 
284|https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/queue/SwappablePriorityQueue.java#L284]).
  Thus, the PriorityAttributePrioritize only "actively" sorts the first 20,000 
items on the relationship.  Once the queue is empty, it'll re-sort the rest and 
move the top 20,000 over.  Then the problem repeats.  On our team, no amount of 
training can get mitigate NiFi Dataflow users from setting the backpressure to 
unlimited or sky-high.
If backpressure is properly set, the time it takes to re-sort the the Swap 
Queue should be minimal.  In our case, we set the system-wide back-pressure 
size default to the same as the swap queue size to prevent any re-sorting.

However, if the backpressure is unset and the queue begins to grow in size, the 
re-sorting will take longer and longer.  At some threshold, I think it would be 
advantageous for NiFi to emit a warn log to the user saying it took over XXX 
millis to re-sort the queue and also to show a visual indictor that swapping & 
re-sorting will be necessary because the backpressure size is larger than the 
swap size.

 

https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/queue/SwappablePriorityQueue.java#L271



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to