Ensure that no reference counted objects leak memory

The objects stored in the relay buffer may leak memory when they are no longer used. Alway remember to release their reference count in all cases.

Also save the relay channel and its name in BackendMetricsHandler when the handler is registered. This is because when retrying a relay, the write is sent as soon as the channel is connected, and the channelActive function is not called yet.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208757730
This commit is contained in:
jianglai 2018-08-14 19:32:53 -07:00
parent 2e4e542205
commit c5c0051f5e
3 changed files with 21 additions and 2 deletions

View file

@ -78,12 +78,12 @@ public class BackendMetricsHandler extends ChannelDuplexHandler {
}
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
// Backend channel is always established after a frontend channel is connected, so this
relayedChannel = ctx.channel().attr(RELAY_CHANNEL_KEY).get();
checkNotNull(relayedChannel, "No frontend channel found.");
relayedProtocolName = relayedChannel.attr(PROTOCOL_KEY).get().name();
super.channelActive(ctx);
super.channelRegistered(ctx);
}
@Override