-
Notifications
You must be signed in to change notification settings - Fork 4.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Breaking Change: xds Return no matching virtual host found
error
#7037
Comments
Hi @ankittk -- this is weird since we didnt expect any existing users to be impacted with the bug fix in #6997. Essentially this bug only effects the user is the LDS resource name differs from the target used for Dial
Its not evident what you mean here. Are you seeing a regression in grpc-go v1.62.1? If so, could you give us more clarity by:
If not, could you explain what "find your service discover path" means here? |
grpc-go now uses the target string instead of the xdstp URL when looking into the list of vhosts. So if the control plane sets vhost to something like We ran into this with our own custom xDS server base on a fork of go-control-plane. If this had been used in production, it would have broken existing services. It may be possible to set multiple virtual hosts, one with the old and one with the new format, from the control plane. For us that was not a problem in practice because our control plane is still in development. @ankittk 's problem may be a different one. |
Before #6997 gRPC-go used to lookup vHost using the LDS resource name. This was broken when there was a The bug fix in #6997 was to align with the spec in gRFC A47: xDS Federation, which says:
Yes I agree this is a behavior change and would be a breaking change for some users, but this was a bug in the implementation before and needs to align with the gRFC. @atollena - xRFC TP1 talks about the naming schema for xDS resources. I think xdstp style name does not apply to vHosts field in RDS (iiuc, only used when VHDS is used). The vHosts field in RDS is not a xDS resource but the authority used to make the data plane connection. The right approach for the xDS server would be to send only with the old format, or use wildcard for vHosts (which is the case with TrafficDirector). |
To be clear from my perspective this change is OK, the fix should be on the control plane side. But it looks like the original poster ran into the same problem. I would suggest closing this issue as answered, unless @ankittk's doesn't have the opportunity to fix it on the control plane side (by using wildcard, for example). |
This issue is labeled as requiring an update from the reporter, and no update has been received after 6 days. If no update is provided in the next 7 days, this issue will be automatically closed. |
You are right, we have fixed that on client side. |
What version of gRPC are you using?
v1.62.1
What version of Go are you using (
go version
)?go1.20
What operating system (Linux, Windows, …) and version?
Linux/Mac
What did you do?
I simply updated my grpc version to the latest, as I saw in the release, this PR #6997
caused this.
What did you expect to see?
This is a breaking change, all services will start to fail if you try to find your service discovery path. There should be some way to fix this instead of returning an error.
What did you see instead?
rpc error: code = Unavailable desc = last resolver error: no matching virtual host found for "exampleService"
The text was updated successfully, but these errors were encountered: