[ 
https://issues.apache.org/jira/browse/FLINK-9423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16488705#comment-16488705
 ] 

ASF GitHub Bot commented on FLINK-9423:
---------------------------------------

Github user sihuazhou commented on a diff in the pull request:

    https://github.com/apache/flink/pull/6062#discussion_r190517094
  
    --- Diff: 
flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimerHeap.java
 ---
    @@ -458,24 +458,33 @@ private int globalKeyGroupToLocalIndex(int keyGroup) {
                return keyGroup - keyGroupRange.getStartKeyGroup();
        }
     
    -   private void checkCapacity(int requested) {
    +   private void growIfRequired(int requiredSize) {
                int oldArraySize = queue.length;
     
    -           if (requested >= oldArraySize) {
    +           if (requiredSize >= oldArraySize) {
                        final int grow = (oldArraySize < 64) ? oldArraySize + 2 
: oldArraySize >> 1;
    -                   int newArraySize = oldArraySize + grow;
    -                   if (newArraySize - MAX_ARRAY_SIZE > 0) {
    -                           if (newArraySize < 0 || requested > 
MAX_ARRAY_SIZE) {
    -                                   throw new OutOfMemoryError("Required 
timer heap exceeds maximum size!");
    -                           } else {
    -                                   newArraySize = MAX_ARRAY_SIZE;
    -                           }
    -                   }
    -                   queue = Arrays.copyOf(queue, newArraySize);
    +                   resizeQueueArray(oldArraySize + grow);
                }
                // TODO implement shrinking as well?
        }
     
    +   private void resizeForBulkLoad(int maxTotalSize) {
    +           if (maxTotalSize > queue.length) {
    +                   resizeQueueArray(maxTotalSize + (maxTotalSize / 8));
    --- End diff --
    
    `maxTotalSize  / 8` -> `maxTotalSize >>> 3`


> Implement efficient deletes for heap based timer service
> --------------------------------------------------------
>
>                 Key: FLINK-9423
>                 URL: https://issues.apache.org/jira/browse/FLINK-9423
>             Project: Flink
>          Issue Type: Improvement
>          Components: Streaming
>    Affects Versions: 1.6.0
>            Reporter: Stefan Richter
>            Assignee: Stefan Richter
>            Priority: Major
>
> The current data structures in the `HeapInternalTimerService` are not able to 
> support efficient timer deletes, the complexity is currently O\(n\), where n 
> is the number of registered timers.
>  
> We can keep track of timer's positions in the priority queue and (in 
> combination with the already existing set/map) have a more efficient 
> algorithm for deletes.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to