[ISSUE #6449] Fix NPE in MultiProtocolRemotingServer (#6450)

This commit is contained in:
lk
2023-03-23 11:41:23 +08:00
committed by GitHub
parent b41d1ddf35
commit 59c82d9976
2 changed files with 21 additions and 20 deletions
@@ -52,10 +52,10 @@ public class MultiProtocolRemotingServer extends NettyRemotingServer {
this.nettyServerConfig = nettyServerConfig;
this.remotingProtocolHandler = new RemotingProtocolHandler(
this.getEncoder(),
this.getDistributionHandler(),
this.getConnectionManageHandler(),
this.getServerHandler());
this::getEncoder,
this::getDistributionHandler,
this::getConnectionManageHandler,
this::getServerHandler);
this.http2ProtocolProxyHandler = new Http2ProtocolProxyHandler();
}
@@ -19,6 +19,7 @@ package org.apache.rocketmq.proxy.remoting.protocol.remoting;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import java.util.function.Supplier;
import org.apache.rocketmq.proxy.remoting.protocol.ProtocolHandler;
import org.apache.rocketmq.remoting.netty.NettyDecoder;
import org.apache.rocketmq.remoting.netty.NettyEncoder;
@@ -27,19 +28,19 @@ import org.apache.rocketmq.remoting.netty.RemotingCodeDistributionHandler;
public class RemotingProtocolHandler implements ProtocolHandler {
private final NettyEncoder encoder;
private final RemotingCodeDistributionHandler remotingCodeDistributionHandler;
private final NettyRemotingServer.NettyConnectManageHandler connectionManageHandler;
private final NettyRemotingServer.NettyServerHandler serverHandler;
private final Supplier<NettyEncoder> encoderSupplier;
private final Supplier<RemotingCodeDistributionHandler> remotingCodeDistributionHandlerSupplier;
private final Supplier<NettyRemotingServer.NettyConnectManageHandler> connectionManageHandlerSupplier;
private final Supplier<NettyRemotingServer.NettyServerHandler> serverHandlerSupplier;
public RemotingProtocolHandler(NettyEncoder encoder,
RemotingCodeDistributionHandler remotingCodeDistributionHandler,
NettyRemotingServer.NettyConnectManageHandler connectionManageHandler,
NettyRemotingServer.NettyServerHandler serverHandler) {
this.encoder = encoder;
this.remotingCodeDistributionHandler = remotingCodeDistributionHandler;
this.connectionManageHandler = connectionManageHandler;
this.serverHandler = serverHandler;
public RemotingProtocolHandler(Supplier<NettyEncoder> encoderSupplier,
Supplier<RemotingCodeDistributionHandler> remotingCodeDistributionHandlerSupplier,
Supplier<NettyRemotingServer.NettyConnectManageHandler> connectionManageHandlerSupplier,
Supplier<NettyRemotingServer.NettyServerHandler> serverHandlerSupplier) {
this.encoderSupplier = encoderSupplier;
this.remotingCodeDistributionHandlerSupplier = remotingCodeDistributionHandlerSupplier;
this.connectionManageHandlerSupplier = connectionManageHandlerSupplier;
this.serverHandlerSupplier = serverHandlerSupplier;
}
@Override
@@ -50,11 +51,11 @@ public class RemotingProtocolHandler implements ProtocolHandler {
@Override
public void config(ChannelHandlerContext ctx, ByteBuf msg) {
ctx.pipeline().addLast(
this.encoder,
this.encoderSupplier.get(),
new NettyDecoder(),
this.remotingCodeDistributionHandler,
this.connectionManageHandler,
this.serverHandler
this.remotingCodeDistributionHandlerSupplier.get(),
this.connectionManageHandlerSupplier.get(),
this.serverHandlerSupplier.get()
);
}
}