Skip to content
This repository was archived by the owner on Sep 26, 2023. It is now read-only.

feat: update DirectPath environment variables#1412

Merged
vam-google merged 4 commits into
googleapis:masterfrom
mohanli-ml:disable-dp
Jun 30, 2021
Merged

feat: update DirectPath environment variables#1412
vam-google merged 4 commits into
googleapis:masterfrom
mohanli-ml:disable-dp

Conversation

@mohanli-ml

@mohanli-ml mohanli-ml commented Jun 23, 2021

Copy link
Copy Markdown
Contributor

Add GOOGLE_CLOUD_DISABLE_DIRECT_PATH to allow manually disable DirectPath. Currently in Bigtable and Spanner, DirectPath is attempted by default. We need a way to disable DirectPath for debugging purpose.

@mohanli-ml mohanli-ml requested review from a team June 23, 2021 17:34
@google-cla google-cla Bot added the cla: yes This human has signed the Contributor License Agreement. label Jun 23, 2021

@elharo elharo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs multiple tests.

}
// Only check DIRECT_PATH_ENV_VAR when attemptDirectPath is not set.
String whiteList = envProvider.getenv(DIRECT_PATH_ENV_VAR);
if (whiteList == null) return false;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all ifs are multiline, per google style

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

private boolean isDirectPathEnabled() {
// TODO(weiranf): Use attemptDirectPath as the only indicator once setAttemptDirectPath is adapted

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please file a bug for this and reference it here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created b/192398509 to myself.

*/
@InternalExtensionOnly
public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider {
static final String DIRECT_PATH_ENV_VAR = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

private

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new ones should be private, I agree, but for the old ones, I guess it will technically make it a breaknig change

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made the new one private, and keep the old one as what it is (i.e., without adding private).

// and the env var is removed from client environment.
private boolean isDirectPathEnabled(String serviceAddress) {
// Only check attemptDirectPath when DIRECT_PATH_ENV_DISABLE_DIRECT_PATH is not set.
if (Boolean.parseBoolean(envProvider.getenv(DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code is hard to follow due to the double negative. Probably better broken up into 3 separate statements.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@elharo elharo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description sounds like there are two issues here that should be filed individually in the issue tracker and addressed with one PR each.

@vam-google vam-google left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but please address @elharo's comments first

*/
@InternalExtensionOnly
public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider {
static final String DIRECT_PATH_ENV_VAR = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new ones should be private, I agree, but for the old ones, I guess it will technically make it a breaknig change

@vam-google vam-google merged commit 4f63b61 into googleapis:master Jun 30, 2021
codyoss pushed a commit to googleapis/google-api-go-client that referenced this pull request Feb 18, 2022
Add an environment variable GOOGLE_CLOUD_DISABLE_DIRECT_PATH to disable DirectPath. We expect users to use the EnableDirectPath option to control DirectPath for most cases, and this environment variable is for special cases like running both DP and GFE traffic on the same VM. As a result, only when this env variable is explicitly set to true will DirectPath be disabled.

Same PR for Java: googleapis/gax-java#1412.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cla: yes This human has signed the Contributor License Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants