-
Notifications
You must be signed in to change notification settings - Fork 516
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
snapshot cache doesn't handle xDS request correctly #399
Comments
We think we are hitting this and it's not so obvious why versioning takes prescedence Populate snapshot cache with a single version for an envoy
Both SDS secrets are used for
Just milis after right after, a request on the same version is issued with both of them:
A watcher is spawned, but After this interaction, Envoy never recovers, This is Go-control-plane 0.9.8 and envoy 1.17.1 |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
Commenting so this issue doesn't get wiped out by the stale bot. |
We also found a similar issue recently where we use ADS and updating clusters and routes. We print the
|
I think this issue is related to the following: #431 We potentially have a solution and we are looking into it. Thank you all for your patience! |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions. |
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted" or "no stalebot". Thank you for your contributions. |
I have the same issue using go-control-plane (v0.9.9) Initially I thought it is GRPC client issue (grpc/grpc-go#4703) and with @easwars help we found that the issue is really in go-control-plane implementation. I checked the code and go-control-plane ignores a second DiscoveryRequest of same type regardless if a client requests more resources than in the first request. I implemented a patch for go-control-plane (similar Java implementation) and tested it. It works. I can open a PR if a way how Java handles, looks correct here as well. At least it looks quite logical for me. |
Yep, I did the java-control-plane change way back, it would make sense to do the same thing in go-control-plane. |
…voyproxy#399 The change is implemented simillary to Java implementation. The control plane keeps track of resource names that a caller knows already. Signed-off-by: Konstantin Kalin <[email protected]>
I've opened PR #490 |
…voyproxy#399 The change is implemented simillary to Java implementation. The control plane keeps track of resource names that a caller knows already. Signed-off-by: Konstantin Kalin <[email protected]>
…voyproxy#399 The change is implemented simillary to Java implementation. The control plane keeps track of resource names that a caller knows already. Signed-off-by: Konstantin Kalin <[email protected]>
…voyproxy#399 Signed-off-by: Konstantin Kalin <[email protected]>
based on xDS protocol: [https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol]
It basically means just check version_info is not enough to know if discovery server should send a response. so this code won't send response if the request just adding a new name with previous version_info:
It need check both version_info and resource_names, which is much more complicated. Because the request won't carry previous resource_names so we must store it somewhere in the cache server, but CreateWatch() interface is called per request level rather than per stream level, so there is no way to know which resource_names should be used. I think to fully resolve this issue correctly we need add the stream id information in the CreateWatch() function.
The text was updated successfully, but these errors were encountered: