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

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

Github user NicoK commented on the issue:

    https://github.com/apache/flink/pull/4529
  
    With the recent update of the netty version in flink-shaded (see 
https://github.com/apache/flink-shaded/commit/1233f1bb0e2b9fafa4260603aa130b7eb9995a7a),
 most of this PR is indirectly included. However, I probably need to fall back 
to the original code creating a copy at least for the fallback non-credit based 
paths due to the original problem.
    
    Additionally, since the introduction of the credit-based flow control we 
should not use too much memory on the receiver side anymore: memory size in the 
range of once in our buffers, at most one (or two depending on the above) more 
copies in netty temporarily.
    
    Ultimately, we could go one step further of decoding directly to our 
buffers here, but that is not covered by this PR and will only work with 
credit-based flow control.


> avoid one additional buffer copy when receiving messages
> --------------------------------------------------------
>
>                 Key: FLINK-7428
>                 URL: https://issues.apache.org/jira/browse/FLINK-7428
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Network
>    Affects Versions: 1.4.0
>            Reporter: Nico Kruber
>            Assignee: Nico Kruber
>            Priority: Major
>
> By using {{LengthFieldBasedFrameDecoder}}, we create one unnecessary (netty) 
> buffer copy in this class which could be easily avoided since we can ensure 
> that the buffer is free to be released after decoding it in the 
> {{NettyMessageDecoder}} and into our own buffer and/or events.
> The solution would be to make {{NettyMessageDecoder}} extend from 
> {{LengthFieldBasedFrameDecoder}} and handle the decoding of the frames and 
> the objects in there. In the frame creation otherwise done by 
> {{LengthFieldBasedFrameDecoder}}, we could use a sliced buffer instead. This 
> solution also makes the channel pipelines a bit simpler.



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

Reply via email to