From 8250984cc8524bba17be8d2657a00a2c853d525a Mon Sep 17 00:00:00 2001 From: mohanli-ml Date: Wed, 23 Jun 2021 17:31:05 +0000 Subject: [PATCH 1/3] feat: update DirectPath environment variables --- .../grpc/InstantiatingGrpcChannelProvider.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java index dcfa5c39e..942456126 100644 --- a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java +++ b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java @@ -79,7 +79,7 @@ */ @InternalExtensionOnly public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider { - static final String DIRECT_PATH_ENV_VAR = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH"; + static final String DIRECT_PATH_ENV_DISABLE_DIRECT_PATH = "GOOGLE_CLOUD_DISABLE_DIRECT_PATH"; static final long DIRECT_PATH_KEEP_ALIVE_TIME_SECONDS = 3600; static final long DIRECT_PATH_KEEP_ALIVE_TIMEOUT_SECONDS = 20; // reduce the thundering herd problem of too many channels trying to (re)connect at the same time @@ -243,18 +243,14 @@ public ManagedChannel createSingleChannel() throws IOException { return GrpcTransportChannel.create(outerChannel); } - // TODO(weiranf): Use attemptDirectPath as the only indicator once setAttemptDirectPath is adapted - // and the env var is removed from client environment. - private boolean isDirectPathEnabled(String serviceAddress) { + private boolean isDirectPathEnabled() { + // Only check attemptDirectPath when DIRECT_PATH_ENV_DISABLE_DIRECT_PATH is not set. + if (Boolean.parseBoolean(envProvider.getenv(DIRECT_PATH_ENV_DISABLE_DIRECT_PATH))) { + return false; + } if (attemptDirectPath != null) { return attemptDirectPath; } - // Only check DIRECT_PATH_ENV_VAR when attemptDirectPath is not set. - String whiteList = envProvider.getenv(DIRECT_PATH_ENV_VAR); - if (whiteList == null) return false; - for (String service : whiteList.split(",")) { - if (!service.isEmpty() && serviceAddress.contains(service)) return true; - } return false; } @@ -308,7 +304,7 @@ private ManagedChannel createSingleChannel() throws IOException, GeneralSecurity ManagedChannelBuilder builder; // TODO(weiranf): Add API in ComputeEngineCredentials to check default service account. - if (isDirectPathEnabled(serviceAddress) + if (isDirectPathEnabled() && credentials instanceof ComputeEngineCredentials && isOnComputeEngine()) { builder = ComputeEngineChannelBuilder.forAddress(serviceAddress, port); From d70e56b746991709d768459da9c5d625644e11c7 Mon Sep 17 00:00:00 2001 From: mohanli-ml Date: Tue, 29 Jun 2021 18:39:27 +0000 Subject: [PATCH 2/3] feat: update DirectPath environment variables --- .../gax/grpc/InstantiatingGrpcChannelProvider.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java index 942456126..ed86e38d5 100644 --- a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java +++ b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java @@ -79,6 +79,7 @@ */ @InternalExtensionOnly public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider { + static final String DIRECT_PATH_ENV_VAR = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH"; static final String DIRECT_PATH_ENV_DISABLE_DIRECT_PATH = "GOOGLE_CLOUD_DISABLE_DIRECT_PATH"; static final long DIRECT_PATH_KEEP_ALIVE_TIME_SECONDS = 3600; static final long DIRECT_PATH_KEEP_ALIVE_TIMEOUT_SECONDS = 20; @@ -243,7 +244,9 @@ public ManagedChannel createSingleChannel() throws IOException { return GrpcTransportChannel.create(outerChannel); } - private boolean isDirectPathEnabled() { + // TODO(weiranf): Use attemptDirectPath as the only indicator once setAttemptDirectPath is adapted + // 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))) { return false; @@ -251,6 +254,12 @@ private boolean isDirectPathEnabled() { if (attemptDirectPath != null) { return attemptDirectPath; } + // Only check DIRECT_PATH_ENV_VAR when attemptDirectPath is not set. + String whiteList = envProvider.getenv(DIRECT_PATH_ENV_VAR); + if (whiteList == null) return false; + for (String service : whiteList.split(",")) { + if (!service.isEmpty() && serviceAddress.contains(service)) return true; + } return false; } @@ -304,7 +313,7 @@ private ManagedChannel createSingleChannel() throws IOException, GeneralSecurity ManagedChannelBuilder builder; // TODO(weiranf): Add API in ComputeEngineCredentials to check default service account. - if (isDirectPathEnabled() + if (isDirectPathEnabled(serviceAddress) && credentials instanceof ComputeEngineCredentials && isOnComputeEngine()) { builder = ComputeEngineChannelBuilder.forAddress(serviceAddress, port); From 5d474e2fb6f7be1615c17fa0f11258041ab04d04 Mon Sep 17 00:00:00 2001 From: mohanli-ml Date: Tue, 29 Jun 2021 23:32:01 +0000 Subject: [PATCH 3/3] feat: update DirectPath environment variables --- .../InstantiatingGrpcChannelProvider.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java index ed86e38d5..63a7a0899 100644 --- a/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java +++ b/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java @@ -80,7 +80,8 @@ @InternalExtensionOnly public final class InstantiatingGrpcChannelProvider implements TransportChannelProvider { static final String DIRECT_PATH_ENV_VAR = "GOOGLE_CLOUD_ENABLE_DIRECT_PATH"; - static final String DIRECT_PATH_ENV_DISABLE_DIRECT_PATH = "GOOGLE_CLOUD_DISABLE_DIRECT_PATH"; + private static final String DIRECT_PATH_ENV_DISABLE_DIRECT_PATH = + "GOOGLE_CLOUD_DISABLE_DIRECT_PATH"; static final long DIRECT_PATH_KEEP_ALIVE_TIME_SECONDS = 3600; static final long DIRECT_PATH_KEEP_ALIVE_TIMEOUT_SECONDS = 20; // reduce the thundering herd problem of too many channels trying to (re)connect at the same time @@ -244,21 +245,27 @@ public ManagedChannel createSingleChannel() throws IOException { return GrpcTransportChannel.create(outerChannel); } - // TODO(weiranf): Use attemptDirectPath as the only indicator once setAttemptDirectPath is adapted + // TODO(mohanli): Use attemptDirectPath as the only indicator once setAttemptDirectPath is adapted // 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))) { + String disableDirectPathEnv = envProvider.getenv(DIRECT_PATH_ENV_DISABLE_DIRECT_PATH); + boolean isDirectPathDisabled = Boolean.parseBoolean(disableDirectPathEnv); + if (isDirectPathDisabled) { return false; } + // Only check attemptDirectPath when DIRECT_PATH_ENV_DISABLE_DIRECT_PATH is not set. if (attemptDirectPath != null) { return attemptDirectPath; } // Only check DIRECT_PATH_ENV_VAR when attemptDirectPath is not set. String whiteList = envProvider.getenv(DIRECT_PATH_ENV_VAR); - if (whiteList == null) return false; + if (whiteList == null) { + return false; + } for (String service : whiteList.split(",")) { - if (!service.isEmpty() && serviceAddress.contains(service)) return true; + if (!service.isEmpty() && serviceAddress.contains(service)) { + return true; + } } return false; }