Skip to content

Commit d785023

Browse files
committed
fix: Decrease log level for directpath warnings outside GCE
1 parent 8be3f9d commit d785023

2 files changed

Lines changed: 52 additions & 37 deletions

File tree

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
}

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

Lines changed: 11 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,13 +646,16 @@ 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()
651653
.setAttemptDirectPathXds()
652654
.setCertificateBasedAccess(certificateBasedAccess)
653655
.build();
656+
654657
createAndCloseTransportChannel(provider);
658+
655659
assertThat(logHandler.getAllMessages())
656660
.contains(
657661
"DirectPath is misconfigured. The DirectPath XDS option was set, but the attemptDirectPath option was not. Please set both the attemptDirectPath and attemptDirectPathXds options.");
@@ -662,13 +666,16 @@ private void createAndCloseTransportChannel(InstantiatingGrpcChannelProvider pro
662666
void testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSetViaEnv_warns()
663667
throws Exception {
664668
FakeLogHandler logHandler = new FakeLogHandler();
669+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
665670
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
666671

667672
InstantiatingGrpcChannelProvider provider =
668673
createChannelProviderBuilderForDirectPathLogTests()
669674
.setCertificateBasedAccess(certificateBasedAccess)
670675
.build();
676+
671677
createAndCloseTransportChannel(provider);
678+
672679
assertThat(logHandler.getAllMessages())
673680
.contains(
674681
"Env var GOOGLE_CLOUD_ENABLE_DIRECT_PATH_XDS was found and set to TRUE, but DirectPath was not enabled for this client. If this is intended for "
@@ -679,7 +686,9 @@ void testLogDirectPathMisconfig_AttemptDirectPathNotSetAndAttemptDirectPathXdsSe
679686
@Test
680687
void testLogDirectPathMisconfig_shouldNotLogInTheBuilder() {
681688
FakeLogHandler logHandler = new FakeLogHandler();
689+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
682690
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
691+
683692
InstantiatingGrpcChannelProvider.newBuilder()
684693
.setAttemptDirectPathXds()
685694
.setAttemptDirectPath(true)
@@ -693,6 +702,7 @@ void testLogDirectPathMisconfig_shouldNotLogInTheBuilder() {
693702
@Test
694703
void testLogDirectPathMisconfigWrongCredential() throws Exception {
695704
FakeLogHandler logHandler = new FakeLogHandler();
705+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
696706
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
697707
InstantiatingGrpcChannelProvider provider =
698708
InstantiatingGrpcChannelProvider.newBuilder()
@@ -719,6 +729,7 @@ void testLogDirectPathMisconfigWrongCredential() throws Exception {
719729
@Test
720730
void testLogDirectPathMisconfigNotOnGCE() throws Exception {
721731
FakeLogHandler logHandler = new FakeLogHandler();
732+
InstantiatingGrpcChannelProvider.LOG.setLevel(Level.FINE);
722733
InstantiatingGrpcChannelProvider.LOG.addHandler(logHandler);
723734
InstantiatingGrpcChannelProvider provider =
724735
InstantiatingGrpcChannelProvider.newBuilder()

0 commit comments

Comments
 (0)