1616
1717package com .google .cloud .logging .spi ;
1818
19- import static com .google .common .base .MoreObjects .firstNonNull ;
20-
21- import com .google .api .gax .core .ConnectionSettings ;
2219import com .google .api .gax .grpc .ApiException ;
20+ import com .google .api .gax .grpc .ChannelProvider ;
21+ import com .google .api .gax .grpc .ExecutorProvider ;
22+ import com .google .api .gax .grpc .FixedChannelProvider ;
23+ import com .google .api .gax .grpc .FixedExecutorProvider ;
24+ import com .google .api .gax .grpc .ProviderManager ;
2325import com .google .api .gax .grpc .UnaryCallSettings ;
2426import com .google .cloud .GrpcServiceOptions .ExecutorFactory ;
27+ import com .google .cloud .NoCredentials ;
2528import com .google .cloud .logging .LoggingException ;
2629import com .google .cloud .logging .LoggingOptions ;
2730import com .google .cloud .logging .spi .v2 .ConfigServiceV2Api ;
@@ -73,6 +76,7 @@ public class DefaultLoggingRpc implements LoggingRpc {
7376 private final LoggingServiceV2Api loggingApi ;
7477 private final MetricsServiceV2Api metricsApi ;
7578 private final ScheduledExecutorService executor ;
79+ private final ProviderManager providerManager ;
7680 private final ExecutorFactory <ScheduledExecutorService > executorFactory ;
7781
7882 private boolean closed ;
@@ -96,45 +100,46 @@ protected UnaryCallSettings.Builder getApiCallSettings() {
96100 }
97101
98102 @ Override
99- protected ConnectionSettings . Builder getConnectionSettings () {
100- return super .getConnectionSettings ();
103+ protected ChannelProvider getChannelProvider () {
104+ return super .getChannelProvider ();
101105 }
102106 }
103107
104108 public DefaultLoggingRpc (LoggingOptions options ) throws IOException {
105109 InternalLoggingOptions internalOptions = new InternalLoggingOptions (options );
106110 executorFactory = internalOptions .getExecutorFactory ();
107111 executor = executorFactory .get ();
108- String libraryName = options .getLibraryName ();
109- String libraryVersion = firstNonNull (options .getLibraryVersion (), "" );
110112 try {
111- ConfigServiceV2Settings .Builder confBuilder = ConfigServiceV2Settings .defaultBuilder ()
112- .provideExecutorWith (executor , false )
113- .setClientLibHeader (libraryName , libraryVersion );
114- LoggingServiceV2Settings .Builder logBuilder = LoggingServiceV2Settings .defaultBuilder ()
115- .provideExecutorWith (executor , false )
116- .setClientLibHeader (libraryName , libraryVersion );
117- MetricsServiceV2Settings .Builder metricsBuilder = MetricsServiceV2Settings .defaultBuilder ()
118- .provideExecutorWith (executor , false )
119- .setClientLibHeader (libraryName , libraryVersion );
120- // todo(mziccard): PublisherSettings should support null/absent credentials for testing
121- if (options .getHost ().contains ("localhost" ) || options .getCredentials () == null ) {
122- ManagedChannel channel = NettyChannelBuilder .forTarget (options .getHost ())
113+ ExecutorProvider executorProvider = FixedExecutorProvider .create (executor );
114+ ChannelProvider channelProvider ;
115+ // todo(mziccard): ChannelProvider should support null/absent credentials for testing
116+ if (options .getHost ().contains ("localhost" )
117+ || options .getCredentials ().equals (NoCredentials .getInstance ())) {
118+ ManagedChannel managedChannel = NettyChannelBuilder .forTarget (options .getHost ())
123119 .negotiationType (NegotiationType .PLAINTEXT )
120+ .executor (executor )
124121 .build ();
125- confBuilder .provideChannelWith (channel , true );
126- logBuilder .provideChannelWith (channel , true );
127- metricsBuilder .provideChannelWith (channel , true );
122+ channelProvider = FixedChannelProvider .create (managedChannel );
128123 } else {
129- ConnectionSettings connectionSettings = internalOptions .getConnectionSettings ().build ();
130- confBuilder .provideChannelWith (connectionSettings );
131- logBuilder .provideChannelWith (connectionSettings );
132- metricsBuilder .provideChannelWith (connectionSettings );
124+ channelProvider = internalOptions .getChannelProvider ();
133125 }
126+ providerManager = ProviderManager .newBuilder ()
127+ .setChannelProvider (channelProvider )
128+ .setExecutorProvider (executorProvider )
129+ .build ();
134130 UnaryCallSettings .Builder callSettingsBuilder = internalOptions .getApiCallSettings ();
135- confBuilder .applyToAllApiMethods (callSettingsBuilder );
136- logBuilder .applyToAllApiMethods (callSettingsBuilder );
137- metricsBuilder .applyToAllApiMethods (callSettingsBuilder );
131+ ConfigServiceV2Settings .Builder confBuilder = ConfigServiceV2Settings .defaultBuilder ()
132+ .setExecutorProvider (providerManager )
133+ .setChannelProvider (providerManager )
134+ .applyToAllApiMethods (callSettingsBuilder );
135+ LoggingServiceV2Settings .Builder logBuilder = LoggingServiceV2Settings .defaultBuilder ()
136+ .setExecutorProvider (providerManager )
137+ .setChannelProvider (providerManager )
138+ .applyToAllApiMethods (callSettingsBuilder );
139+ MetricsServiceV2Settings .Builder metricsBuilder = MetricsServiceV2Settings .defaultBuilder ()
140+ .setExecutorProvider (providerManager )
141+ .setChannelProvider (providerManager )
142+ .applyToAllApiMethods (callSettingsBuilder );
138143 configApi = ConfigServiceV2Api .create (confBuilder .build ());
139144 loggingApi = LoggingServiceV2Api .create (logBuilder .build ());
140145 metricsApi = MetricsServiceV2Api .create (metricsBuilder .build ());
@@ -245,6 +250,7 @@ public void close() throws Exception {
245250 configApi .close ();
246251 loggingApi .close ();
247252 metricsApi .close ();
253+ providerManager .getChannel ().shutdown ();
248254 executorFactory .release (executor );
249255 }
250256}
0 commit comments