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