I took a look at ChannelTrafficShapingHandler. Looks like it's because it doesn't support FileRegion. Spark's messages use this interface. See org.apache.spark.network.protocol.MessageWithHeader.
On Tue, Jun 13, 2017 at 4:17 AM, Niu Zhaojie <nzjem...@gmail.com> wrote: > Hi All: > > I am trying to control the network read/write speed with > ChannelTrafficShapingHandler provided by Netty. > > > In TransportContext.java > > I modify it as below: > > public TransportChannelHandler initializePipeline( > SocketChannel channel, > RpcHandler channelRpcHandler) { > try { > // added by zhaojie > logger.info("want to try control read bandwidth on host: " + host); > final ChannelTrafficShapingHandler channelShaping = new > ChannelTrafficShapingHandler(50, 50, 1000); > > TransportChannelHandler channelHandler = createChannelHandler(channel, > channelRpcHandler); > > channel.pipeline() > .addLast("encoder", ENCODER) > .addLast(TransportFrameDecoder.HANDLER_NAME, > NettyUtils.createFrameDecoder()) > .addLast("decoder", DECODER) > .addLast("channelTrafficShaping", channelShaping) > .addLast("idleStateHandler", new IdleStateHandler(0, 0, > conf.connectionTimeoutMs() / 1000)) > // NOTE: Chunks are currently guaranteed to be returned in the > order of request, but this > // would require more logic to guarantee if this were not part of > the same event loop. > .addLast("handler", channelHandler); > > > I create a ChannelTrafficShapingHandler and register it into the pipeline > of the channel. I set the write and read speed as 50kb/sec in the > constructor. > Except for it, what else do I need to do? > > However, it does not work. Is this idea correct? Am I missing something? > Is there any better way ? > > Thanks. > > -- > *Regards,* > *Zhaojie* > >