-
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
xds: Possibly incorrect ADS requests on new resources #4009
Comments
I believe this is the right behavior. And the server should only need to look at the last request for each resource type: https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#when-to-send-an-update Let me know if I missed something, or misunderstood your question |
Hi again, Thanks a lot for the clarification! I understand the behavior of ack/nack. It was unclear to me in terms of stacking those resources names for each ADS request. I paid more attention to the link you provided and I found out that the current However, I think that I'm having issues with the management server, not the gprc-go xds client. I have an additional question (about a server) and will be grateful if you can help with it: So i.e. we can rely on logs that I mentioned in the initial message:
The last request was actually the last request for resource type |
The server should send a response when
So when a request is received, the server should just need to compare the resource names with the previous request, and decide if a new resource needs to be added to the response. On an ADS stream, requests should only be compared with the requests of the same type. SotW is saying that the server needs to send ALL the resources the client asked for (even if only one of the resources is different). It's not to send all resources the server knows about. https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#four-variants There's a bug in go-control-plane's LDS support for gRPC: envoyproxy/go-control-plane#349. You could have been affected by this. I'm not sure what you mean by server "open a stream". The servers don't open streams. They only accept requests from streams that are opened by the clients. In terms of ACK/NACK. There's usually not much a server can do when it receives a NACK. Server should keep the ACK/NACK status for the users (https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/status/v3/csds.proto#enum-service-status-v3-clientconfigstatus) |
Thanks a lot for your detailed answer! Actually, I'm not affected by that bug because I'm not using full state snapshots. Closing this issue because you provided the answers and there are no problems with the xds client in grpc-go (as of 1.34.0-dev at least). |
Hi,
I have a simple setup for xds, using envoyproxy/go-control-plane as a management server. And in some way, I started to struggle with some strange behavior from xds-client when it sends several new ADS requests to the server for the same resource type stacking resource names within each new request. I'm not sure if this is expected behavior.
Let's explore logs with the following LB config generated by the xds client:
So there are three different names for CDS resources. What I see in logs:
As I wrote above, the client sending stacking resource names and after all sends ACK of for all resource names for the nonce with the very first response from the server which was for only one of the resource names. On server side it looks like:
What I expect that the client will send a single request to the server with all of the names like
Summing up I have a simple question: does this behavior of the xds client is totally expected hence I should make changes in the management server?
The text was updated successfully, but these errors were encountered: