[ https://issues.apache.org/jira/browse/FLINK-9636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16531492#comment-16531492 ]
ASF GitHub Bot commented on FLINK-9636: --------------------------------------- Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/6238#discussion_r199832400 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java --- @@ -151,7 +151,12 @@ public void recycle(MemorySegment segment) { this.numTotalRequiredBuffers += numRequiredBuffers; - redistributeBuffers(); + try { + redistributeBuffers(); + } catch (Throwable t) { + this.numTotalRequiredBuffers -= numRequiredBuffers; + ExceptionUtils.rethrowIOException(t); --- End diff -- After an offline discussion with Nico, we agreed that we should add this bit and additionally also call `redistributeBuffers` in the failure case in `requestMemorySegments`. > Network buffer leaks in requesting a batch of segments during canceling > ----------------------------------------------------------------------- > > Key: FLINK-9636 > URL: https://issues.apache.org/jira/browse/FLINK-9636 > Project: Flink > Issue Type: Bug > Components: Network > Affects Versions: 1.5.0, 1.6.0 > Reporter: zhijiang > Assignee: Nico Kruber > Priority: Major > Labels: pull-request-available > Fix For: 1.6.0, 1.5.1 > > > In {{NetworkBufferPool#requestMemorySegments}}, {{numTotalRequiredBuffers}} > is increased by {{numRequiredBuffers}} first. > If {{InterruptedException}} is thrown during polling segments from the > available queue, the requested segments will be recycled back to > {{NetworkBufferPool}}, {{numTotalRequiredBuffers}} is decreased by the number > of polled segments which is now inconsistent with {{numRequiredBuffers}}. So > {{numTotalRequiredBuffers}} in {{NetworkBufferPool}} leaks in this case, and > we can also decrease {{numRequiredBuffers}} to fix this bug. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)