-
Notifications
You must be signed in to change notification settings - Fork 519
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
Implement tracking of known resource names by caller stream. Fixes #399 (Attempt #2) #508
Conversation
@alecholmez Please check. |
Initial PR and review comments are in #490 |
@kkalin68 can you do me a favor and rebase/squash these commits? Just approved the build to run |
…voyproxy#399 Signed-off-by: Konstantin Kalin <konstantin.kalin@socotra.com>
@alecholmez Done. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is good to go know @kkalin68. Thanks for the PR and working with me in the review process
…e stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This PR replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…e stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This PR replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…e stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This PR replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…e stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This PR replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…e stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This PR replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
…delta (#9) Currently sotw and delta watches use different interfaces to track the stream state An assumption used to be that sotw watches are stateless and can be processed from the request itself. This was already altered in envoyproxy#508, but it only covers the usecases partially (e.g. it does not cover subscribing/unsubscribing to wildcard). The current object passed to track the subscription provides multiple issues: - it is not an interface, restricting evolution or testing for users building a separate cache - it tracks some objects per types, other globally, based on sotw or delta, making it confusing and hard to use in a consistent way This commit replaces the legacy streamState by the notion of Subscription per type. StreamState is not relevant to the cache, as it only requires to know the subscription status (e.g. the last nonce is not needed), while a stream can multiplex multiple types. Further work will come to: - fill the subscription with the same attributes in sotw and delta, allowing to take proper decisions on what to reply - Fix multiple issues within the cache in sotw - Fix handling of explicit vs. legacy wildcard in sotw and delta Now that the `Subscription` has been standardized to be uniform for `sotw` and `delta`, as well as always for the given request type, this PR ensures all the fields are properly populated in all cases A follow-up PR will rely on those informations to address current issues in the cache implementations related to resource tracking Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
No description provided.