You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "AlbumenJ (via GitHub)" <gi...@apache.org> on 2023/05/23 12:20:02 UTC

[GitHub] [dubbo] AlbumenJ commented on pull request #12361: fail fast when protocol exp

AlbumenJ commented on PR #12361:
URL: https://github.com/apache/dubbo/pull/12361#issuecomment-1559189679

   > > Do we prepend to do this type check at initialization time. I think this modification is in the notify process. If dirty data is wrongly written in the registry (or an updated protocol, which usually occurs in the version iteration process), this will cause the processing of this push to be directly abnormal. , causing a greater impact.
   > 
   > ```
   > [21/05/23 21:16:44:231 CST] main ERROR zookeeper.ZookeeperRegistry:  [DUBBO] Failed to notify addresses for subscribe unknown://192.168.1.2/org.apache.dubbo.springboot.demo.DemoService?application=dubbo-springboot-demo-consumer&background=false&category=providers,configurators,routers&dubbo=2.0.2&executor-management-mode=isolation&file-cache=true&interface=org.apache.dubbo.springboot.demo.DemoService&methods=sayHello,sayHelloAsync&pid=1590&protocol=unknown&qos.enable=true&qos.port=33333&release=3.2.2-SNAPSHOT&side=consumer&sticky=false&timestamp=1684674910080&unloadClusterRelated=false, cause: java.lang.IllegalStateException: No such extension org.apache.dubbo.rpc.Protocol by name unknown, no related exception was found, please check whether related SPI module is missing., dubbo version: 3.2.2-SNAPSHOT, current host: 192.168.1.2, error code: 1-7. This may be caused by , go to https://dubbo.apache.org/faq/1/7 to find instructions. 
   > org.apache.dubbo.registry.support.SkipFailbackWrapperException: java.lang.IllegalStateException: No such extension org.apache.dubbo.rpc.Protocol by name unknown, no related exception was found, please check whether related SPI module is missing.
   > Caused by: java.lang.IllegalStateException: No such extension org.apache.dubbo.rpc.Protocol by name unknown, no related exception was found, please check whether related SPI module is missing.
   > 	at org.apache.dubbo.common.extension.ExtensionLoader.findException(ExtensionLoader.java:779)
   > 	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:786)
   > 	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:575)
   > 	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:549)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.checkProtocolValid(RegistryDirectory.java:453)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.toInvokers(RegistryDirectory.java:396)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.refreshInvoker(RegistryDirectory.java:277)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.refreshOverrideAndInvoker(RegistryDirectory.java:218)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.notify(RegistryDirectory.java:194)
   > 	at org.apache.dubbo.registry.support.AbstractRegistry.notify(AbstractRegistry.java:533)
   > 	at org.apache.dubbo.registry.support.FailbackRegistry.doNotify(FailbackRegistry.java:376)
   > 	at org.apache.dubbo.registry.support.FailbackRegistry.notify(FailbackRegistry.java:365)
   > 	at org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:306)
   > 	at org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:88)
   > 	at org.apache.dubbo.registry.integration.DynamicDirectory.subscribe(DynamicDirectory.java:184)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.lambda$subscribe$0(RegistryDirectory.java:126)
   > 	at org.apache.dubbo.metrics.event.MetricsEventBus.post(MetricsEventBus.java:80)
   > 	at org.apache.dubbo.metrics.event.MetricsEventBus.post(MetricsEventBus.java:62)
   > 	at org.apache.dubbo.registry.integration.RegistryDirectory.subscribe(RegistryDirectory.java:124)
   > 	at org.apache.dubbo.registry.integration.RegistryProtocol.doCreateInvoker(RegistryProtocol.java:591)
   > 	at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.getInvoker(InterfaceCompatibleRegistryProtocol.java:58)
   > 	at org.apache.dubbo.registry.client.migration.MigrationInvoker.refreshInterfaceInvoker(MigrationInvoker.java:464)
   > 	at org.apache.dubbo.registry.client.migration.MigrationInvoker.migrateToApplicationFirstInvoker(MigrationInvoker.java:245)
   > 	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.refreshInvoker(MigrationRuleHandler.java:76)
   > 	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.doMigrate(MigrationRuleHandler.java:60)
   > 	at org.apache.dubbo.registry.client.migration.MigrationRuleListener.onRefer(MigrationRuleListener.java:249)
   > 	at org.apache.dubbo.registry.integration.RegistryProtocol.interceptInvoker(RegistryProtocol.java:556)
   > 	at org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:526)
   > 	at org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:508)
   > 	at org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper.refer(ProtocolSecurityWrapper.java:110)
   > 	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:86)
   > 	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:80)
   > 	at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:71)
   > 	at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.refer(ProtocolSerializationWrapper.java:52)
   > 	at org.apache.dubbo.rpc.protocol.InvokerCountWrapper.refer(InvokerCountWrapper.java:48)
   > 	at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
   > 	at org.apache.dubbo.config.ReferenceConfig.createInvoker(ReferenceConfig.java:593)
   > 	at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:439)
   > 	at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:302)
   > 	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:232)
   > 	at org.apache.dubbo.config.utils.SimpleReferenceCache.get(SimpleReferenceCache.java:132)
   > 	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.lambda$referServices$6(DefaultModuleDeployer.java:439)
   > 	at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4707)
   > 	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.referServices(DefaultModuleDeployer.java:419)
   > 	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:173)
   > 	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:145)
   > 	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:113)
   > 	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:102)
   > 	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:47)
   > 	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
   > 	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
   > 	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
   > 	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
   > 	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
   > 	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940)
   > 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
   > 	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
   > 	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
   > 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
   > 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
   > 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
   > 	at org.apache.dubbo.springboot.demo.consumer.ConsumerApplication.main(ConsumerApplication.java:38)
   > ```
   > 
   > The above is the thread stack of the current protocol verification, which is located in the process ReferenceConfig.init -> ReferenceConfig.createInvoker. Before the metadata is pushed, it seems that the registration center has not yet been pushed. Where do you want the protocol validation to be?
   
   Before listen registry. In `subscribe`


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org