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]
