Bing-ok opened a new issue, #1020:
URL: https://github.com/apache/dubbo-samples/issues/1020

   ## Issue description
   Hi, there are multiple versions of **_io.netty:netty-all_** in 
**_dubbo-samples-ssl/dubbo-samples-ssl-provider_** of version 
**_1.0-SNAPSHOT_**. As shown in the following dependency tree, according to 
Maven "nearest wins" strategy, only **_io.netty:netty-all:4.1.36.Final_** can 
be loaded, **_io.netty:netty-all:4.1.25.Final_** will be shadowed.
   
   However, several methods defined in shadowed version 
**_io.netty:netty-all:4.1.25_**.Final are referenced by client project via 
**_org.apache.dubbo:dubbo:2.7.7_** but missing in the actually loaded version 
**_io.netty:netty-all:4.1.36.Final_**.
   
   For instance, the following missing method(defined in 
**_io.netty:netty-all:4.1.25.Final_**) are actually referenced by 
**_dubbo-samples-ssl-provider_**, which will introduce a runtime error(i.e., 
"NoSuchMethodError") into **_dubbo-samples-ssl-provider_**.
   
   1. **_<io.netty.channel.nio.NioEventLoopGroup: void 
<init>(int,java.util.concurrent.ThreadFactory)>_** is invoked by 
**_dubbo-samples-ssl-provider_** via the following path:
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> 
   org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   <io.netty.channel.nio.NioEventLoopGroup: void init 
(int,java.util.concurrent.ThreadFactory)>
   ```
   
   2. **_<io.netty.channel.DelegatingChannelPromiseNotifier: 
io.netty.channel.ChannelFuture sync()>_** is invoked by 
**_dubbo-samples-ssl-provider_** via the following path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   io.netty.channel.DelegatingChannelPromiseNotifier: 
io.netty.channel.ChannelFuture sync()
   ```
   
   
   3. **_<io.netty.channel.VoidChannelPromise: io.netty.channel.ChannelFuture 
sync()>_** is invoked by **_dubbo-samples-ssl-provider_** via the following 
path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   io.netty.channel.DelegatingChannelPromiseNotifier: 
io.netty.channel.ChannelFuture sync()
   ```
   
   4. **_<io.netty.bootstrap.AbstractBootstrap: io.netty.channel.ChannelFuture 
bind(java.lang.String,int)>_** is invoked by dubbo-samples-ssl-provider via the 
following path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   io.netty.channel.DelegatingChannelPromiseNotifier: 
io.netty.channel.ChannelFuture sync()
   ```
   5. **_<io.netty.bootstrap.ServerBootstrap: 
io.netty.bootstrap.ServerBootstrap 
group(io.netty.channel.EventLoopGroup,io.netty.channel.EventLoopGroup)>_** is 
invoked by dubbo-samples-ssl-provider via the following path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   <io.netty.bootstrap.ServerBootstrap: io.netty.bootstrap.ServerBootstrap 
group(io.netty.channel.EventLoopGroup,io.netty.channel.EventLoopGroup)>
   ```
   
   6. **_<io.netty.bootstrap.ServerBootstrap: 
io.netty.bootstrap.ServerBootstrap 
childHandler(io.netty.channel.ChannelHandler)>_** is invoked by 
dubbo-samples-ssl-provider via the following path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   <io.netty.bootstrap.ServerBootstrap: io.netty.bootstrap.ServerBootstrap 
childHandler(io.netty.channel.ChannelHandler)>
   ```
   7. **_<io.netty.bootstrap.AbstractBootstrap: io.netty.channel.ChannelFuture 
bind(int)>_** is invoked by **_dubbo-samples-ssl-provider_** via the following 
path:
   
   ```
   path--
   <org.apache.dubbo.samples.basic.SslBasicProvider: void 
main(java.lang.String[])> 
org.apache.dubbo:dubbo-samples-ssl-provider:1.0-SNAPSHOT;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: 
org.apache.dubbo.config.bootstrap.DubboBootstrap start()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.bootstrap.DubboBootstrap: void 
exportMetadataService()> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.metadata.MetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter: 
org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void export()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExport()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void doExportUrls()> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.config.ServiceConfig: void 
doExportUrlsFor1Protocol(org.apache.dubbo.config.ProtocolConfig,java.util.List)>
 org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: 
org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker)> 
org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.protocol.QosProtocolWrapper: void 
startQosServer(org.apache.dubbo.common.URL)> org.apache.dubbo:dubbo:2.7.7;
   <org.apache.dubbo.qos.server.Server: void start()> 
org.apache.dubbo:dubbo:2.7.7;
   <io.netty.bootstrap.AbstractBootstrap: io.netty.channel.ChannelFuture 
bind(int)>
   ```
   
   ## Suggested fixing solutions:
   1. Change direct dependency io.netty:netty-all from 4.1.36.Final to 
4.1.25.Final. Because version 4.1.25.Final includes the above missing methods 
and is compatible with other versions of io.netty:netty-all in the project.
   
   Please let me know if this solution you agree to? I can submit a PR to fix 
it.
   
   Thank you very much for your attention.
   Best regards,
   
   ## Dependency tree----
   <pre><code>
   [INFO] |  |  |  \- commons-logging:commons-logging:jar:1.2:compile
   [INFO] |  |  \- 
org.springframework:spring-expression:jar:4.3.16.RELEASE:compile
   [INFO] |  |     \- 
(org.springframework:spring-core:jar:4.3.16.RELEASE:compile - omitted for 
duplicate)
   [INFO] |  +- com.alibaba.spring:spring-context-support:jar:1.0.6:compile
   [INFO] |  +- org.javassist:javassist:jar:3.20.0-GA:compile
   [INFO] |  +- <b>(io.netty:netty-all:jar:4.1.36.Final:compile - version 
managed from 4.1.25.Final; omitted for duplicate)</b>
   [INFO] |  +- com.google.code.gson:gson:jar:2.8.5:compile
   [INFO] |  \- org.yaml:snakeyaml:jar:1.20:compile
   [INFO] +- org.apache.dubbo:dubbo-dependencies-zookeeper:pom:2.7.7:compile
   [INFO] |  +- org.apache.curator:curator-recipes:jar:4.0.1:compile
   [INFO] |  |  \- org.apache.curator:curator-framework:jar:4.0.1:compile
   </code></pre>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to