@@ -120,7 +120,8 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
120120 private static final String PG_ADAPTER_CLIENT_LIB_TOKEN = "pg-adapter" ;
121121
122122 private static final String API_SHORT_NAME = "Spanner" ;
123- private static final String DEFAULT_HOST = "https://spanner.googleapis.com" ;
123+ private static final String SPANNER_SERVICE_NAME = "spanner" ;
124+ private static final String GOOGLE_DEFAULT_UNIVERSE = "googleapis.com" ;
124125 private static final String EXPERIMENTAL_HOST_PROJECT_ID = "default" ;
125126
126127 private static final ImmutableSet <String > SCOPES =
@@ -185,7 +186,6 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
185186 private final boolean enableBuiltInMetrics ;
186187 private final boolean enableExtendedTracing ;
187188 private final boolean enableEndToEndTracing ;
188- private final String monitoringHost ;
189189 private final TransactionOptions defaultTransactionOptions ;
190190
191191 enum TracingFramework {
@@ -780,9 +780,18 @@ protected SpannerOptions(Builder builder) {
780780 databaseRole = builder .databaseRole ;
781781 sessionLabels = builder .sessionLabels ;
782782 try {
783- spannerStubSettings = builder .spannerStubSettingsBuilder .build ();
784- instanceAdminStubSettings = builder .instanceAdminStubSettingsBuilder .build ();
785- databaseAdminStubSettings = builder .databaseAdminStubSettingsBuilder .build ();
783+ spannerStubSettings =
784+ builder .spannerStubSettingsBuilder .setUniverseDomain (getResolvedUniverseDomain ()).build ();
785+ instanceAdminStubSettings =
786+ builder
787+ .instanceAdminStubSettingsBuilder
788+ .setUniverseDomain (getResolvedUniverseDomain ())
789+ .build ();
790+ databaseAdminStubSettings =
791+ builder
792+ .databaseAdminStubSettingsBuilder
793+ .setUniverseDomain (getResolvedUniverseDomain ())
794+ .build ();
786795 } catch (IOException e ) {
787796 throw SpannerExceptionFactory .newSpannerException (e );
788797 }
@@ -820,10 +829,16 @@ protected SpannerOptions(Builder builder) {
820829 enableBuiltInMetrics = builder .enableBuiltInMetrics ;
821830 }
822831 enableEndToEndTracing = builder .enableEndToEndTracing ;
823- monitoringHost = builder .monitoringHost ;
824832 defaultTransactionOptions = builder .defaultTransactionOptions ;
825833 }
826834
835+ private String getResolvedUniverseDomain () {
836+ String universeDomain = getUniverseDomain ();
837+ return (universeDomain == null || universeDomain .isEmpty ())
838+ ? GOOGLE_DEFAULT_UNIVERSE
839+ : universeDomain ;
840+ }
841+
827842 /**
828843 * The environment to read configuration values from. The default implementation uses environment
829844 * variables.
@@ -871,10 +886,6 @@ default boolean isEnableEndToEndTracing() {
871886 return false ;
872887 }
873888
874- default String getMonitoringHost () {
875- return null ;
876- }
877-
878889 default GoogleCredentials getDefaultExperimentalHostCredentials () {
879890 return null ;
880891 }
@@ -901,7 +912,6 @@ private static class SpannerEnvironmentImpl implements SpannerEnvironment {
901912 private static final String SPANNER_DISABLE_BUILTIN_METRICS = "SPANNER_DISABLE_BUILTIN_METRICS" ;
902913 private static final String SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS =
903914 "SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS" ;
904- private static final String SPANNER_MONITORING_HOST = "SPANNER_MONITORING_HOST" ;
905915
906916 private SpannerEnvironmentImpl () {}
907917
@@ -951,11 +961,6 @@ public boolean isEnableEndToEndTracing() {
951961 return Boolean .parseBoolean (System .getenv (SPANNER_ENABLE_END_TO_END_TRACING ));
952962 }
953963
954- @ Override
955- public String getMonitoringHost () {
956- return System .getenv (SPANNER_MONITORING_HOST );
957- }
958-
959964 @ Override
960965 public GoogleCredentials getDefaultExperimentalHostCredentials () {
961966 return getOAuthTokenFromFile (System .getenv (DEFAULT_SPANNER_EXPERIMENTAL_HOST_CREDENTIALS ));
@@ -1025,7 +1030,6 @@ public static class Builder
10251030 private boolean enableExtendedTracing = SpannerOptions .environment .isEnableExtendedTracing ();
10261031 private boolean enableEndToEndTracing = SpannerOptions .environment .isEnableEndToEndTracing ();
10271032 private boolean enableBuiltInMetrics = SpannerOptions .environment .isEnableBuiltInMetrics ();
1028- private String monitoringHost = SpannerOptions .environment .getMonitoringHost ();
10291033 private SslContext mTLSContext = null ;
10301034 private boolean isExperimentalHost = false ;
10311035 private TransactionOptions defaultTransactionOptions = TransactionOptions .getDefaultInstance ();
@@ -1096,7 +1100,6 @@ protected Builder() {
10961100 this .enableExtendedTracing = options .enableExtendedTracing ;
10971101 this .enableBuiltInMetrics = options .enableBuiltInMetrics ;
10981102 this .enableEndToEndTracing = options .enableEndToEndTracing ;
1099- this .monitoringHost = options .monitoringHost ;
11001103 this .defaultTransactionOptions = options .defaultTransactionOptions ;
11011104 }
11021105
@@ -1664,12 +1667,6 @@ public Builder setBuiltInMetricsEnabled(boolean enableBuiltInMetrics) {
16641667 return this ;
16651668 }
16661669
1667- /** Sets the monitoring host to be used for Built-in client side metrics */
1668- public Builder setMonitoringHost (String monitoringHost ) {
1669- this .monitoringHost = monitoringHost ;
1670- return this ;
1671- }
1672-
16731670 /**
16741671 * Sets whether to enable extended OpenTelemetry tracing. Enabling this option will add the
16751672 * following additional attributes to the traces that are generated by the client:
@@ -2035,7 +2032,7 @@ public ApiTracerFactory getApiTracerFactory() {
20352032 public void enablegRPCMetrics (InstantiatingGrpcChannelProvider .Builder channelProviderBuilder ) {
20362033 if (SpannerOptions .environment .isEnableGRPCBuiltInMetrics ()) {
20372034 this .builtInMetricsProvider .enableGrpcMetrics (
2038- channelProviderBuilder , this .getProjectId (), getCredentials (), this . monitoringHost );
2035+ channelProviderBuilder , this .getProjectId (), getCredentials (), getUniverseDomain () );
20392036 }
20402037 }
20412038
@@ -2081,7 +2078,7 @@ private ApiTracerFactory getDefaultApiTracerFactory() {
20812078 private ApiTracerFactory createMetricsApiTracerFactory () {
20822079 OpenTelemetry openTelemetry =
20832080 this .builtInMetricsProvider .getOrCreateOpenTelemetry (
2084- this .getProjectId (), getCredentials (), this . monitoringHost );
2081+ this .getProjectId (), getCredentials (), getUniverseDomain () );
20852082
20862083 return openTelemetry != null
20872084 ? new BuiltInMetricsTracerFactory (
@@ -2115,11 +2112,6 @@ public boolean isEnableBuiltInMetrics() {
21152112 return enableBuiltInMetrics ;
21162113 }
21172114
2118- /** Returns the override metrics Host. */
2119- String getMonitoringHost () {
2120- return monitoringHost ;
2121- }
2122-
21232115 public TransactionOptions getDefaultTransactionOptions () {
21242116 return defaultTransactionOptions ;
21252117 }
@@ -2181,7 +2173,11 @@ public static GrpcTransportOptions getDefaultGrpcTransportOptions() {
21812173
21822174 @ Override
21832175 protected String getDefaultHost () {
2184- return DEFAULT_HOST ;
2176+ String universeDomain = getUniverseDomain ();
2177+ if (universeDomain == null || universeDomain .isEmpty ()) {
2178+ universeDomain = GOOGLE_DEFAULT_UNIVERSE ;
2179+ }
2180+ return String .format ("https://%s.%s" , SPANNER_SERVICE_NAME , universeDomain );
21852181 }
21862182
21872183 private static class SpannerDefaults implements ServiceDefaults <Spanner , SpannerOptions > {
0 commit comments