Skip to content

Commit 995aedf

Browse files
committed
Make ChannelPool work.
1 parent f9df8a2 commit 995aedf

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616

1717
package com.google.cloud.spanner;
1818

19-
import com.google.cloud.grpc.GrpcTransportOptions;
2019
import com.google.cloud.ServiceDefaults;
2120
import com.google.cloud.ServiceOptions;
2221
import com.google.cloud.ServiceRpc;
2322
import com.google.cloud.TransportOptions;
23+
import com.google.cloud.grpc.GrpcTransportOptions;
24+
import com.google.cloud.spanner.spi.SpannerRpcFactory;
2425
import com.google.cloud.spanner.spi.v1.GapicSpannerRpc;
2526
import com.google.cloud.spanner.spi.v1.GrpcSpannerRpc;
2627
import com.google.cloud.spanner.spi.v1.SpannerRpc;
27-
import com.google.cloud.spanner.spi.SpannerRpcFactory;
2828
import com.google.common.base.MoreObjects;
2929
import com.google.common.base.Preconditions;
3030
import com.google.common.collect.ImmutableList;
@@ -218,6 +218,10 @@ public List<ManagedChannel> getRpcChannels() {
218218
return rpcChannels;
219219
}
220220

221+
public int getNumChannels() {
222+
return numChannels;
223+
}
224+
221225
public SessionPoolOptions getSessionPoolOptions() {
222226
return sessionPoolOptions;
223227
}
@@ -353,4 +357,15 @@ protected SpannerRpc getGapicSpannerRpc() {
353357
public Builder toBuilder() {
354358
return new Builder(this);
355359
}
360+
361+
public String getEndpoint() {
362+
URL url;
363+
try {
364+
url = new URL(getHost());
365+
} catch (MalformedURLException e) {
366+
throw new IllegalArgumentException("Invalid host: " + getHost(), e);
367+
}
368+
return String.format(
369+
"%s:%s", url.getHost(), url.getPort() < 0 ? url.getDefaultPort() : url.getPort());
370+
}
356371
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.api.gax.grpc.GaxGrpcProperties;
2525
import com.google.api.gax.grpc.GrpcCallContext;
2626
import com.google.api.gax.grpc.GrpcTransportChannel;
27+
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2728
import com.google.api.gax.longrunning.OperationFuture;
2829
import com.google.api.gax.rpc.ApiClientHeaderProvider;
2930
import com.google.api.gax.rpc.FixedTransportChannelProvider;
@@ -106,7 +107,8 @@ public class GapicSpannerRpc implements SpannerRpc {
106107

107108
private static final PathTemplate PROJECT_NAME_TEMPLATE =
108109
PathTemplate.create("projects/{project}");
109-
110+
private static final int MAX_MESSAGE_SIZE = 100 * 1024 * 1024;
111+
110112
private final SpannerStub stub;
111113
private final InstanceAdminStub instanceStub;
112114
private final DatabaseAdminStub databaseStub;
@@ -143,17 +145,18 @@ public GapicSpannerRpc(SpannerOptions options) throws IOException {
143145
mergedHeaderProvider.getHeaders(),
144146
internalHeaderProviderBuilder.getResourceHeaderKey());
145147

146-
// TODO(pongad): make channel pool work
147-
148148
// TODO(pongad): make RPC logging work (formerly LoggingInterceptor)
149149
// TODO(pongad): add watchdog
150150
// TODO(pongad): make error augmentation work (formerly SpannerErrorInterceptor)
151151

152152
TransportChannelProvider channelProvider =
153-
FixedTransportChannelProvider.create(
154-
GrpcTransportChannel.newBuilder()
155-
.setManagedChannel(options.getRpcChannels().get(0))
156-
.build());
153+
InstantiatingGrpcChannelProvider
154+
.newBuilder()
155+
.setEndpoint(options.getEndpoint())
156+
.setMaxInboundMessageSize(MAX_MESSAGE_SIZE)
157+
.setPoolSize(options.getNumChannels())
158+
.build();
159+
157160
CredentialsProvider credentialsProvider =
158161
GrpcTransportOptions.setUpCredentialsProvider(options);
159162

0 commit comments

Comments
 (0)