diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index e27b2c5756..c13eb8a836 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -1,23 +1,8 @@
-# Copyright 2022 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# Github action job to test core java library features on
-# downstream client libraries before they are released.
-on:
+'on':
push:
branches:
- - main
- pull_request:
+ - 2.25.x
+ pull_request: null
name: ci
jobs:
units:
@@ -25,20 +10,21 @@ jobs:
strategy:
fail-fast: false
matrix:
- java: [11, 17]
+ java:
+ - 11
+ - 17
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: ${{matrix.java}}
- - run: java -version
- - run: .kokoro/build.sh
- env:
- JOB_TYPE: test
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: ${{matrix.java}}
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
units-java8:
- # Building using Java 17 and run the tests with Java 8 runtime
- name: "units (8)"
+ name: units (8)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -46,9 +32,9 @@ jobs:
with:
java-version: 8
distribution: temurin
- - name: "Set jvm system property environment variable for surefire plugin (unit tests)"
- # Maven surefire plugin (unit tests) allows us to specify JVM to run the tests.
- # https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#jvm
+ - name: >-
+ Set jvm system property environment variable for surefire plugin (unit
+ tests)
run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java" >> $GITHUB_ENV
shell: bash
- uses: actions/setup-java@v3
@@ -61,63 +47,64 @@ jobs:
windows:
runs-on: windows-latest
steps:
- - name: Support longpaths
- run: git config --system core.longpaths true
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: 8
- - run: java -version
- - run: .kokoro/build.bat
- env:
- JOB_TYPE: test
+ - name: Support longpaths
+ run: git config --system core.longpaths true
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: 8
+ - run: java -version
+ - run: .kokoro/build.bat
+ env:
+ JOB_TYPE: test
dependencies:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [17]
+ java:
+ - 17
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: ${{matrix.java}}
- - run: java -version
- - run: .kokoro/dependencies.sh
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: ${{matrix.java}}
+ - run: java -version
+ - run: .kokoro/dependencies.sh
javadoc:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: 17
- - run: java -version
- - run: .kokoro/build.sh
- env:
- JOB_TYPE: javadoc
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: 17
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: javadoc
lint:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: 11
- - run: java -version
- - run: .kokoro/build.sh
- env:
- JOB_TYPE: lint
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: 11
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: lint
clirr:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: temurin
- java-version: 8
- - run: java -version
- - run: .kokoro/build.sh
- env:
- JOB_TYPE: clirr
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: 8
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: clirr
diff --git a/.github/workflows/conformance.yaml b/.github/workflows/conformance.yaml
index 66d9c10c71..91a6a1a96b 100644
--- a/.github/workflows/conformance.yaml
+++ b/.github/workflows/conformance.yaml
@@ -1,41 +1,26 @@
-# Copyright 2023 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# Github action job to test core java library features on
-# downstream client libraries before they are released.
-on:
+'on':
push:
branches:
- - main
- pull_request:
+ - 2.25.x
+ pull_request: null
name: conformance
jobs:
conformance:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/checkout@v3
- with:
- repository: googleapis/cloud-bigtable-clients-test
- ref: main
- path: cloud-bigtable-clients-test
- - uses: actions/setup-java@v3
- with:
- distribution: zulu
- java-version: 8
- - uses: actions/setup-go@v4
- with:
- go-version: '>=1.20.2'
- - run: java -version
- - run: go version
- - run: .kokoro/conformance.sh
+ - uses: actions/checkout@v3
+ - uses: actions/checkout@v3
+ with:
+ repository: googleapis/cloud-bigtable-clients-test
+ ref: main
+ path: cloud-bigtable-clients-test
+ - uses: actions/setup-java@v3
+ with:
+ distribution: zulu
+ java-version: 8
+ - uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.2'
+ - run: java -version
+ - run: go version
+ - run: .kokoro/conformance.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ffb49d9c9..1d520d1dbe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [2.25.2](https://github.com/googleapis/java-bigtable/compare/v2.25.0...v2.25.2) (2023-09-18)
+
+
+### Bug Fixes
+
+* Check that all bulk mutation entries are accounted for ([#1907](https://github.com/googleapis/java-bigtable/issues/1907)) ([#1923](https://github.com/googleapis/java-bigtable/issues/1923)) ([e4db745](https://github.com/googleapis/java-bigtable/commit/e4db74534690eb090347c00047eecbd45f5a22b7))
+* Make sure to propagate the response when throttling is enabled ([#1908](https://github.com/googleapis/java-bigtable/issues/1908)) ([#1922](https://github.com/googleapis/java-bigtable/issues/1922)) ([7ec5dd5](https://github.com/googleapis/java-bigtable/commit/7ec5dd5bc9499b01f5e330c28c9c5ee8cfadad68))
+
+
+### Miscellaneous Chores
+
+* Update release tag to 2.25.2 ([#1926](https://github.com/googleapis/java-bigtable/issues/1926)) ([9d5868b](https://github.com/googleapis/java-bigtable/commit/9d5868b2350f2b24b5988ebe3adb2e77e36c8a5a))
+
## [2.25.0](https://github.com/googleapis/java-bigtable/compare/v2.24.1...v2.25.0) (2023-07-14)
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index cadc5a5286..fbf7168efd 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.25.0
+ 2.25.2
pom
com.google.cloud
@@ -63,42 +63,42 @@
com.google.cloud
google-cloud-bigtable
- 2.25.0
+ 2.25.2
com.google.cloud
google-cloud-bigtable-emulator
- 0.162.0
+ 0.162.2
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.162.0
+ 0.162.2
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.25.0
+ 2.25.2
com.google.cloud
google-cloud-bigtable-stats
- 2.25.0
+ 2.25.2
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index 76e1f195fe..991cbe1ea5 100644
--- a/google-cloud-bigtable-deps-bom/pom.xml
+++ b/google-cloud-bigtable-deps-bom/pom.xml
@@ -13,7 +13,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
diff --git a/google-cloud-bigtable-emulator-core/pom.xml b/google-cloud-bigtable-emulator-core/pom.xml
index 2b483d5851..5457323c07 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.25.0
+ 2.25.2
google-cloud-bigtable-emulator-core
- 0.162.0
+ 0.162.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 d24c5f3346..823e6717e0 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.162.0
+ 0.162.2
Google Cloud Java - Bigtable Emulator
https://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
scm:git:git@github.com:googleapis/java-bigtable.git
@@ -81,14 +81,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
@@ -99,7 +99,7 @@
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.162.0
+ 0.162.2
diff --git a/google-cloud-bigtable-stats/pom.xml b/google-cloud-bigtable-stats/pom.xml
index 84fe978b63..11693d0cbf 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.25.0
+ 2.25.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.25.0
+ 2.25.2
Experimental project to shade OpenCensus dependencies.
@@ -21,7 +21,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 525aef8fdc..a283b5fbe0 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -2,7 +2,7 @@
4.0.0
google-cloud-bigtable
- 2.25.0
+ 2.25.2
jar
Google Cloud Bigtable
https://github.com/googleapis/java-bigtable
@@ -12,11 +12,11 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
- 2.25.0
+ 2.25.2
google-cloud-bigtable
@@ -47,14 +47,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
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 6c92fd7dbf..48635f509f 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.25.0";
+ public static String VERSION = "2.25.2";
// {x-version-update-end}
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingServerStreamingCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingServerStreamingCallable.java
index 278019b07e..6208fce89e 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingServerStreamingCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingServerStreamingCallable.java
@@ -127,6 +127,7 @@ protected void onResponseImpl(MutateRowsResponse response) {
Duration.ofSeconds(com.google.protobuf.util.Durations.toSeconds(info.getPeriod())));
}
}
+ outerObserver.onResponse(response);
}
@Override
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsAttemptCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsAttemptCallable.java
index 36c2930bda..b049219a95 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsAttemptCallable.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsAttemptCallable.java
@@ -35,6 +35,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import com.google.common.primitives.Ints;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.rpc.Code;
import java.util.List;
@@ -263,9 +264,12 @@ private void handleAttemptSuccess(List responses) {
Builder builder = lastRequest.toBuilder().clearEntries();
List newOriginalIndexes = Lists.newArrayList();
+ boolean[] seenIndices = new boolean[currentRequest.getEntriesCount()];
for (MutateRowsResponse response : responses) {
for (Entry entry : response.getEntriesList()) {
+ seenIndices[Ints.checkedCast(entry.getIndex())] = true;
+
if (entry.getStatus().getCode() == Code.OK_VALUE) {
continue;
}
@@ -288,6 +292,26 @@ private void handleAttemptSuccess(List responses) {
}
}
+ // Handle missing mutations
+ for (int i = 0; i < seenIndices.length; i++) {
+ if (seenIndices[i]) {
+ continue;
+ }
+
+ int origIndex = getOriginalIndex(i);
+ FailedMutation failedMutation =
+ FailedMutation.create(
+ origIndex,
+ ApiExceptionFactory.createException(
+ "Missing entry response for entry " + origIndex,
+ null,
+ GrpcStatusCode.of(io.grpc.Status.Code.INTERNAL),
+ false));
+
+ allFailures.add(failedMutation);
+ permanentFailures.add(failedMutation);
+ }
+
currentRequest = builder.build();
originalIndexes = newOriginalIndexes;
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingCallableTest.java
index 96092b9e6e..92b93cfafe 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RateLimitingCallableTest.java
@@ -27,9 +27,13 @@
import com.google.api.gax.rpc.StreamController;
import com.google.bigtable.v2.MutateRowsRequest;
import com.google.bigtable.v2.MutateRowsResponse;
+import com.google.bigtable.v2.Mutation;
import com.google.bigtable.v2.RateLimitInfo;
import com.google.cloud.bigtable.gaxx.testing.FakeStatusCode;
+import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
+import com.google.rpc.Code;
+import com.google.rpc.Status;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -138,6 +142,46 @@ public void testErrorInfoLowerQPS() throws Exception {
assertThat(newQps).isWithin(0.1).of(oldQps * RateLimitingServerStreamingCallable.MIN_FACTOR);
}
+ @Test
+ public void testResponseIsPropagated() {
+ MutateRowsResponse expectedResponse =
+ MutateRowsResponse.newBuilder()
+ .addEntries(
+ MutateRowsResponse.Entry.newBuilder()
+ .setIndex(0)
+ .setStatus(Status.newBuilder().setCode(Code.PERMISSION_DENIED_VALUE)))
+ .build();
+ innerCallable =
+ new MockCallable() {
+ @Override
+ public void call(
+ MutateRowsRequest mutateRowsRequest,
+ ResponseObserver responseObserver,
+ ApiCallContext apiCallContext) {
+ responseObserver.onResponse(expectedResponse);
+ responseObserver.onComplete();
+ }
+ };
+
+ callableToTest = new RateLimitingServerStreamingCallable(innerCallable);
+
+ ResponseObserver mockObserver = Mockito.mock(ResponseObserver.class);
+
+ MutateRowsRequest req =
+ MutateRowsRequest.newBuilder()
+ .addEntries(
+ MutateRowsRequest.Entry.newBuilder()
+ .setRowKey(ByteString.copyFromUtf8("k1"))
+ .addMutations(
+ Mutation.newBuilder()
+ .setDeleteFromRow(Mutation.DeleteFromRow.getDefaultInstance())))
+ .build();
+
+ callableToTest.call(req, mockObserver, context);
+
+ Mockito.verify(mockObserver, Mockito.times(1)).onResponse(Mockito.eq(expectedResponse));
+ }
+
private static class MockResponseObserver implements ResponseObserver {
private ResponseObserver observer;
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerCallableTest.java
index 1b833f5c06..5896eb38de 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerCallableTest.java
@@ -404,7 +404,11 @@ public void mutateRow(MutateRowRequest request, StreamObserver observer) {
- observer.onNext(MutateRowsResponse.getDefaultInstance());
+ MutateRowsResponse.Builder builder = MutateRowsResponse.newBuilder();
+ for (int i = 0; i < request.getEntriesCount(); i++) {
+ builder.addEntries(MutateRowsResponse.Entry.newBuilder().setIndex(i));
+ }
+ observer.onNext(builder.build());
observer.onCompleted();
}
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 8a371cb2e7..f0fba2164a 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
@@ -639,7 +639,11 @@ public void mutateRows(
Thread.sleep(SERVER_LATENCY);
} catch (InterruptedException e) {
}
- responseObserver.onNext(MutateRowsResponse.getDefaultInstance());
+ MutateRowsResponse.Builder builder = MutateRowsResponse.newBuilder();
+ for (int i = 0; i < request.getEntriesCount(); i++) {
+ builder.addEntriesBuilder().setIndex(i);
+ }
+ responseObserver.onNext(builder.build());
responseObserver.onCompleted();
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/MetricsTracerTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/MetricsTracerTest.java
index bb5e89aab4..6bd0628554 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/MetricsTracerTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/MetricsTracerTest.java
@@ -445,10 +445,15 @@ public Object answer(InvocationOnMock invocation) throws Throwable {
new Answer() {
@Override
public Object answer(InvocationOnMock invocation) {
+ MutateRowsRequest request = (MutateRowsRequest) invocation.getArguments()[0];
@SuppressWarnings("unchecked")
StreamObserver observer =
(StreamObserver) invocation.getArguments()[1];
- observer.onNext(MutateRowsResponse.getDefaultInstance());
+ MutateRowsResponse.Builder builder = MutateRowsResponse.newBuilder();
+ for (int i = 0; i < request.getEntriesCount(); i++) {
+ builder.addEntriesBuilder().setIndex(i);
+ }
+ observer.onNext(builder.build());
observer.onCompleted();
return null;
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/StatsHeadersCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/StatsHeadersCallableTest.java
index 538d4fc246..88a874b8c9 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/StatsHeadersCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/StatsHeadersCallableTest.java
@@ -223,7 +223,11 @@ public void mutateRows(MutateRowsRequest request, StreamObserver parentFuture.attemptFuture.get());
+ assertThat(executionException).hasCauseThat().isInstanceOf(MutateRowsException.class);
+ MutateRowsException e = (MutateRowsException) executionException.getCause();
+
+ assertThat(e).hasMessageThat().contains("Some mutations failed to apply");
+ assertThat(e.getFailedMutations()).hasSize(1);
+ FailedMutation failedMutation = e.getFailedMutations().get(0);
+ assertThat(failedMutation.getIndex()).isEqualTo(1);
+ assertThat(failedMutation.getError())
+ .hasMessageThat()
+ .contains("Missing entry response for entry 1");
+ }
+
@Test
public void testNoRpcTimeout() {
parentFuture.timedAttemptSettings =
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsRetryTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsRetryTest.java
index 5d15dd5219..86a94d34ea 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsRetryTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/MutateRowsRetryTest.java
@@ -107,7 +107,11 @@ public void mutateRows(
MutateRowsRequest request, StreamObserver responseObserver) {
attemptCounter.incrementAndGet();
if (expectations.isEmpty()) {
- responseObserver.onNext(MutateRowsResponse.getDefaultInstance());
+ MutateRowsResponse.Builder builder = MutateRowsResponse.newBuilder();
+ for (int i = 0; i < request.getEntriesCount(); i++) {
+ builder.addEntriesBuilder().setIndex(i);
+ }
+ responseObserver.onNext(builder.build());
responseObserver.onCompleted();
} else {
Exception expectedRpc = expectations.poll();
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index 3d1e89ebec..a968489dc6 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.25.0
+ 2.25.2
grpc-google-cloud-bigtable-admin-v2
GRPC library for grpc-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index d1a9e7e6ba..76f60edb53 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.25.0
+ 2.25.2
grpc-google-cloud-bigtable-v2
GRPC library for grpc-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
diff --git a/pom.xml b/pom.xml
index 6ff6b6a618..fd75b4c30e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parent
pom
- 2.25.0
+ 2.25.2
Google Cloud Bigtable Parent
https://github.com/googleapis/java-bigtable
@@ -153,27 +153,27 @@
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.25.0
+ 2.25.2
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.25.0
+ 2.25.2
com.google.cloud
google-cloud-bigtable
- 2.25.0
+ 2.25.2
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index f444cb95ad..90617b4fed 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.25.0
+ 2.25.2
proto-google-cloud-bigtable-admin-v2
PROTO library for proto-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index d8eacdb383..2a279aebc3 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.25.0
+ 2.25.2
proto-google-cloud-bigtable-v2
PROTO library for proto-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.25.0
+ 2.25.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.25.0
+ 2.25.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.25.0
+ 2.25.2
pom
import
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 46323684ca..d0a12237e4 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
com.google.cloud
google-cloud-bigtable
- 2.25.0
+ 2.25.2
diff --git a/test-proxy/pom.xml b/test-proxy/pom.xml
index 6b3be22be1..42c512363f 100644
--- a/test-proxy/pom.xml
+++ b/test-proxy/pom.xml
@@ -12,11 +12,11 @@
google-cloud-bigtable-parent
com.google.cloud
- 2.25.0
+ 2.25.2
- 2.25.0
+ 2.25.2
diff --git a/versions.txt b/versions.txt
index 1e8f8cd8d5..88a12dd53c 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:2.25.0:2.25.0
-grpc-google-cloud-bigtable-admin-v2:2.25.0:2.25.0
-grpc-google-cloud-bigtable-v2:2.25.0:2.25.0
-proto-google-cloud-bigtable-admin-v2:2.25.0:2.25.0
-proto-google-cloud-bigtable-v2:2.25.0:2.25.0
-google-cloud-bigtable-emulator:0.162.0:0.162.0
-google-cloud-bigtable-emulator-core:2.25.0:2.25.0
+google-cloud-bigtable:2.25.2:2.25.2
+grpc-google-cloud-bigtable-admin-v2:2.25.2:2.25.2
+grpc-google-cloud-bigtable-v2:2.25.2:2.25.2
+proto-google-cloud-bigtable-admin-v2:2.25.2:2.25.2
+proto-google-cloud-bigtable-v2:2.25.2:2.25.2
+google-cloud-bigtable-emulator:0.162.2:0.162.2
+google-cloud-bigtable-emulator-core:2.25.2:2.25.2