Unexpected character ('.' (code 46)): Expected space separating root-level values
- [x] I have searched the issues of this repository and believe that this is not a duplicate.
- [x] I have checked the REAMDE of this repository and believe that this is not a duplicate.
Environment
- Dubbo Admin version: 0.5.0
- Registry center detail (type and version): zookeeper 3.8.0
- Operating System version: macos 13
- Java version: jdk17
Steps to reproduce this issue
经测试,dubbo-admin注册到zookeeper后,消费者解析dubboAdmin的信息会序列化失败,导致启动失败 当清空zookeeper存储的信息,dubbo-admin不启动,则一切正常。
Pls. provide [GitHub address] to reproduce this issue.
Expected Result
What do you expected from the above steps?
Actual Result
What actually happens?
If there is an exception, please attach the exception trace:
java.lang.RuntimeException: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values
at [Source: (byte[])"10.233.123.163"; line: 1, column: 8]
at org.apache.dubbo.common.function.ThrowableFunction.execute(ThrowableFunction.java:54) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.common.function.ThrowableFunction.execute(ThrowableFunction.java:69) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.doInServiceDiscovery(ZookeeperServiceDiscovery.java:185) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.getInstances(ZookeeperServiceDiscovery.java:144) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:320) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.doSubscribe(ServiceDiscoveryRegistry.java:226) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribe(ServiceDiscoveryRegistry.java:186) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:88) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.DynamicDirectory.subscribe(DynamicDirectory.java:184) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.subscribe(ServiceDiscoveryRegistryDirectory.java:129) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.RegistryProtocol.doCreateInvoker(RegistryProtocol.java:574) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.getServiceDiscoveryInvoker(InterfaceCompatibleRegistryProtocol.java:65) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.migration.MigrationInvoker.refreshServiceDiscoveryInvoker(MigrationInvoker.java:437) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.migration.MigrationInvoker.migrateToApplicationFirstInvoker(MigrationInvoker.java:245) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.refreshInvoker(MigrationRuleHandler.java:76) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.doMigrate(MigrationRuleHandler.java:60) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.client.migration.MigrationRuleListener.onRefer(MigrationRuleListener.java:249) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.RegistryProtocol.interceptInvoker(RegistryProtocol.java:539) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:509) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:491) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper.refer(ProtocolSecurityWrapper.java:107) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:85) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:74) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:71) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.refer(ProtocolSerializationWrapper.java:52) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.ReferenceConfig.createInvokerForRemote(ReferenceConfig.java:605) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:439) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:297) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:231) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.utils.SimpleReferenceCache.get(SimpleReferenceCache.java:132) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.deploy.DefaultModuleDeployer.lambda$referServices$6(DefaultModuleDeployer.java:396) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4780) ~[?:?]
at org.apache.dubbo.config.deploy.DefaultModuleDeployer.referServices(DefaultModuleDeployer.java:376) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:167) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:139) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:113) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:102) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:47) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:413) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:370) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:587) ~[spring-context-6.0.4.jar:6.0.4]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.2.jar:3.0.2]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.2.jar:3.0.2]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.2.jar:3.0.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.2.jar:3.0.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) ~[spring-boot-3.0.2.jar:3.0.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1291) ~[spring-boot-3.0.2.jar:3.0.2]
at com.cynray.bff.admin.AdminApplication.main(AdminApplication.java:16) ~[classes/:?]
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values
at [Source: (byte[])"10.233.123.163"; line: 1, column: 8]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2418) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:749) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:673) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportMissingRootWS(ParserMinimalBase.java:721) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._verifyRootSpace(UTF8StreamJsonParser.java:1781) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._parseFloat(UTF8StreamJsonParser.java:1740) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._parseUnsignedNumber(UTF8StreamJsonParser.java:1504) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:905) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:793) ~[jackson-core-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4817) ~[jackson-databind-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4723) ~[jackson-databind-2.14.1.jar:2.14.1]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3771) ~[jackson-databind-2.14.1.jar:2.14.1]
at org.apache.curator.x.discovery.details.JsonInstanceSerializer.deserialize(JsonInstanceSerializer.java:86) ~[curator-x-discovery-5.4.0.jar:?]
at org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.queryForInstance(ServiceDiscoveryImpl.java:325) ~[curator-x-discovery-5.4.0.jar:?]
at org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.queryForInstances(ServiceDiscoveryImpl.java:393) ~[curator-x-discovery-5.4.0.jar:?]
at org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.queryForInstances(ServiceDiscoveryImpl.java:307) ~[curator-x-discovery-5.4.0.jar:?]
at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.lambda$getInstances$2(ZookeeperServiceDiscovery.java:144) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
at org.apache.dubbo.common.function.ThrowableFunction.execute(ThrowableFunction.java:52) ~[dubbo-3.2.0-beta.5.jar:3.2.0-beta.5]
... 52 more
遇到同样问题,求解决方案。dubbo-admin 0.5.0+ dubbo3.1.8 + zookeeper。
dubbo admin的注册信息跟dubbo的应用级注册信息在同级下,解析出错。
@fffguo 试了下可以增加dubbo.registry.parameters.rootPath=${group}/services规避,理解是为应用级注册信息再增加一层级,admin不会为group后的第二级添加配置,所以就不会出问题了
@fffguo 试了下可以增加dubbo.registry.parameters.rootPath=${group}/services规避,理解是为应用级注册信息再增加一层级,admin不会为group后的第二级添加配置,所以就不会出问题了
好的,感谢回复,我尝试一下试试
@fffguo 试了吗 可以吗 我这边也是使用分组后,一启动 dubbo-admin 就报Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values at [Source: (byte[])"127.0.0.1"; line: 1, column: 7]
@fffguo 试了吗 可以吗 我这边也是使用分组后,一启动 dubbo-admin 就报Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): Expected space separating root-level values at [Source: (byte[])"127.0.0.1"; line: 1, column: 7]
还没试
意思是要把应用级注册信息换一个目录? 应该是 dubbo admin 不乱写应用级注册的目录才对啊
解决了吗?我也遇到这个问题了。