Anton Kalashnikov created FLINK-31610:
-----------------------------------------

             Summary: Refactoring of LocalBufferPool
                 Key: FLINK-31610
                 URL: https://issues.apache.org/jira/browse/FLINK-31610
             Project: Flink
          Issue Type: Improvement
          Components: Runtime / Network
    Affects Versions: 1.17.0
            Reporter: Anton Kalashnikov


FLINK-31293 bug highlighted the issue with the internal mutual consistency of 
different fields in LocalBufferPool. ex.:
-  `numberOfRequestedOverdraftMemorySegments`
-  `numberOfRequestedMemorySegments`
-  `availableMemorySegment`
-  `currentPoolSize`

Most of the problem was fixed already(I hope) but it is a good idea to 
reorganize the code in such a way that all invariants between all fields inside 
will be clearly determined and difficult to break.

As one example I can propose getting rid of 
numberOfRequestedOverdraftMemorySegments and using existing 
numberOfRequestedMemorySegments instead. That means:

- the pool will be available when `!availableMemorySegments.isEmpty() && 
unavailableSubpartitionsCount == 0`
- we don't request a new `ordinary` buffer when 
`numberOfRequestedMemorySegments >=  currentPoolSize` but we request the 
overdraft buffer instead
- `setNumBuffers` should work automatically without any changes

I think we can come up with a couple of such improvements to simplify the code.



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

Reply via email to