Class HeapPriorityQueue<T extends org.apache.flink.streaming.runtime.watermarkstatus.HeapPriorityQueue.HeapPriorityQueueElement>

  • Type Parameters:
    T - type of the contained elements.

    public class HeapPriorityQueue<T extends org.apache.flink.streaming.runtime.watermarkstatus.HeapPriorityQueue.HeapPriorityQueueElement>
    extends Object
    This class has similar functions with HeapPriorityQueue. It is introduced as the replacement of HeapPriorityQueue to be used in StatusWatermarkValve, to avoid affecting the performance of memory state backend.

    The reason why the performance of memory state backend will be affected if we reuse the HeapPriorityQueue: In some scenarios, the HeapPriorityQueueElement will only have one implementation(used by memory state backend), which allows the jvm to inline its methods(getInternalIndex, setInternalIndex). If we reuse it in StatusWatermarkValve, it will cause it to have multiple implementations. Once there are multiple implementations, its methods will be difficult to be inlined by jvm, which will result in poor performance of memory state backend.

    • Constructor Detail

      • HeapPriorityQueue

        public HeapPriorityQueue​(@Nonnull
                                 org.apache.flink.streaming.runtime.watermarkstatus.HeapPriorityQueue.PriorityComparator<T> elementPriorityComparator,
                                 @Nonnegative
                                 int minimumCapacity)
        Creates an empty HeapPriorityQueue with the requested initial capacity.
        Parameters:
        elementPriorityComparator - comparator for the priority of contained elements.
        minimumCapacity - the minimum and initial capacity of this priority queue.
    • Method Detail

      • adjustModifiedElement

        public void adjustModifiedElement​(@Nonnull
                                          T element)
      • poll

        @Nullable
        public T poll()
      • peek

        @Nullable
        public T peek()
      • add

        public boolean add​(@Nonnull
                           T toAdd)
      • remove

        public boolean remove​(@Nonnull
                              T toRemove)
      • isEmpty

        public boolean isEmpty()
      • size

        public int size()
      • clear

        public void clear()
        Clears the queue.