Skip to content

Commit 5151f34

Browse files
authored
fix: Decrease log level for directpath warnings outside GCE (#4139)
Directpath is not available outside of GCE. When a Cloud service client has Directpath enabled, the users with clients outside of GCE receive this warning and it's not actionable.
1 parent 8f1af5e commit 5151f34

File tree

2 files changed

+47
-37
lines changed

2 files changed

+47
-37
lines changed

sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -441,43 +441,47 @@ public boolean isDirectPathXdsEnabled() {
441441
// builder or createSingleChannel, only in getTransportChannel which creates the first channel
442442
// for a client.
443443
private void logDirectPathMisconfig() {
444-
if (isDirectPathXdsEnabled()) {
445-
if (!isDirectPathEnabled()) {
446-
// This misconfiguration occurs when Direct Path xDS is enabled, but Direct Path is not
447-
// Direct Path xDS can be enabled two ways: via environment variable or via builder.
448-
// Case 1: Direct Path is only enabled via xDS env var. We will _warn_ the user that this is
449-
// a misconfiguration if they intended to set the env var.
450-
if (isDirectPathXdsEnabledViaEnv()) {
451-
LOG.log(
452-
Level.WARNING,
453-
"Env var "
454-
+ DIRECT_PATH_ENV_ENABLE_XDS
455-
+ " was found and set to TRUE, but DirectPath was not enabled for this client. If this is intended for "
456-
+ "this client, please note that this is a misconfiguration and set the attemptDirectPath option as well.");
457-
}
458-
// Case 2: Direct Path xDS was enabled via Builder. Direct Path Traffic Director must be set
459-
// (enabled with `setAttemptDirectPath(true)`) along with xDS.
460-
// Here we warn the user about this.
461-
else if (isDirectPathXdsEnabledViaBuilderOption()) {
462-
LOG.log(
463-
Level.WARNING,
464-
"DirectPath is misconfigured. The DirectPath XDS option was set, but the attemptDirectPath option was not. Please set both the attemptDirectPath and attemptDirectPathXds options.");
465-
}
466-
} else {
467-
// Case 3: credential is not correctly set
468-
if (!isCredentialDirectPathCompatible()) {
469-
LOG.log(
470-
Level.WARNING,
471-
"DirectPath is misconfigured. Please make sure the credential is an instance of "
472-
+ ComputeEngineCredentials.class.getName()
473-
+ " .");
474-
}
475-
// Case 4: not running on GCE
476-
if (!isOnComputeEngine()) {
477-
LOG.log(
478-
Level.WARNING,
479-
"DirectPath is misconfigured. DirectPath is only available in a GCE environment.");
480-
}
444+
if (!isDirectPathXdsEnabled()) {
445+
return;
446+
}
447+
448+
Level level = isOnComputeEngine() ? Level.WARNING : Level.FINE;
449+
450+
if (!isDirectPathEnabled()) {
451+
// This misconfiguration occurs when Direct Path xDS is enabled, but Direct Path is not
452+
// Direct Path xDS can be enabled two ways: via environment variable or via builder.
453+
// Case 1: Direct Path is only enabled via xDS env var. We will _warn_ the user that this is
454+
// a misconfiguration if they intended to set the env var.
455+
if (isDirectPathXdsEnabledViaEnv()) {
456+
LOG.log(
457+
level,
458+
"Env var "
459+
+ DIRECT_PATH_ENV_ENABLE_XDS
460+
+ " was found and set to TRUE, but DirectPath was not enabled for this client. If this is intended for "
461+
+ "this client, please note that this is a misconfiguration and set the attemptDirectPath option as well.");
462+
}
463+
// Case 2: Direct Path xDS was enabled via Builder. Direct Path Traffic Director must be set
464+
// (enabled with `setAttemptDirectPath(true)`) along with xDS.
465+
// Here we warn the user about this.
466+
else if (isDirectPathXdsEnabledViaBuilderOption()) {
467+
LOG.log(
468+
level,
469+
"DirectPath is misconfigured. The DirectPath XDS option was set, but the attemptDirectPath option was not. Please set both the attemptDirectPath and attemptDirectPathXds options.");
470+
}
471+
} else {
472+
// Case 3: credential is not correctly set
473+
if (!isCredentialDirectPathCompatible()) {
474+
LOG.log(
475+
level,
476+
"DirectPath is misconfigured. Please make sure the credential is an instance of "
477+
+ ComputeEngineCredentials.class.getName()
478+
+ " .");
479+
}
480+
// Case 4: not running on GCE
481+
if (!isOnComputeEngine()) {
482+
LOG.log(
483+
level,
484+
"DirectPath is misconfigured. DirectPath is only available in a GCE environment.");
481485
}
482486
}
483487
}

sdk-platform-java/gax-java/gax-grpc/src/test/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProviderTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import java.util.concurrent.TimeUnit;
7878
import java.util.function.Function;
7979
import java.util.logging.Handler;
80+
import java.util.logging.Level;
8081
import java.util.logging.LogRecord;
8182
import java.util.stream.Collectors;
8283
import javax.annotation.Nullable;
@@ -645,6 +646,7 @@ private void createAndCloseTransportChannel(InstantiatingGrpcChannelProvider pro
645646
testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSetViaBuilder_warns()
646647
throws Exception {
647648
FakeLogHandler logHandler = new FakeLogHandler();
649+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
648650
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
649651
InstantiatingGrpcChannelProvider provider =
650652
createChannelProviderBuilderForDirectPathLogTests()
@@ -662,6 +664,7 @@ private void createAndCloseTransportChannel(InstantiatingGrpcChannelProvider pro
662664
void testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSetViaEnv_warns()
663665
throws Exception {
664666
FakeLogHandler logHandler = new FakeLogHandler();
667+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
665668
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
666669

667670
InstantiatingGrpcChannelProvider provider =
@@ -679,6 +682,7 @@ void testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSe
679682
@Test
680683
void testLogDirectPathMisconfig_shouldNotLogInTheBuilder() {
681684
FakeLogHandler logHandler = new FakeLogHandler();
685+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
682686
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
683687
InstantiatingGrpcChannelProvider.newBuilder()
684688
.setAttemptDirectPathXds()
@@ -693,6 +697,7 @@ void testLogDirectPathMisconfig_shouldNotLogInTheBuilder() {
693697
@Test
694698
void testLogDirectPathMisconfigWrongCredential() throws Exception {
695699
FakeLogHandler logHandler = new FakeLogHandler();
700+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
696701
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
697702
InstantiatingGrpcChannelProvider provider =
698703
InstantiatingGrpcChannelProvider.newBuilder()
@@ -719,6 +724,7 @@ void testLogDirectPathMisconfigWrongCredential() throws Exception {
719724
@Test
720725
void testLogDirectPathMisconfigNotOnGCE() throws Exception {
721726
FakeLogHandler logHandler = new FakeLogHandler();
727+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
722728
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
723729
InstantiatingGrpcChannelProvider provider =
724730
InstantiatingGrpcChannelProvider.newBuilder()

0 commit comments

Comments
 (0)