You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gu...@apache.org on 2021/09/09 11:05:59 UTC
[dubbo] branch 3.0 updated: [3.0-Triple] Add multiple instance
support for wire protocol (#8736)
This is an automated email from the ASF dual-hosted git repository.
guohao pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 1b100f8 [3.0-Triple] Add multiple instance support for wire protocol (#8736)
1b100f8 is described below
commit 1b100f84cb51a590c865e2d28d159b4d4c203409
Author: GuoHao <gu...@gmail.com>
AuthorDate: Thu Sep 9 19:05:48 2021 +0800
[3.0-Triple] Add multiple instance support for wire protocol (#8736)
* Add multiple instance support for wire protocol
* Fix UT
---
.../main/java/org/apache/dubbo/remoting/api/Connection.java | 2 +-
.../org/apache/dubbo/remoting/api/PortUnificationServer.java | 2 +-
.../dubbo/remoting/api/PortUnificationServerHandler.java | 12 ++++++++----
.../java/org/apache/dubbo/remoting/api/WireProtocol.java | 5 +++--
.../java/org/apache/dubbo/remoting/api/EmptyProtocol.java | 6 ++++--
.../apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java | 10 +++++-----
6 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/Connection.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/Connection.java
index 8975b56..e67b049 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/Connection.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/Connection.java
@@ -113,7 +113,7 @@ public class Connection extends AbstractReferenceCounted implements ReferenceCou
// TODO support IDLE
// int heartbeatInterval = UrlUtils.getHeartbeat(getUrl());
p.addLast(connectionHandler);
- protocol.configClientPipeline(p, sslContext);
+ protocol.configClientPipeline(url, p, sslContext);
// TODO support Socks5
}
});
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServer.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServer.java
index 5d050be..a789851 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServer.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServer.java
@@ -119,7 +119,7 @@ public class PortUnificationServer {
p.addLast("negotiation-ssl", new SslServerTlsHandler(getUrl()));
}
- final PortUnificationServerHandler puHandler = new PortUnificationServerHandler(protocols);
+ final PortUnificationServerHandler puHandler = new PortUnificationServerHandler(url, protocols);
p.addLast("server-idle-handler", new IdleStateHandler(0, 0, idleTimeout, MILLISECONDS));
p.addLast("negotiation-protocol", puHandler);
channelGroup = puHandler.getChannels();
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServerHandler.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServerHandler.java
index e7beabc..87bb127 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServerHandler.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/PortUnificationServerHandler.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.remoting.api;
+import org.apache.dubbo.common.URL;
+
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.group.DefaultChannelGroup;
@@ -28,14 +30,16 @@ import java.util.List;
public class PortUnificationServerHandler extends ByteToMessageDecoder {
private final SslContext sslCtx;
+ private final URL url;
private final List<WireProtocol> protocols;
private final DefaultChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
- public PortUnificationServerHandler(List<WireProtocol> protocols) {
- this(null,protocols);
+ public PortUnificationServerHandler(URL url, List<WireProtocol> protocols) {
+ this(url, null,protocols);
}
- public PortUnificationServerHandler(SslContext sslCtx, List<WireProtocol> protocols) {
+ public PortUnificationServerHandler(URL url, SslContext sslCtx, List<WireProtocol> protocols) {
+ this.url = url;
this.sslCtx = sslCtx;
this.protocols = protocols;
}
@@ -76,7 +80,7 @@ public class PortUnificationServerHandler extends ByteToMessageDecoder {
case UNRECOGNIZED:
continue;
case RECOGNIZED:
- protocol.configServerPipeline(ctx.pipeline(), sslCtx);
+ protocol.configServerPipeline(url, ctx.pipeline(), sslCtx);
ctx.pipeline().remove(this);
case NEED_MORE_DATA:
return;
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/WireProtocol.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/WireProtocol.java
index de6cd32..96f7459 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/WireProtocol.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/api/WireProtocol.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.remoting.api;
+import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
@@ -27,9 +28,9 @@ public interface WireProtocol {
ProtocolDetector detector();
- void configServerPipeline(ChannelPipeline pipeline, SslContext sslContext);
+ void configServerPipeline(URL url, ChannelPipeline pipeline, SslContext sslContext);
- void configClientPipeline(ChannelPipeline pipeline, SslContext sslContext);
+ void configClientPipeline(URL url, ChannelPipeline pipeline, SslContext sslContext);
void close();
}
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/api/EmptyProtocol.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/api/EmptyProtocol.java
index d9a0840..7d3b5cf 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/api/EmptyProtocol.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/api/EmptyProtocol.java
@@ -16,6 +16,8 @@
*/
package org.apache.dubbo.remoting.api;
+import org.apache.dubbo.common.URL;
+
import io.netty.channel.ChannelPipeline;
import io.netty.handler.ssl.SslContext;
@@ -26,12 +28,12 @@ public class EmptyProtocol implements WireProtocol {
}
@Override
- public void configServerPipeline(ChannelPipeline pipeline,SslContext sslContext) {
+ public void configServerPipeline(URL url, ChannelPipeline pipeline,SslContext sslContext) {
}
@Override
- public void configClientPipeline(ChannelPipeline pipeline, SslContext sslContext) {
+ public void configClientPipeline(URL url, ChannelPipeline pipeline, SslContext sslContext) {
}
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
index aa1d495..625136b 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
@@ -16,11 +16,11 @@
*/
package org.apache.dubbo.rpc.protocol.tri;
+import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.Configuration;
import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.remoting.api.Http2WireProtocol;
-import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
@@ -55,8 +55,8 @@ public class TripleHttp2Protocol extends Http2WireProtocol implements ScopeModel
}
@Override
- public void configServerPipeline(ChannelPipeline pipeline, SslContext sslContext) {
- final Configuration config = ConfigurationUtils.getGlobalConfiguration(ApplicationModel.defaultModel());
+ public void configServerPipeline(URL url, ChannelPipeline pipeline, SslContext sslContext) {
+ final Configuration config = ConfigurationUtils.getGlobalConfiguration(url.getScopeModel());
final Http2FrameCodec codec = Http2FrameCodecBuilder.forServer()
.gracefulShutdownTimeoutMillis(10000)
.initialSettings(new Http2Settings()
@@ -78,8 +78,8 @@ public class TripleHttp2Protocol extends Http2WireProtocol implements ScopeModel
}
@Override
- public void configClientPipeline(ChannelPipeline pipeline, SslContext sslContext) {
- final Configuration config = ConfigurationUtils.getGlobalConfiguration(ApplicationModel.defaultModel());
+ public void configClientPipeline(URL url, ChannelPipeline pipeline, SslContext sslContext) {
+ final Configuration config = ConfigurationUtils.getGlobalConfiguration(url.getScopeModel());
final Http2FrameCodec codec = Http2FrameCodecBuilder.forClient()
.gracefulShutdownTimeoutMillis(10000)
.initialSettings(new Http2Settings()