Pre-check
- [x] I am sure that all the content I provide is in English.
Search before asking
- [x] I had searched in the issues and found no similar issues.
Apache Dubbo Component
Java SDK (apache/dubbo)
Dubbo Version
After starting the consumer, o.a.dubbo.registry.client.metadata.MetadataUtils Failed to get app metadata for revision. the consumer side is triggered when pulling metadata every second, and a consumer-side exception occurs:"UNIMPLEMENTED : Invoker for gRPC not found"; the provider side throws an exception:"Invoker for gRPC not found".
Using version numbers: dubbo-provider: 3.3.5 + springboot:2.7.17 + JDK17 dubbo-consumer: 3.1.11 + springboot:2.7.17 + JDK 17
Server configuration (provider-config):
dubbo: registry: address: nacos://127.0.0.1:8848?username=nacos&password=nacos register-mode: instance protocols: tri: name: tri port: 8080 dubbo: name: dubbo port: 20880
Steps to reproduce this issue
Triple+JAX-RS
[Dubbo provider exception stack]:
[DubboServerHandler-192.168.14.12:8080-thread-190] INFO o.a.d.r.p.tri.h12.AbstractServerTransportListener - traceId: - [DUBBO] An error occurred while processing the http request with GrpcHttp2ServerTransportListener, Http2MetadataFrame{method='POST', path='/org.apache.dubbo.metadata.MetadataService/getMetadataInfo', contentType='application/grpc+proto', streamId=3, endStream=false}, dubbo version: 3.3.5, current host: 192.168.14.12 org.apache.dubbo.remoting.http12.exception.HttpStatusException: Invoker for gRPC not found at org.apache.dubbo.rpc.protocol.tri.h12.grpc.GrpcRequestHandlerMapping.notFound(GrpcRequestHandlerMapping.java:79) at org.apache.dubbo.rpc.protocol.tri.h12.grpc.GrpcRequestHandlerMapping.getRequestHandler(GrpcRequestHandlerMapping.java:64) at org.apache.dubbo.rpc.protocol.tri.route.DefaultRequestRouter.route(DefaultRequestRouter.java:50) at org.apache.dubbo.rpc.protocol.tri.h12.AbstractServerTransportListener.doRoute(AbstractServerTransportListener.java:122) at org.apache.dubbo.rpc.protocol.tri.h12.grpc.GrpcHttp2ServerTransportListener.onPrepareMetadata(GrpcHttp2ServerTransportListener.java:69) at org.apache.dubbo.rpc.protocol.tri.h12.grpc.GrpcHttp2ServerTransportListener.onPrepareMetadata(GrpcHttp2ServerTransportListener.java:49) at org.apache.dubbo.rpc.protocol.tri.h12.AbstractServerTransportListener.lambda$onMetadata$0(AbstractServerTransportListener.java:107) at org.apache.dubbo.common.threadpool.serial.SerializingExecutor.run(SerializingExecutor.java:111) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:39) at java.base/java.lang.Thread.run(Thread.java:842)
[Dubbo consumer exception stack]:
[Dubbo-framework-metadata-retry-thread-1] WARN o.a.d.r.c.e.l.ServiceInstancesChangedListener - traceId: - [DUBBO] Received address refresh retry event, 1755588333304, dubbo version: 3.1.11, current host: 192.168.14.12, error code: 99-0. This may be caused by unknown error in registry module, go to https://dubbo.apache.org/faq/99/0 to find instructions. 2025-08-19 15:25:43.306 [Dubbo-framework-metadata-retry-thread-1] WARN o.a.d.r.c.e.l.ServiceInstancesChangedListener - traceId: - [DUBBO] Retrying address notification..., dubbo version: 3.1.11, current host: 192.168.14.12, error code: 99-0. This may be caused by unknown error in registry module, go to https://dubbo.apache.org/faq/99/0 to find instructions. 2025-08-19 15:25:43.306 [Dubbo-framework-metadata-retry-thread-1] WARN o.a.d.r.c.e.l.ServiceInstancesChangedListener - traceId: - [DUBBO] Received address refresh retry event, 1755588333304, dubbo version: 3.1.11, current host: 192.168.14.12, error code: 99-0. This may be caused by unknown error in registry module, go to https://dubbo.apache.org/faq/99/0 to find instructions. 2025-08-19 15:25:43.306 [Dubbo-framework-metadata-retry-thread-1] WARN o.a.d.r.c.e.l.ServiceInstancesChangedListener - traceId: - [DUBBO] Retrying address notification..., dubbo version: 3.1.11, current host: 192.168.14.12, error code: 99-0. This may be caused by unknown error in registry module, go to https://dubbo.apache.org/faq/99/0 to find instructions. 2025-08-19 15:25:43.307 [Dubbo-framework-metadata-retry-thread-1] INFO org.apache.dubbo.rpc.model.ModuleModel - traceId: - [DUBBO] Dynamically registering consumer model uupt-middle-ackdemo-service/org.apache.dubbo.metadata.MetadataService:2.0.0 into model Dubbo Module[1.1.0], dubbo version: 3.1.11, current host: 192.168.14.12 2025-08-19 15:25:43.317 [Dubbo-framework-metadata-retry-thread-1] ERROR o.a.dubbo.registry.client.metadata.MetadataUtils - traceId: - [DUBBO] Failed to get app metadata for revision ac086b2ccffbf5ebef12482977fe76ab for type local from instance 192.168.14.12:20880, dubbo version: 3.1.11, current host: 192.168.14.12, error code: 1-39. This may be caused by , go to https://dubbo.apache.org/faq/1/39 to find instructions. org.apache.dubbo.rpc.StatusRpcException: UNIMPLEMENTED : Invoker for gRPC not found at org.apache.dubbo.rpc.TriRpcStatus.asException(TriRpcStatus.java:214) at org.apache.dubbo.rpc.protocol.tri.call.UnaryClientCallListener.onClose(UnaryClientCallListener.java:47) at org.apache.dubbo.rpc.protocol.tri.call.TripleClientCall.onComplete(TripleClientCall.java:106) at org.apache.dubbo.rpc.protocol.tri.stream.TripleClientStream$ClientTransportListener.finishProcess(TripleClientStream.java:216) at org.apache.dubbo.rpc.protocol.tri.stream.TripleClientStream$ClientTransportListener.onTrailersReceived(TripleClientStream.java:295) at org.apache.dubbo.rpc.protocol.tri.stream.TripleClientStream$ClientTransportListener.lambda$onHeader$1(TripleClientStream.java:398) at org.apache.dubbo.common.threadpool.serial.SerializingExecutor.run(SerializingExecutor.java:102) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:41) at java.base/java.lang.Thread.run(Thread.java:842)
What you expected to happen
protocols: tri: name: tri port: 8080 dubbo: name: dubbo port: 20880
The Dubbo 3.3.x version also encounters this exception during interoperation and does not support the multi-port and multi-protocol configuration method. When it is necessary to use Triple + JAX-RS to provide REST services, single-port multi-protocol is not supported.
The Dubbo provider does not expose the interface: org.apache.dubbo.metadata.MetadataService/getMetadataInfo, only /org.apache.dubbo.metadata.MetadataServiceV2/GetMetadataInfo
Anything else
After starting the consumer, o.a.dubbo.registry.client.metadata.MetadataUtils Failed to get app metadata for revision. the consumer side is triggered when pulling metadata every second
Are you willing to submit a pull request to fix on your own?
- [x] Yes I am willing to submit a pull request on my own!
Code of Conduct
- [x] I agree to follow this project's Code of Conduct
Comment From: zrlw
set dubbo.onlyUseMetadataV2 of your provider to false
Comment From: zrlw
dubbo:
registry:
address: nacos://127.0.0.1:8848?username=nacos&password=nacos
register-mode: instance
protocols:
tri:
name: tri
port: 8080
dubbo:
name: dubbo
port: 20880
you should use "```" to enclosed your configuration or code snippet at the post to keep its original format.
Comment From: wangdechong
set dubbo.onlyUseMetadataV2 of your provider to false
The configuration dubbo.application.only-use-metadata-v2=false has been set, but no obvious changes have been observed.
spring:
application:
name: uupt-demo-service
dubbo:
registry:
address: nacos://${nacos.address:127.0.0.1}:8848?username=nacos&password=nacos
register-mode: instance
application:
name: ${spring.application.name}
qos-enable: true
only-use-metadata-v2: false
protocols:
tri:
name: tri
port: 8080
dubbo:
name: dubbo
port: 20880
Comment From: zrlw
debug ExporterDeployListener#onModuleStarted at your provider side to see why metadataServiceExporter doesn't export v1.
Comment From: zrlw
or you might bypass it by changing provider metadataType from local to remote
dubbo:
application:
metadata-type: remote
Comment From: wangdechong
debug ExporterDeployListener#onModuleStarted at your provider side to see why metadataServiceExporter doesn't export v1.
The provider's local mode is incompatible with configuring dubbo+tri multi-protocol via the protocols method; refer to the configuration format provided above.
The findFirst() method of org.apache.dubbo.config.bootstrap.builders.InternalServiceConfigBuilder#getRelatedOrDefaultProtocol; The exportV1 selects the Dubbo MetadataService. exportV2 registers tri-protocol MetadataServiceV2
protocol = protocols.stream()
.map(ProtocolConfig::getName)
.filter(StringUtils::isNotEmpty)
.filter(p -> ACCEPTABLE_PROTOCOL.contains(p))
.findFirst()
.orElse("");
However, the protocol specified in the metadata content's dubbo.metadata-service.url-params.protocal is tri, as shown below:
dubbo.metadata-service.url-params={"prefer.serialization":"hessian2,fastjson2","version":"2.0.0","dubbo":"2.0.2","release":"3.3.5","side":"provider","port":"50053","protocol":"tri"}
dubbo.endpoints=[{"port":20881,"protocol":"dubbo"},{"port":50053,"protocol":"tri"}]
dubbo.metadata.revision=79f04342a4892eddd387b62ebdf95a12
dubbo.metadata.storage-type=local
meta-v=2.0.0
Changing the provider's metadataType from local to remote can bypass the issue. also affect OpenAPI Schema metadata retrieval; please help check it.