Skip to content

Commit 1853b0d

Browse files
committed
Add gRPC as default transport layer for google datastore binding
1 parent 19e885f commit 1853b0d

3 files changed

Lines changed: 31 additions & 2 deletions

File tree

googledatastore/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ group of the Google Datastore.
9292
While in this mode, one can optionally specify a root key name. If not
9393
specified, a default name will be used.
9494

95+
## Enable grpc transport for benchmarking
96+
By default, benchmarking tests will use gRPC transport unless `googledatastore.useGrpc` is set to false.
97+
Additionally, you can specify a channel provider by setting `googledatastore.useChannelProvider` to true.
98+
9599
## Enable tracing for benchmarking
96100
To enable publishing traces to Google Cloud Trace while running benchmarking tests, `googledatastore.tracingenabled` must be set.
97101
Tracing depends on the following external APIs/Services:

googledatastore/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ LICENSE file.
3535
<dependency>
3636
<groupId>com.google.cloud.datastore</groupId>
3737
<artifactId>datastore-v1-proto-client</artifactId>
38-
<version>2.24.2</version>
38+
<version>2.31.0</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>com.google.cloud</groupId>
4242
<artifactId>google-cloud-datastore</artifactId>
43-
<version>2.24.2</version>
43+
<version>2.31.0</version>
4444
</dependency>
4545
<dependency>
4646
<groupId>log4j</groupId>

googledatastore/src/main/java/site/ycsb/db/GoogleDatastoreClient.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,16 @@
1919

2020
import com.google.api.client.auth.oauth2.Credential;
2121
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
22+
import com.google.api.gax.grpc.ChannelPoolSettings;
23+
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
2224
import com.google.cloud.datastore.*;
2325
import com.google.cloud.datastore.Entity;
26+
import com.google.cloud.datastore.v1.DatastoreSettings;
27+
import com.google.cloud.grpc.GrpcTransportOptions;
28+
import com.google.datastore.v1.*;
2429
import com.google.datastore.v1.ReadOptions.ReadConsistency;
2530
import com.google.datastore.v1.client.DatastoreHelper;
31+
import com.google.datastore.v1.Value;
2632
import com.google.cloud.datastore.Datastore;
2733
import com.google.cloud.datastore.DatastoreOptions;
2834
import com.google.cloud.opentelemetry.trace.TraceExporter;
@@ -133,6 +139,14 @@ public void init() throws DBException {
133139
}
134140
String datasetId = getProperties().getProperty(
135141
"googledatastore.datasetId", null);
142+
143+
boolean usegRPC = Boolean.parseBoolean(getProperties().getProperty(
144+
"googledatastore.usegRPC", "true"));
145+
logger.info("Using gRPC transport:" + usegRPC);
146+
boolean useChannelProvider = Boolean.parseBoolean(getProperties().getProperty(
147+
"googledatastore.useChannelProvider", "true"));
148+
logger.info("Using gRPC ChannelProvider:" + useChannelProvider);
149+
136150
String privateKeyFile = getProperties().getProperty(
137151
"googledatastore.privateKeyFile", null);
138152
String serviceAccountEmail = getProperties().getProperty(
@@ -214,6 +228,17 @@ public void init() throws DBException {
214228
datastoreOptionsBuilder.setDatabaseId(datasetId);
215229
}
216230

231+
if (usegRPC) {
232+
if (useChannelProvider) {
233+
InstantiatingGrpcChannelProvider channelProvider = DatastoreSettings
234+
.defaultGrpcTransportProviderBuilder()
235+
.setChannelPoolSettings(ChannelPoolSettings.builder()
236+
.build()).build();
237+
datastoreOptionsBuilder.setChannelProvider(channelProvider);
238+
}
239+
datastoreOptionsBuilder.setTransportOptions(GrpcTransportOptions.newBuilder().build());
240+
}
241+
217242
DatastoreOptions datastoreOptions = datastoreOptionsBuilder.build();
218243
datastore = datastoreOptions.getService();
219244
} catch (GeneralSecurityException exception) {

0 commit comments

Comments
 (0)