diff --git a/CHANGELOG.md b/CHANGELOG.md
index 980fb27086..9529c24111 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [2.10.2](https://github.com/googleapis/java-bigtable/compare/v2.10.1...v2.10.2) (2022-08-03)
+
+
+### Bug Fixes
+
+* add a ReadFirstRow callable to set future in onComplete ([#1326](https://github.com/googleapis/java-bigtable/issues/1326)) ([cb539b5](https://github.com/googleapis/java-bigtable/commit/cb539b50d98ec2a8538ce4691b2639426ca95464))
+* The metadata could be returned in trailer or header depends on i… ([#1337](https://github.com/googleapis/java-bigtable/issues/1337)) ([c4b8c03](https://github.com/googleapis/java-bigtable/commit/c4b8c03ece7b3f6ec2cea42ff0ca5ac617528060))
+
+
+### Dependencies
+
+* update dependency com.google.cloud:google-cloud-shared-dependencies to v3 ([#1328](https://github.com/googleapis/java-bigtable/issues/1328)) ([bee0ca0](https://github.com/googleapis/java-bigtable/commit/bee0ca036ab6e711f6069159364f6d3b691e6bfd))
+* upgrade shared config to 1.5.3, exclude google-http-client and google-http-client-gson from gax in google-cloud-bigtable-stats ([#1336](https://github.com/googleapis/java-bigtable/issues/1336)) ([98b3349](https://github.com/googleapis/java-bigtable/commit/98b33498d85325d22737fb4bd66826519e96755a))
+
## [2.10.1](https://github.com/googleapis/java-bigtable/compare/v2.10.0...v2.10.1) (2022-08-01)
diff --git a/README.md b/README.md
index 6348e79d25..61404dff4a 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ If you are using Maven without BOM, add this to your dependencies:
com.google.cloud
google-cloud-bigtable
- 2.10.0
+ 2.10.1
```
@@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-bigtable'
If you are using Gradle without BOM, add this to your dependencies:
```Groovy
-implementation 'com.google.cloud:google-cloud-bigtable:2.10.0'
+implementation 'com.google.cloud:google-cloud-bigtable:2.10.1'
```
If you are using SBT, add this to your dependencies:
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "2.10.0"
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "2.10.1"
```
## Authentication
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index ae75766b7b..153ee46cca 100644
--- a/google-cloud-bigtable-bom/pom.xml
+++ b/google-cloud-bigtable-bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
com.google.cloud
@@ -62,42 +62,42 @@
com.google.cloud
google-cloud-bigtable
- 2.10.1
+ 2.10.2
com.google.cloud
google-cloud-bigtable-emulator
- 0.147.1
+ 0.147.2
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.147.1
+ 0.147.2
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
com.google.cloud
google-cloud-bigtable-stats
- 2.10.1
+ 2.10.2
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index fdc667eb0f..926dc12f20 100644
--- a/google-cloud-bigtable-deps-bom/pom.xml
+++ b/google-cloud-bigtable-deps-bom/pom.xml
@@ -12,7 +12,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
@@ -65,7 +65,7 @@
com.google.cloud
google-cloud-shared-dependencies
- 2.13.0
+ 3.0.1
pom
import
diff --git a/google-cloud-bigtable-emulator-core/pom.xml b/google-cloud-bigtable-emulator-core/pom.xml
index 048ec9c673..9f57e06b9e 100644
--- a/google-cloud-bigtable-emulator-core/pom.xml
+++ b/google-cloud-bigtable-emulator-core/pom.xml
@@ -7,11 +7,11 @@
google-cloud-bigtable-parent
com.google.cloud
- 2.10.1
+ 2.10.2
google-cloud-bigtable-emulator-core
- 0.147.1
+ 0.147.2
A Java wrapper for the Cloud Bigtable emulator.
diff --git a/google-cloud-bigtable-emulator/pom.xml b/google-cloud-bigtable-emulator/pom.xml
index c7d28c6768..b50d50d668 100644
--- a/google-cloud-bigtable-emulator/pom.xml
+++ b/google-cloud-bigtable-emulator/pom.xml
@@ -5,7 +5,7 @@
4.0.0
google-cloud-bigtable-emulator
- 0.147.1
+ 0.147.2
Google Cloud Java - Bigtable Emulator
https://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
scm:git:git@github.com:googleapis/java-bigtable.git
@@ -81,14 +81,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
@@ -99,7 +99,7 @@
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.147.1
+ 0.147.2
diff --git a/google-cloud-bigtable-stats/pom.xml b/google-cloud-bigtable-stats/pom.xml
index c7c4a58748..7fb1de4766 100644
--- a/google-cloud-bigtable-stats/pom.xml
+++ b/google-cloud-bigtable-stats/pom.xml
@@ -5,7 +5,7 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
4.0.0
@@ -13,7 +13,7 @@
through Stackdriver. Built-in metrics will be implemented with shaded OpenCensus so it won't interfere with
customer's application metrics. -->
google-cloud-bigtable-stats
- 2.10.1
+ 2.10.2
Experimental project to shade OpenCensus dependencies.
@@ -21,7 +21,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
@@ -32,6 +32,17 @@
com.google.api
gax
+
+
+
+ com.google.http-client
+ google-http-client
+
+
+ com.google.http-client
+ google-http-client-gson
+
+
com.google.api
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 274dd9dfbd..909789d204 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -2,7 +2,7 @@
4.0.0
google-cloud-bigtable
- 2.10.1
+ 2.10.2
jar
Google Cloud Bigtable
https://github.com/googleapis/java-bigtable
@@ -12,11 +12,11 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
- 2.10.1
+ 2.10.2
google-cloud-bigtable
@@ -43,14 +43,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
@@ -122,14 +122,6 @@
com.google.guava
guava
-
- com.google.http-client
- google-http-client
-
-
- com.google.http-client
- google-http-client-gson
-
com.google.protobuf
protobuf-java
@@ -270,6 +262,16 @@
opencensus-impl
test
+
+ com.google.http-client
+ google-http-client
+ test
+
+
+ com.google.http-client
+ google-http-client-gson
+ test
+
junit
junit
@@ -603,7 +605,7 @@
org.codehaus.mojo
extra-enforcer-rules
- 1.6.0
+ 1.6.1
org.apache.maven.shared
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/Version.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/Version.java
index bddc2b2347..cacc648157 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/Version.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/Version.java
@@ -20,6 +20,6 @@
@InternalApi("For internal use only")
public final class Version {
// {x-version-update-start:google-cloud-bigtable:current}
- public static String VERSION = "2.10.1";
+ public static String VERSION = "2.10.2";
// {x-version-update-end}
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
index 301ecd66b5..c6591d588a 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
@@ -86,6 +86,7 @@
import com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsRetryingCallable;
import com.google.cloud.bigtable.data.v2.stub.readrows.FilterMarkerRowsCallable;
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsBatchingDescriptor;
+import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsFirstCallable;
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsResumptionStrategy;
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsRetryCompletedCallable;
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsUserCallable;
@@ -366,10 +367,16 @@ public UnaryCallable createReadRowCallable(RowAdapter
.build(),
rowAdapter);
- UnaryCallable readRowCallable =
- new ReadRowsUserCallable<>(readRowsCallable, requestContext).first();
+ ReadRowsUserCallable readRowCallable =
+ new ReadRowsUserCallable<>(readRowsCallable, requestContext);
+
+ ServerStreamingCallable traced =
+ new TracedServerStreamingCallable<>(
+ readRowCallable, clientContext.getTracerFactory(), getSpanName("ReadRow"));
+
+ ReadRowsFirstCallable firstRow = new ReadRowsFirstCallable<>(traced);
- return createUserFacingUnaryCallable("ReadRow", readRowCallable);
+ return firstRow.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerStreamingCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerStreamingCallable.java
index 6f636bf55d..c7f09c4db1 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerStreamingCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerStreamingCallable.java
@@ -104,11 +104,24 @@ public void onError(Throwable t) {
Long latency = Util.getGfeLatency(metadata);
tracer.recordGfeMetadata(latency, t);
try {
- byte[] trailers =
- metadata.get(Metadata.Key.of(Util.RESPONSE_PRAMS_KEY, Metadata.BINARY_BYTE_MARSHALLER));
- ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
- tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
- } catch (NullPointerException | InvalidProtocolBufferException e) {
+ // Check both headers and trailers because in different environments the metadata
+ // could be returned in headers or trailers
+ if (metadata != null) {
+ byte[] trailers = metadata.get(Util.METADATA_KEY);
+ if (trailers == null) {
+ Metadata trailingMetadata = responseMetadata.getTrailingMetadata();
+ if (trailingMetadata != null) {
+ trailers = trailingMetadata.get(Util.METADATA_KEY);
+ }
+ }
+ // If the response is terminated abnormally and we didn't get location information in
+ // trailers or headers, skip setting the locations
+ if (trailers != null) {
+ ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
+ tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
+ }
+ }
+ } catch (InvalidProtocolBufferException e) {
}
outerObserver.onError(t);
@@ -120,11 +133,24 @@ public void onComplete() {
Long latency = Util.getGfeLatency(metadata);
tracer.recordGfeMetadata(latency, null);
try {
- byte[] trailers =
- metadata.get(Metadata.Key.of(Util.RESPONSE_PRAMS_KEY, Metadata.BINARY_BYTE_MARSHALLER));
- ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
- tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
- } catch (NullPointerException | InvalidProtocolBufferException e) {
+ // Check both headers and trailers because in different environments the metadata
+ // could be returned in headers or trailers
+ if (metadata != null) {
+ byte[] trailers = metadata.get(Util.METADATA_KEY);
+ if (trailers == null) {
+ Metadata trailingMetadata = responseMetadata.getTrailingMetadata();
+ if (trailingMetadata != null) {
+ trailers = trailingMetadata.get(Util.METADATA_KEY);
+ }
+ }
+ // If the response is terminated abnormally and we didn't get location information in
+ // trailers or headers, skip setting the locations
+ if (trailers != null) {
+ ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
+ tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
+ }
+ }
+ } catch (InvalidProtocolBufferException e) {
}
outerObserver.onComplete();
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerUnaryCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerUnaryCallable.java
index 0efc99fe4d..50d24ecbaf 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerUnaryCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerUnaryCallable.java
@@ -83,11 +83,24 @@ public void onFailure(Throwable throwable) {
Long latency = Util.getGfeLatency(metadata);
tracer.recordGfeMetadata(latency, throwable);
try {
- byte[] trailers =
- metadata.get(Metadata.Key.of(Util.RESPONSE_PRAMS_KEY, Metadata.BINARY_BYTE_MARSHALLER));
- ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
- tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
- } catch (NullPointerException | InvalidProtocolBufferException e) {
+ // Check both headers and trailers because in different environments the metadata
+ // could be returned in headers or trailers
+ if (metadata != null) {
+ byte[] trailers = metadata.get(Util.METADATA_KEY);
+ if (trailers == null) {
+ Metadata trailingMetadata = responseMetadata.getTrailingMetadata();
+ if (trailingMetadata != null) {
+ trailers = trailingMetadata.get(Util.METADATA_KEY);
+ }
+ }
+ // If the response is terminated abnormally and we didn't get location information in
+ // trailers or headers, skip setting the locations
+ if (trailers != null) {
+ ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
+ tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
+ }
+ }
+ } catch (InvalidProtocolBufferException e) {
}
}
@@ -97,11 +110,24 @@ public void onSuccess(ResponseT response) {
Long latency = Util.getGfeLatency(metadata);
tracer.recordGfeMetadata(latency, null);
try {
- byte[] trailers =
- metadata.get(Metadata.Key.of(Util.RESPONSE_PRAMS_KEY, Metadata.BINARY_BYTE_MARSHALLER));
- ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
- tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
- } catch (NullPointerException | InvalidProtocolBufferException e) {
+ // Check both headers and trailers because in different environments the metadata
+ // could be returned in headers or trailers
+ if (metadata != null) {
+ byte[] trailers = metadata.get(Util.METADATA_KEY);
+ if (trailers == null) {
+ Metadata trailingMetadata = responseMetadata.getTrailingMetadata();
+ if (trailingMetadata != null) {
+ trailers = trailingMetadata.get(Util.METADATA_KEY);
+ }
+ }
+ // If the response is terminated abnormally and we didn't get location information in
+ // trailers or headers, skip setting the locations
+ if (trailers != null) {
+ ResponseParams decodedTrailers = ResponseParams.parseFrom(trailers);
+ tracer.setLocations(decodedTrailers.getZoneId(), decodedTrailers.getClusterId());
+ }
+ }
+ } catch (InvalidProtocolBufferException e) {
}
}
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java
index 7487703fc0..0e356ebaf9 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java
@@ -57,8 +57,8 @@ public class Util {
private static final Metadata.Key SERVER_TIMING_HEADER_KEY =
Metadata.Key.of("server-timing", Metadata.ASCII_STRING_MARSHALLER);
private static final Pattern SERVER_TIMING_HEADER_PATTERN = Pattern.compile(".*dur=(?\\d+)");
-
- static final String RESPONSE_PRAMS_KEY = "x-goog-ext-425905942-bin";
+ static final Metadata.Key METADATA_KEY =
+ Metadata.Key.of("x-goog-ext-425905942-bin", Metadata.BINARY_BYTE_MARSHALLER);
/** Convert an exception into a value that can be used to create an OpenCensus tag value. */
static String extractStatus(@Nullable Throwable error) {
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallable.java
index c2584e0c93..2ef26605b4 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallable.java
@@ -16,7 +16,12 @@
package com.google.cloud.bigtable.data.v2.stub.readrows;
import com.google.api.core.ApiFuture;
+import com.google.api.core.InternalApi;
+import com.google.api.core.SettableApiFuture;
import com.google.api.gax.rpc.ApiCallContext;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+import com.google.api.gax.rpc.StateCheckingResponseObserver;
+import com.google.api.gax.rpc.StreamController;
import com.google.api.gax.rpc.UnaryCallable;
import com.google.cloud.bigtable.data.v2.models.Query;
@@ -24,15 +29,51 @@
* Enhancement for `readRowsCallable().first()` to gracefully limit the row count instead of
* cancelling the RPC
*/
-class ReadRowsFirstCallable extends UnaryCallable {
- private final UnaryCallable inner;
+@InternalApi
+public class ReadRowsFirstCallable extends UnaryCallable {
- ReadRowsFirstCallable(UnaryCallable inner) {
+ private final ServerStreamingCallable inner;
+
+ public ReadRowsFirstCallable(ServerStreamingCallable inner) {
this.inner = inner;
}
@Override
public ApiFuture futureCall(Query query, ApiCallContext context) {
- return inner.futureCall(query.limit(1), context);
+ ReadRowsFirstResponseObserver observer = new ReadRowsFirstResponseObserver<>();
+ this.inner.call(query.limit(1), observer, context);
+ return observer.getFuture();
+ }
+
+ private class ReadRowsFirstResponseObserver extends StateCheckingResponseObserver {
+ private StreamController innerController;
+ private RowT firstRow;
+ private SettableApiFuture settableFuture = SettableApiFuture.create();
+
+ @Override
+ protected void onStartImpl(StreamController streamController) {
+ this.innerController = streamController;
+ }
+
+ @Override
+ protected void onResponseImpl(RowT response) {
+ if (firstRow == null) {
+ this.firstRow = response;
+ }
+ }
+
+ @Override
+ protected void onErrorImpl(Throwable throwable) {
+ settableFuture.setException(throwable);
+ }
+
+ @Override
+ protected void onCompleteImpl() {
+ settableFuture.set(firstRow);
+ }
+
+ protected ApiFuture getFuture() {
+ return settableFuture;
+ }
}
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallable.java
index 94ced791c5..3f1db6d0d8 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallable.java
@@ -19,7 +19,6 @@
import com.google.api.gax.rpc.ApiCallContext;
import com.google.api.gax.rpc.ResponseObserver;
import com.google.api.gax.rpc.ServerStreamingCallable;
-import com.google.api.gax.rpc.UnaryCallable;
import com.google.bigtable.v2.ReadRowsRequest;
import com.google.cloud.bigtable.data.v2.internal.RequestContext;
import com.google.cloud.bigtable.data.v2.models.Query;
@@ -34,14 +33,11 @@
public class ReadRowsUserCallable extends ServerStreamingCallable {
private final ServerStreamingCallable inner;
private final RequestContext requestContext;
- private final ReadRowsFirstCallable firstCallable;
public ReadRowsUserCallable(
ServerStreamingCallable inner, RequestContext requestContext) {
this.inner = inner;
this.requestContext = requestContext;
-
- this.firstCallable = new ReadRowsFirstCallable<>(super.first());
}
@Override
@@ -49,12 +45,4 @@ public void call(Query request, ResponseObserver responseObserver, ApiCall
ReadRowsRequest innerRequest = request.toProto(requestContext);
inner.call(innerRequest, responseObserver, context);
}
-
- // Optimization: since the server supports row limits, override the first callable.
- // This way unnecessary data doesn't need to be buffered and the number of CANCELLED request
- // statuses is minimized
- @Override
- public UnaryCallable first() {
- return firstCallable;
- }
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsTracerTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsTracerTest.java
index b9bd2a926c..9ea222d012 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsTracerTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsTracerTest.java
@@ -127,9 +127,7 @@ public void sendHeaders(Metadata headers) {
ResponseParams params =
ResponseParams.newBuilder().setZoneId(ZONE).setClusterId(CLUSTER).build();
byte[] byteArray = params.toByteArray();
- headers.put(
- Metadata.Key.of(Util.RESPONSE_PRAMS_KEY, Metadata.BINARY_BYTE_MARSHALLER),
- byteArray);
+ headers.put(Util.METADATA_KEY, byteArray);
super.sendHeaders(headers);
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallableTest.java
index edc20e6081..07cf3478c1 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsFirstCallableTest.java
@@ -15,8 +15,13 @@
*/
package com.google.cloud.bigtable.data.v2.stub.readrows;
-import com.google.api.core.SettableApiFuture;
-import com.google.api.gax.rpc.UnaryCallable;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import com.google.api.gax.grpc.GrpcCallContext;
+import com.google.api.gax.rpc.ApiCallContext;
+import com.google.api.gax.rpc.ResponseObserver;
+import com.google.api.gax.rpc.ServerStreamingCallable;
import com.google.cloud.bigtable.data.v2.internal.RequestContext;
import com.google.cloud.bigtable.data.v2.models.Query;
import com.google.cloud.bigtable.data.v2.models.Row;
@@ -38,26 +43,23 @@ public class ReadRowsFirstCallableTest {
private static final RequestContext REQUEST_CONTEXT =
RequestContext.create("fake-project", "fake-instance", "fake-profile");
- private UnaryCallable innerCallable;
+
+ private ServerStreamingCallable innerCallable;
private ArgumentCaptor innerQuery;
- private SettableApiFuture innerResult;
@SuppressWarnings("unchecked")
@Before
public void setUp() {
- innerCallable = Mockito.mock(UnaryCallable.class);
+ innerCallable = Mockito.mock(ServerStreamingCallable.class);
innerQuery = ArgumentCaptor.forClass(Query.class);
- innerResult = SettableApiFuture.create();
- Mockito.when(innerCallable.futureCall(innerQuery.capture(), Mockito.any()))
- .thenReturn(innerResult);
}
@Test
public void testLimitAdded() {
ReadRowsFirstCallable callable = new ReadRowsFirstCallable<>(innerCallable);
- innerResult.set(null);
- callable.call(Query.create("fake-table"));
-
+ callable.futureCall(Query.create("fake-table"), GrpcCallContext.createDefault());
+ verify(innerCallable)
+ .call(innerQuery.capture(), any(ResponseObserver.class), any(ApiCallContext.class));
Truth.assertThat(innerQuery.getValue().toProto(REQUEST_CONTEXT))
.isEqualTo(Query.create("fake-table").limit(1).toProto(REQUEST_CONTEXT));
}
@@ -65,9 +67,9 @@ public void testLimitAdded() {
@Test
public void testLimitChanged() {
ReadRowsFirstCallable callable = new ReadRowsFirstCallable<>(innerCallable);
- innerResult.set(null);
- callable.call(Query.create("fake-table").limit(1_000));
-
+ callable.futureCall(Query.create("fake-table").limit(10), GrpcCallContext.createDefault());
+ verify(innerCallable)
+ .call(innerQuery.capture(), any(ResponseObserver.class), any(ApiCallContext.class));
Truth.assertThat(innerQuery.getValue().toProto(REQUEST_CONTEXT))
.isEqualTo(Query.create("fake-table").limit(1).toProto(REQUEST_CONTEXT));
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallableTest.java
index d1e03df2c6..b518a55415 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsUserCallableTest.java
@@ -41,17 +41,4 @@ public void testRequestConverted() {
Truth.assertThat(innerCallable.getActualRequest()).isEqualTo(query.toProto(REQUEST_CONTEXT));
}
-
- @Test
- public void testFirstIsLimited() {
- ServerStreamingStashCallable innerCallable =
- new ServerStreamingStashCallable<>();
- ReadRowsUserCallable callable = new ReadRowsUserCallable<>(innerCallable, REQUEST_CONTEXT);
- Query query = Query.create("fake-table");
-
- callable.first().call(query);
-
- Truth.assertThat(innerCallable.getActualRequest())
- .isEqualTo(query.limit(1).toProto(REQUEST_CONTEXT));
- }
}
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index fc24225d9a..b9ecda74e8 100644
--- a/grpc-google-cloud-bigtable-admin-v2/pom.xml
+++ b/grpc-google-cloud-bigtable-admin-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
grpc-google-cloud-bigtable-admin-v2
GRPC library for grpc-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index f504ff5bbd..45a8773789 100644
--- a/grpc-google-cloud-bigtable-v2/pom.xml
+++ b/grpc-google-cloud-bigtable-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
grpc-google-cloud-bigtable-v2
GRPC library for grpc-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
diff --git a/pom.xml b/pom.xml
index 29f91318a4..d1c4d940fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parent
pom
- 2.10.1
+ 2.10.2
Google Cloud Bigtable Parent
https://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-shared-config
- 1.5.1
+ 1.5.3
@@ -152,27 +152,27 @@
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
com.google.cloud
google-cloud-bigtable
- 2.10.1
+ 2.10.2
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index ed62a46838..32d274e814 100644
--- a/proto-google-cloud-bigtable-admin-v2/pom.xml
+++ b/proto-google-cloud-bigtable-admin-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.10.1
+ 2.10.2
proto-google-cloud-bigtable-admin-v2
PROTO library for proto-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index aadff2191a..4e06b63a36 100644
--- a/proto-google-cloud-bigtable-v2/pom.xml
+++ b/proto-google-cloud-bigtable-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.10.1
+ 2.10.2
proto-google-cloud-bigtable-v2
PROTO library for proto-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.10.1
+ 2.10.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.10.1
+ 2.10.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.10.1
+ 2.10.2
pom
import
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 3c265dc7a0..6f81a464df 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -29,7 +29,7 @@
com.google.cloud
google-cloud-bigtable
- 2.10.0
+ 2.10.1
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index b4ab283b39..b6694628a5 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
com.google.cloud
google-cloud-bigtable
- 2.10.1
+ 2.10.2
diff --git a/versions.txt b/versions.txt
index 89e36405c3..7130f092fb 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:2.10.1:2.10.1
-grpc-google-cloud-bigtable-admin-v2:2.10.1:2.10.1
-grpc-google-cloud-bigtable-v2:2.10.1:2.10.1
-proto-google-cloud-bigtable-admin-v2:2.10.1:2.10.1
-proto-google-cloud-bigtable-v2:2.10.1:2.10.1
-google-cloud-bigtable-emulator:0.147.1:0.147.1
-google-cloud-bigtable-emulator-core:2.10.1:2.10.1
+google-cloud-bigtable:2.10.2:2.10.2
+grpc-google-cloud-bigtable-admin-v2:2.10.2:2.10.2
+grpc-google-cloud-bigtable-v2:2.10.2:2.10.2
+proto-google-cloud-bigtable-admin-v2:2.10.2:2.10.2
+proto-google-cloud-bigtable-v2:2.10.2:2.10.2
+google-cloud-bigtable-emulator:0.147.2:0.147.2
+google-cloud-bigtable-emulator-core:2.10.2:2.10.2