Skip to content

[outlier detection] hack to prevent OD from working with pick_first#33336

Merged
markdroth merged 3 commits into
grpc:masterfrom
markdroth:od+pf
Jun 5, 2023
Merged

[outlier detection] hack to prevent OD from working with pick_first#33336
markdroth merged 3 commits into
grpc:masterfrom
markdroth:od+pf

Conversation

@markdroth

Copy link
Copy Markdown
Member

As per discussion in #32967.

CC @ejona86 @dfawley

@markdroth markdroth added the release notes: no Indicates if PR should not be in release notes label Jun 2, 2023
@markdroth markdroth requested a review from eugeneo June 2, 2023 23:54
@markdroth markdroth merged commit 6b4a1e4 into grpc:master Jun 5, 2023
@markdroth markdroth deleted the od+pf branch June 5, 2023 17:59
markdroth added a commit to markdroth/grpc that referenced this pull request Jun 5, 2023
markdroth added a commit that referenced this pull request Jun 5, 2023
markdroth added a commit that referenced this pull request Jun 5, 2023
ctiller pushed a commit that referenced this pull request Jun 5, 2023
@copybara-service copybara-service Bot added the imported Specifies if the PR has been imported to the internal repository label Jun 5, 2023
eugeneo pushed a commit to eugeneo/grpc that referenced this pull request Jun 7, 2023
eugeneo pushed a commit to eugeneo/grpc that referenced this pull request Jun 7, 2023
eugeneo pushed a commit to eugeneo/grpc that referenced this pull request Jun 7, 2023
eugeneo pushed a commit to eugeneo/grpc that referenced this pull request Jun 7, 2023
mario-vimal pushed a commit to mario-vimal/grpc that referenced this pull request Jun 15, 2023
mario-vimal pushed a commit to mario-vimal/grpc that referenced this pull request Jun 15, 2023
markdroth added a commit that referenced this pull request Jun 26, 2023
#33340)

Currently, the outlier_detection policy reports ejection by intercepting
a subchannel's raw connectivity state watch. In the dualstack backend
design, we will instead want to report ejection via the health watch.
This PR is a first step toward that goal.

Specific changes in this PR:
- Add `type()` method to `InternalSubchannelDataWatcherInterface`, to
make it possible for LB policies to intercept data watchers.
- Use that mechanism in the outlier_detection policy to report ejection
both via raw connectivity state watches and via health watches. The hack
to prevent outlier_detection from working with pick_first from #33336
has been changed to affect only the raw connectivity watch, not the
health watch.
- Change health check client to fall back to reporting the raw
connectivity state if client-side health checking is not enabled. This
will allow pick_first to unconditionally start a health watch when it is
running under a petiole policy, which will be a no-op if neither health
checking nor outlier detection are configured.

Once we are done changing all of the petiole policies to delegate to
pick_first, we will remove the code that allows outlier_detection to
work via the raw connectivity state, so it will work only via the health
watch.
markdroth added a commit that referenced this pull request Jun 28, 2023
…state (#33427)

More work on the dualstack backend design:
- Now that all petiole policies have been changed to delegate to
pick_first, outlier detection no longer needs to eject via the
subchannel's raw connectivity state; it can now eject only via the
health state. See #33340.
- This also removes the now-unnecessary hack to explicitly disable
outlier detection in pick_first. See #33336.
mario-vimal pushed a commit to mario-vimal/grpc that referenced this pull request Jul 13, 2023
grpc#33340)

Currently, the outlier_detection policy reports ejection by intercepting
a subchannel's raw connectivity state watch. In the dualstack backend
design, we will instead want to report ejection via the health watch.
This PR is a first step toward that goal.

Specific changes in this PR:
- Add `type()` method to `InternalSubchannelDataWatcherInterface`, to
make it possible for LB policies to intercept data watchers.
- Use that mechanism in the outlier_detection policy to report ejection
both via raw connectivity state watches and via health watches. The hack
to prevent outlier_detection from working with pick_first from grpc#33336
has been changed to affect only the raw connectivity watch, not the
health watch.
- Change health check client to fall back to reporting the raw
connectivity state if client-side health checking is not enabled. This
will allow pick_first to unconditionally start a health watch when it is
running under a petiole policy, which will be a no-op if neither health
checking nor outlier detection are configured.

Once we are done changing all of the petiole policies to delegate to
pick_first, we will remove the code that allows outlier_detection to
work via the raw connectivity state, so it will work only via the health
watch.
mario-vimal pushed a commit to mario-vimal/grpc that referenced this pull request Jul 13, 2023
…state (grpc#33427)

More work on the dualstack backend design:
- Now that all petiole policies have been changed to delegate to
pick_first, outlier detection no longer needs to eject via the
subchannel's raw connectivity state; it can now eject only via the
health state. See grpc#33340.
- This also removes the now-unnecessary hack to explicitly disable
outlier detection in pick_first. See grpc#33336.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bloat/none imported Specifies if the PR has been imported to the internal repository lang/c++ lang/core per-call-memory/neutral per-channel-memory/neutral release notes: no Indicates if PR should not be in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants