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()