Skip to content

Commit 7f4c16e

Browse files
internal:Happy eyeballs (grpc#10731)
* implement happy eyeballs --------- Co-authored-by: tonyjongyoonan <tonyjan@google.com>
1 parent 8e1cc94 commit 7f4c16e

File tree

4 files changed

+1124
-632
lines changed

4 files changed

+1124
-632
lines changed

api/src/main/java/io/grpc/LoadBalancer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,8 @@ public abstract static class Helper {
955955
*
956956
* <p>It must be called from {@link #getSynchronizationContext the Synchronization Context}
957957
*
958+
* @return Must return a valid Subchannel object, may not return null.
959+
*
958960
* @since 1.22.0
959961
*/
960962
public Subchannel createSubchannel(CreateSubchannelArgs args) {
@@ -1287,7 +1289,8 @@ public void start(SubchannelStateListener listener) {
12871289
*/
12881290
public final EquivalentAddressGroup getAddresses() {
12891291
List<EquivalentAddressGroup> groups = getAllAddresses();
1290-
Preconditions.checkState(groups.size() == 1, "%s does not have exactly one group", groups);
1292+
Preconditions.checkState(groups != null && groups.size() == 1,
1293+
"%s does not have exactly one group", groups);
12911294
return groups.get(0);
12921295
}
12931296

core/src/main/java/io/grpc/internal/GrpcUtil.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.common.base.Preconditions;
2525
import com.google.common.base.Splitter;
2626
import com.google.common.base.Stopwatch;
27+
import com.google.common.base.Strings;
2728
import com.google.common.base.Supplier;
2829
import com.google.common.util.concurrent.ListenableFuture;
2930
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -948,5 +949,19 @@ public static String encodeAuthority(String authority) {
948949
}
949950
}
950951

952+
public static boolean getFlag(String envVarName, boolean enableByDefault) {
953+
String envVar = System.getenv(envVarName);
954+
if (envVar == null) {
955+
envVar = System.getProperty(envVarName);
956+
}
957+
if (enableByDefault) {
958+
return Strings.isNullOrEmpty(envVar) || Boolean.parseBoolean(envVar);
959+
} else {
960+
return !Strings.isNullOrEmpty(envVar) && Boolean.parseBoolean(envVar);
961+
}
962+
}
963+
964+
965+
951966
private GrpcUtil() {}
952967
}

0 commit comments

Comments
 (0)