4.0.0
google-cloud-bigtable
- 2.19.1
+ 2.19.2
jar
Google Cloud Bigtable
https://github.com/googleapis/java-bigtable
@@ -12,11 +12,11 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.19.1
+ 2.19.2
- 2.19.1
+ 2.19.2
google-cloud-bigtable
@@ -39,7 +39,7 @@
- 1.52.1
+ 1.53.0
3.21.12
${protobuf.version}
@@ -49,14 +49,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.19.1
+ 2.19.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.19.1
+ 2.19.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 6bba41a172..f9725f30e0 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.19.1";
+ public static String VERSION = "2.19.2";
// {x-version-update-end}
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Status.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Status.java
index 83f7c188d4..d0ca6fd127 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Status.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/common/Status.java
@@ -16,6 +16,7 @@
package com.google.cloud.bigtable.common;
import com.google.common.base.Objects;
+import java.io.Serializable;
/**
* The `Status` type defines a logical error model. Each `Status` message contains an error code and
@@ -23,7 +24,9 @@
*
* This primarily wraps the protobuf {@link com.google.rpc.Status}.
*/
-public final class Status {
+public final class Status implements Serializable {
+ private static final long serialVersionUID = -5512896228725308380L;
+
public enum Code {
OK(com.google.rpc.Code.OK),
CANCELLED(com.google.rpc.Code.CANCELLED),
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutation.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutation.java
index 42ef300b9d..9d607f4362 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutation.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutation.java
@@ -23,6 +23,7 @@
import com.google.protobuf.ByteString;
import java.io.Serializable;
import javax.annotation.Nonnull;
+import org.threeten.bp.Instant;
/**
* A ChangeStreamMutation represents a list of mods(represented by List<{@link Entry}>) targeted at
@@ -72,7 +73,7 @@ public enum MutationType {
static Builder createUserMutation(
@Nonnull ByteString rowKey,
@Nonnull String sourceClusterId,
- long commitTimestamp,
+ Instant commitTimestamp,
int tieBreaker) {
return builder()
.setRowKey(rowKey)
@@ -88,7 +89,7 @@ static Builder createUserMutation(
* mutation.
*/
static Builder createGcMutation(
- @Nonnull ByteString rowKey, long commitTimestamp, int tieBreaker) {
+ @Nonnull ByteString rowKey, Instant commitTimestamp, int tieBreaker) {
return builder()
.setRowKey(rowKey)
.setType(MutationType.GARBAGE_COLLECTION)
@@ -110,7 +111,7 @@ static Builder createGcMutation(
public abstract String getSourceClusterId();
/** Get the commit timestamp of the current mutation. */
- public abstract long getCommitTimestamp();
+ public abstract Instant getCommitTimestamp();
/**
* Get the tie breaker of the current mutation. This is used to resolve conflicts when multiple
@@ -123,7 +124,7 @@ static Builder createGcMutation(
public abstract String getToken();
/** Get the low watermark of the current mutation. */
- public abstract long getEstimatedLowWatermark();
+ public abstract Instant getEstimatedLowWatermark();
/** Get the list of mods of the current mutation. */
@Nonnull
@@ -144,7 +145,7 @@ abstract static class Builder {
abstract Builder setSourceClusterId(@Nonnull String sourceClusterId);
- abstract Builder setCommitTimestamp(long commitTimestamp);
+ abstract Builder setCommitTimestamp(Instant commitTimestamp);
abstract Builder setTieBreaker(int tieBreaker);
@@ -152,7 +153,7 @@ abstract static class Builder {
abstract Builder setToken(@Nonnull String token);
- abstract Builder setEstimatedLowWatermark(long estimatedLowWatermark);
+ abstract Builder setEstimatedLowWatermark(Instant estimatedLowWatermark);
Builder setCell(
@Nonnull String familyName,
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordAdapter.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordAdapter.java
index f94a3b4c3c..260d48ae0d 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordAdapter.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordAdapter.java
@@ -20,6 +20,7 @@
import com.google.cloud.bigtable.data.v2.models.Range.TimestampRange;
import com.google.protobuf.ByteString;
import javax.annotation.Nonnull;
+import org.threeten.bp.Instant;
/**
* An extension point that allows end users to plug in a custom implementation of logical change
@@ -115,7 +116,7 @@ interface ChangeStreamRecordBuilder {
void startUserMutation(
@Nonnull ByteString rowKey,
@Nonnull String sourceClusterId,
- long commitTimestamp,
+ Instant commitTimestamp,
int tieBreaker);
/**
@@ -123,7 +124,7 @@ void startUserMutation(
* once. If called, the current change stream record must not include any close stream message
* or heartbeat.
*/
- void startGcMutation(@Nonnull ByteString rowKey, long commitTimestamp, int tieBreaker);
+ void startGcMutation(@Nonnull ByteString rowKey, Instant commitTimestamp, int tieBreaker);
/** Called to add a DeleteFamily mod. */
void deleteFamily(@Nonnull String familyName);
@@ -164,7 +165,7 @@ void deleteCells(
/** Called once per stream record to signal that all mods have been processed (unless reset). */
ChangeStreamRecordT finishChangeStreamMutation(
- @Nonnull String token, long estimatedLowWatermark);
+ @Nonnull String token, Instant estimatedLowWatermark);
/** Called when the current in progress change stream record should be dropped */
void reset();
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/CloseStream.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/CloseStream.java
index 4760e511e9..d5e121e664 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/CloseStream.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/CloseStream.java
@@ -18,8 +18,8 @@
import com.google.api.core.InternalApi;
import com.google.auto.value.AutoValue;
import com.google.bigtable.v2.ReadChangeStreamResponse;
+import com.google.cloud.bigtable.common.Status;
import com.google.common.collect.ImmutableList;
-import com.google.rpc.Status;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Nonnull;
@@ -34,8 +34,9 @@ public abstract class CloseStream implements ChangeStreamRecord, Serializable {
private static final long serialVersionUID = 7316215828353608505L;
private static CloseStream create(
- Status status, List changeStreamContinuationTokens) {
- return new AutoValue_CloseStream(status, changeStreamContinuationTokens);
+ com.google.rpc.Status status,
+ List changeStreamContinuationTokens) {
+ return new AutoValue_CloseStream(Status.fromProto(status), changeStreamContinuationTokens);
}
/** Wraps the protobuf {@link ReadChangeStreamResponse.CloseStream}. */
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapter.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapter.java
index 79dec5b17f..404b26b52a 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapter.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapter.java
@@ -22,6 +22,7 @@
import com.google.protobuf.ByteString;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.threeten.bp.Instant;
/**
* Default implementation of a {@link ChangeStreamRecordAdapter} that uses {@link
@@ -102,7 +103,7 @@ public ChangeStreamRecord onCloseStream(ReadChangeStreamResponse.CloseStream clo
public void startUserMutation(
@Nonnull ByteString rowKey,
@Nonnull String sourceClusterId,
- long commitTimestamp,
+ Instant commitTimestamp,
int tieBreaker) {
this.changeStreamMutationBuilder =
ChangeStreamMutation.createUserMutation(
@@ -111,7 +112,8 @@ public void startUserMutation(
/** {@inheritDoc} */
@Override
- public void startGcMutation(@Nonnull ByteString rowKey, long commitTimestamp, int tieBreaker) {
+ public void startGcMutation(
+ @Nonnull ByteString rowKey, Instant commitTimestamp, int tieBreaker) {
this.changeStreamMutationBuilder =
ChangeStreamMutation.createGcMutation(rowKey, commitTimestamp, tieBreaker);
}
@@ -156,7 +158,7 @@ public void finishCell() {
/** {@inheritDoc} */
@Override
public ChangeStreamRecord finishChangeStreamMutation(
- @Nonnull String token, long estimatedLowWatermark) {
+ @Nonnull String token, Instant estimatedLowWatermark) {
this.changeStreamMutationBuilder.setToken(token);
this.changeStreamMutationBuilder.setEstimatedLowWatermark(estimatedLowWatermark);
return this.changeStreamMutationBuilder.build();
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Heartbeat.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Heartbeat.java
index cfd45c1ae9..8e3d865790 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Heartbeat.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Heartbeat.java
@@ -18,9 +18,9 @@
import com.google.api.core.InternalApi;
import com.google.auto.value.AutoValue;
import com.google.bigtable.v2.ReadChangeStreamResponse;
-import com.google.protobuf.util.Timestamps;
import java.io.Serializable;
import javax.annotation.Nonnull;
+import org.threeten.bp.Instant;
/** A simple wrapper for {@link ReadChangeStreamResponse.Heartbeat}. */
@InternalApi("Intended for use by the BigtableIO in apache/beam only.")
@@ -29,7 +29,7 @@ public abstract class Heartbeat implements ChangeStreamRecord, Serializable {
private static final long serialVersionUID = 7316215828353608504L;
private static Heartbeat create(
- ChangeStreamContinuationToken changeStreamContinuationToken, long estimatedLowWatermark) {
+ ChangeStreamContinuationToken changeStreamContinuationToken, Instant estimatedLowWatermark) {
return new AutoValue_Heartbeat(changeStreamContinuationToken, estimatedLowWatermark);
}
@@ -37,12 +37,14 @@ private static Heartbeat create(
static Heartbeat fromProto(@Nonnull ReadChangeStreamResponse.Heartbeat heartbeat) {
return create(
ChangeStreamContinuationToken.fromProto(heartbeat.getContinuationToken()),
- Timestamps.toNanos(heartbeat.getEstimatedLowWatermark()));
+ Instant.ofEpochSecond(
+ heartbeat.getEstimatedLowWatermark().getSeconds(),
+ heartbeat.getEstimatedLowWatermark().getNanos()));
}
@InternalApi("Intended for use by the BigtableIO in apache/beam only.")
public abstract ChangeStreamContinuationToken getChangeStreamContinuationToken();
@InternalApi("Intended for use by the BigtableIO in apache/beam only.")
- public abstract long getEstimatedLowWatermark();
+ public abstract Instant getEstimatedLowWatermark();
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQuery.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQuery.java
index e6bfd8c431..dc9d1fce59 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQuery.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQuery.java
@@ -28,7 +28,7 @@
import com.google.common.base.Preconditions;
import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
-import com.google.protobuf.util.Timestamps;
+import com.google.protobuf.Timestamp;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
@@ -36,6 +36,7 @@
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.threeten.bp.Instant;
/** A simple wrapper to construct a query for the ReadChangeStream RPC. */
@InternalApi("Intended for use by the BigtableIO in apache/beam only.")
@@ -142,18 +143,26 @@ public ReadChangeStreamQuery streamPartition(ByteStringRange range) {
return streamPartition(rangeBuilder.build());
}
- /** Sets the startTime(Nanosecond) to read the change stream. */
- public ReadChangeStreamQuery startTime(long value) {
+ /** Sets the startTime to read the change stream. */
+ public ReadChangeStreamQuery startTime(Instant value) {
Preconditions.checkState(
!builder.hasContinuationTokens(),
"startTime and continuationTokens can't be specified together");
- builder.setStartTime(Timestamps.fromNanos(value));
+ builder.setStartTime(
+ Timestamp.newBuilder()
+ .setSeconds(value.getEpochSecond())
+ .setNanos(value.getNano())
+ .build());
return this;
}
- /** Sets the endTime(Nanosecond) to read the change stream. */
- public ReadChangeStreamQuery endTime(long value) {
- builder.setEndTime(Timestamps.fromNanos(value));
+ /** Sets the endTime to read the change stream. */
+ public ReadChangeStreamQuery endTime(Instant value) {
+ builder.setEndTime(
+ Timestamp.newBuilder()
+ .setSeconds(value.getEpochSecond())
+ .setNanos(value.getNano())
+ .build());
return this;
}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamStateMachine.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamStateMachine.java
index 5190276368..9654b4da30 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamStateMachine.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamStateMachine.java
@@ -21,7 +21,7 @@
import com.google.cloud.bigtable.data.v2.models.ChangeStreamRecordAdapter.ChangeStreamRecordBuilder;
import com.google.cloud.bigtable.data.v2.models.Range.TimestampRange;
import com.google.common.base.Preconditions;
-import com.google.protobuf.util.Timestamps;
+import org.threeten.bp.Instant;
/**
* A state machine to produce change stream records from a stream of {@link
@@ -338,7 +338,9 @@ State handleMod(ReadChangeStreamResponse.DataChange dataChange, int index) {
"AWAITING_NEW_STREAM_RECORD: GC mutation shouldn't have source cluster id.");
builder.startGcMutation(
dataChange.getRowKey(),
- Timestamps.toNanos(dataChange.getCommitTimestamp()),
+ Instant.ofEpochSecond(
+ dataChange.getCommitTimestamp().getSeconds(),
+ dataChange.getCommitTimestamp().getNanos()),
dataChange.getTiebreaker());
} else if (dataChange.getType() == Type.USER) {
validate(
@@ -347,7 +349,9 @@ State handleMod(ReadChangeStreamResponse.DataChange dataChange, int index) {
builder.startUserMutation(
dataChange.getRowKey(),
dataChange.getSourceClusterId(),
- Timestamps.toNanos(dataChange.getCommitTimestamp()),
+ Instant.ofEpochSecond(
+ dataChange.getCommitTimestamp().getSeconds(),
+ dataChange.getCommitTimestamp().getNanos()),
dataChange.getTiebreaker());
} else {
validate(false, "AWAITING_NEW_STREAM_RECORD: Unexpected type: " + dataChange.getType());
@@ -591,7 +595,10 @@ private State checkAndFinishMutationIfNeeded(
validate(dataChange.hasEstimatedLowWatermark(), "Last data change missing lowWatermark");
completeChangeStreamRecord =
builder.finishChangeStreamMutation(
- dataChange.getToken(), Timestamps.toNanos(dataChange.getEstimatedLowWatermark()));
+ dataChange.getToken(),
+ Instant.ofEpochSecond(
+ dataChange.getEstimatedLowWatermark().getSeconds(),
+ dataChange.getEstimatedLowWatermark().getNanos()));
return AWAITING_STREAM_RECORD_CONSUME;
}
// Case 2_2): The current DataChange itself is chunked, so wait for the next
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/StatusTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/StatusTest.java
index dccbd34408..3eb867d199 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/StatusTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/common/StatusTest.java
@@ -19,6 +19,11 @@
import static com.google.common.truth.Truth.assertWithMessage;
import com.google.rpc.Code;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -89,4 +94,23 @@ public void testToProto() {
assertThat(model.toString()).isEqualTo(proto.toString());
}
+
+ @Test
+ public void testSerialization() throws IOException, ClassNotFoundException {
+ com.google.rpc.Status proto =
+ com.google.rpc.Status.newBuilder()
+ .setCode(Code.UNAVAILABLE.getNumber())
+ .setMessage("some message")
+ .build();
+
+ Status model = Status.fromProto(proto);
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(model);
+ oos.close();
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
+ Status actual = (Status) ois.readObject();
+ assertThat(actual).isEqualTo(model);
+ }
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutationTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutationTest.java
index 04285bcc5f..420a94e38e 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutationTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamMutationTest.java
@@ -32,6 +32,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class ChangeStreamMutationTest {
@@ -41,8 +42,8 @@ public class ChangeStreamMutationTest {
private static final String APP_PROFILE_ID = "fake-profile";
private static final RequestContext REQUEST_CONTEXT =
RequestContext.create(PROJECT_ID, INSTANCE_ID, APP_PROFILE_ID);
- private static final long FAKE_COMMIT_TIMESTAMP = 1000L;
- private static final long FAKE_LOW_WATERMARK = 2000L;
+ private static final Instant FAKE_COMMIT_TIMESTAMP = Instant.ofEpochSecond(0, 1000L);
+ private static final Instant FAKE_LOW_WATERMARK = Instant.ofEpochSecond(0, 2000L);
@Test
public void userInitiatedMutationTest() throws IOException, ClassNotFoundException {
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordTest.java
index 08dc275b1e..688ce46bcf 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ChangeStreamRecordTest.java
@@ -24,7 +24,6 @@
import com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange;
import com.google.protobuf.ByteString;
import com.google.protobuf.Timestamp;
-import com.google.protobuf.util.Timestamps;
import com.google.rpc.Status;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -34,6 +33,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class ChangeStreamRecordTest {
@@ -121,7 +121,7 @@ public void heartbeatTest() {
Heartbeat actualHeartbeat = Heartbeat.fromProto(heartbeatProto);
assertThat(actualHeartbeat.getEstimatedLowWatermark())
- .isEqualTo(Timestamps.toNanos(lowWatermark));
+ .isEqualTo(Instant.ofEpochSecond(lowWatermark.getSeconds(), lowWatermark.getNanos()));
assertThat(actualHeartbeat.getChangeStreamContinuationToken().getPartition())
.isEqualTo(ByteStringRange.create(rowRange.getStartKeyClosed(), rowRange.getEndKeyOpen()));
assertThat(actualHeartbeat.getChangeStreamContinuationToken().getToken()).isEqualTo(token);
@@ -158,7 +158,7 @@ public void closeStreamTest() {
.build();
CloseStream actualCloseStream = CloseStream.fromProto(closeStreamProto);
- assertThat(status).isEqualTo(actualCloseStream.getStatus());
+ assertThat(status).isEqualTo(actualCloseStream.getStatus().toProto());
assertThat(actualCloseStream.getChangeStreamContinuationTokens().get(0).getPartition())
.isEqualTo(
ByteStringRange.create(rowRange1.getStartKeyClosed(), rowRange1.getEndKeyOpen()));
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapterTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapterTest.java
index 2af99577d6..99af76fb03 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapterTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/DefaultChangeStreamRecordAdapterTest.java
@@ -23,7 +23,7 @@
import com.google.bigtable.v2.TimestampRange;
import com.google.cloud.bigtable.data.v2.models.ChangeStreamRecordAdapter.ChangeStreamRecordBuilder;
import com.google.protobuf.ByteString;
-import com.google.protobuf.util.Timestamps;
+import com.google.protobuf.Timestamp;
import com.google.rpc.Status;
import org.junit.Assert;
import org.junit.Before;
@@ -32,14 +32,15 @@
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class DefaultChangeStreamRecordAdapterTest {
private final DefaultChangeStreamRecordAdapter adapter = new DefaultChangeStreamRecordAdapter();
private ChangeStreamRecordBuilder changeStreamRecordBuilder;
- private static final long FAKE_COMMIT_TIMESTAMP = 1000L;
- private static final long FAKE_LOW_WATERMARK = 2000L;
+ private static final Instant FAKE_COMMIT_TIMESTAMP = Instant.ofEpochSecond(0L, 1000L);
+ private static final Instant FAKE_LOW_WATERMARK = Instant.ofEpochSecond(0L, 2000L);
@Rule public ExpectedException expect = ExpectedException.none();
@@ -70,7 +71,10 @@ public void getTokenFromHeartbeatTest() {
ChangeStreamRecord heartbeatRecord =
Heartbeat.fromProto(
ReadChangeStreamResponse.Heartbeat.newBuilder()
- .setEstimatedLowWatermark(Timestamps.fromNanos(FAKE_LOW_WATERMARK))
+ .setEstimatedLowWatermark(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_LOW_WATERMARK.getEpochSecond())
+ .setNanos(FAKE_LOW_WATERMARK.getNano()))
.setContinuationToken(
StreamContinuationToken.newBuilder().setToken("heartbeat-token").build())
.build());
@@ -127,7 +131,11 @@ public void getTokenFromChangeStreamMutationInvalidTypeTest() {
public void heartbeatTest() {
ReadChangeStreamResponse.Heartbeat expectedHeartbeat =
ReadChangeStreamResponse.Heartbeat.newBuilder()
- .setEstimatedLowWatermark(Timestamps.fromNanos(FAKE_LOW_WATERMARK))
+ .setEstimatedLowWatermark(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_LOW_WATERMARK.getEpochSecond())
+ .setNanos(FAKE_LOW_WATERMARK.getNano())
+ .build())
.setContinuationToken(
StreamContinuationToken.newBuilder().setToken("random-token").build())
.build();
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQueryTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQueryTest.java
index cf042e736c..79a0f72b2b 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQueryTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/ReadChangeStreamQueryTest.java
@@ -28,7 +28,7 @@
import com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange;
import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
-import com.google.protobuf.util.Timestamps;
+import com.google.protobuf.Timestamp;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -41,6 +41,7 @@
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class ReadChangeStreamQueryTest {
@@ -49,8 +50,8 @@ public class ReadChangeStreamQueryTest {
private static final String TABLE_ID = "fake-table";
private static final String APP_PROFILE_ID = "fake-profile-id";
private RequestContext requestContext;
- private static final long FAKE_START_TIME = 1000L;
- private static final long FAKE_END_TIME = 2000L;
+ private static final Instant FAKE_START_TIME = Instant.ofEpochSecond(1L, 1000L);
+ private static final Instant FAKE_END_TIME = Instant.ofEpochSecond(1L, 2000L);
@Rule public ExpectedException expect = ExpectedException.none();
@@ -123,7 +124,11 @@ public void startTimeTest() {
ReadChangeStreamQuery query = ReadChangeStreamQuery.create(TABLE_ID).startTime(FAKE_START_TIME);
Builder expectedProto =
- expectedProtoBuilder().setStartTime(Timestamps.fromNanos(FAKE_START_TIME));
+ expectedProtoBuilder()
+ .setStartTime(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_START_TIME.getEpochSecond())
+ .setNanos(FAKE_START_TIME.getNano()));
ReadChangeStreamRequest actualProto = query.toProto(requestContext);
assertThat(actualProto).isEqualTo(expectedProto.build());
@@ -133,7 +138,12 @@ public void startTimeTest() {
public void endTimeTest() {
ReadChangeStreamQuery query = ReadChangeStreamQuery.create(TABLE_ID).endTime(FAKE_END_TIME);
- Builder expectedProto = expectedProtoBuilder().setEndTime(Timestamps.fromNanos(FAKE_END_TIME));
+ Builder expectedProto =
+ expectedProtoBuilder()
+ .setEndTime(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_END_TIME.getEpochSecond())
+ .setNanos(FAKE_END_TIME.getNano()));
ReadChangeStreamRequest actualProto = query.toProto(requestContext);
assertThat(actualProto).isEqualTo(expectedProto.build());
@@ -267,7 +277,10 @@ public void testFromProto() {
.setEndKeyClosed(ByteString.copyFromUtf8(""))
.build()))
.setContinuationTokens(StreamContinuationTokens.newBuilder().addTokens(token).build())
- .setEndTime(Timestamps.fromNanos(FAKE_END_TIME))
+ .setEndTime(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_END_TIME.getEpochSecond())
+ .setNanos(FAKE_END_TIME.getNano()))
.setHeartbeatDuration(Duration.newBuilder().setSeconds(5).build())
.build();
ReadChangeStreamQuery query = ReadChangeStreamQuery.fromProto(request);
@@ -304,9 +317,11 @@ public void testEquality() {
assertThat(ReadChangeStreamQuery.create(TABLE_ID).streamPartition("begin-1", "end-1"))
.isNotEqualTo(ReadChangeStreamQuery.create(TABLE_ID).streamPartition("begin-2", "end-1"));
assertThat(ReadChangeStreamQuery.create(TABLE_ID).startTime(FAKE_START_TIME))
- .isNotEqualTo(ReadChangeStreamQuery.create(TABLE_ID).startTime(1001L));
+ .isNotEqualTo(
+ ReadChangeStreamQuery.create(TABLE_ID).startTime(Instant.ofEpochSecond(1L, 1001L)));
assertThat(ReadChangeStreamQuery.create(TABLE_ID).endTime(FAKE_END_TIME))
- .isNotEqualTo(ReadChangeStreamQuery.create(TABLE_ID).endTime(1001L));
+ .isNotEqualTo(
+ ReadChangeStreamQuery.create(TABLE_ID).endTime(Instant.ofEpochSecond(1L, 1001L)));
assertThat(
ReadChangeStreamQuery.create(TABLE_ID)
.heartbeatDuration(java.time.Duration.ofSeconds(5)))
@@ -349,7 +364,10 @@ public void testClone() {
.build()))
.setContinuationTokens(
StreamContinuationTokens.newBuilder().addTokens(tokenProto).build())
- .setEndTime(Timestamps.fromNanos(FAKE_END_TIME))
+ .setEndTime(
+ Timestamp.newBuilder()
+ .setSeconds(FAKE_END_TIME.getEpochSecond())
+ .setNanos(FAKE_END_TIME.getNano()))
.setHeartbeatDuration(Duration.newBuilder().setSeconds(5).build())
.build();
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamRecordMergingCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamRecordMergingCallableTest.java
index 70ff23a439..736491a0af 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamRecordMergingCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ChangeStreamRecordMergingCallableTest.java
@@ -32,7 +32,6 @@
import com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable;
import com.google.protobuf.ByteString;
import com.google.protobuf.Timestamp;
-import com.google.protobuf.util.Timestamps;
import com.google.rpc.Status;
import java.util.Collections;
import java.util.List;
@@ -40,6 +39,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
/**
* Additional tests in addition to {@link ReadChangeStreamMergingAcceptanceTest}.
@@ -81,7 +81,10 @@ public void heartbeatTest() {
assertThat(heartbeat.getChangeStreamContinuationToken().getToken())
.isEqualTo(heartbeatProto.getContinuationToken().getToken());
assertThat(heartbeat.getEstimatedLowWatermark())
- .isEqualTo(Timestamps.toNanos(heartbeatProto.getEstimatedLowWatermark()));
+ .isEqualTo(
+ Instant.ofEpochSecond(
+ heartbeatProto.getEstimatedLowWatermark().getSeconds(),
+ heartbeatProto.getEstimatedLowWatermark().getNanos()));
}
@Test
@@ -116,7 +119,7 @@ public void closeStreamTest() {
ChangeStreamRecord record = results.get(0);
Assert.assertTrue(record instanceof CloseStream);
CloseStream closeStream = (CloseStream) record;
- assertThat(closeStream.getStatus()).isEqualTo(closeStreamProto.getStatus());
+ assertThat(closeStream.getStatus().toProto()).isEqualTo(closeStreamProto.getStatus());
assertThat(closeStream.getChangeStreamContinuationTokens().size()).isEqualTo(1);
ChangeStreamContinuationToken changeStreamContinuationToken =
closeStream.getChangeStreamContinuationTokens().get(0);
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamMergingAcceptanceTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamMergingAcceptanceTest.java
index afc35959e4..67d6a99f7b 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamMergingAcceptanceTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamMergingAcceptanceTest.java
@@ -43,8 +43,8 @@
import com.google.cloud.conformance.bigtable.v2.ChangeStreamTestDefinition.ChangeStreamTestFile;
import com.google.cloud.conformance.bigtable.v2.ChangeStreamTestDefinition.ReadChangeStreamTest;
import com.google.common.base.CaseFormat;
+import com.google.protobuf.Timestamp;
import com.google.protobuf.util.JsonFormat;
-import com.google.protobuf.util.Timestamps;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -142,7 +142,10 @@ public void test() throws Exception {
.setToken(heartbeat.getChangeStreamContinuationToken().getToken())
.build())
.setEstimatedLowWatermark(
- Timestamps.fromNanos(heartbeat.getEstimatedLowWatermark()))
+ Timestamp.newBuilder()
+ .setSeconds(heartbeat.getEstimatedLowWatermark().getEpochSecond())
+ .setNanos(heartbeat.getEstimatedLowWatermark().getNano())
+ .build())
.build();
actualResults.add(
ReadChangeStreamTest.Result.newBuilder()
@@ -154,7 +157,8 @@ public void test() throws Exception {
} else if (record instanceof CloseStream) {
CloseStream closeStream = (CloseStream) record;
ReadChangeStreamResponse.CloseStream.Builder builder =
- ReadChangeStreamResponse.CloseStream.newBuilder().setStatus(closeStream.getStatus());
+ ReadChangeStreamResponse.CloseStream.newBuilder()
+ .setStatus(closeStream.getStatus().toProto());
for (ChangeStreamContinuationToken token :
closeStream.getChangeStreamContinuationTokens()) {
builder.addContinuationTokens(
@@ -194,11 +198,17 @@ public void test() throws Exception {
builder.setSourceClusterId(changeStreamMutation.getSourceClusterId());
}
builder.setCommitTimestamp(
- Timestamps.fromNanos(changeStreamMutation.getCommitTimestamp()));
+ Timestamp.newBuilder()
+ .setSeconds(changeStreamMutation.getCommitTimestamp().getEpochSecond())
+ .setNanos(changeStreamMutation.getCommitTimestamp().getNano())
+ .build());
builder.setTiebreaker(changeStreamMutation.getTieBreaker());
builder.setToken(changeStreamMutation.getToken());
builder.setEstimatedLowWatermark(
- Timestamps.fromNanos(changeStreamMutation.getEstimatedLowWatermark()));
+ Timestamp.newBuilder()
+ .setSeconds(changeStreamMutation.getEstimatedLowWatermark().getEpochSecond())
+ .setNanos(changeStreamMutation.getEstimatedLowWatermark().getNano())
+ .build());
for (Entry entry : changeStreamMutation.getEntries()) {
if (entry instanceof DeleteFamily) {
DeleteFamily deleteFamily = (DeleteFamily) entry;
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamRetryTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamRetryTest.java
index 2f4cc14327..c994f3fc8d 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamRetryTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamRetryTest.java
@@ -45,7 +45,6 @@
import com.google.common.truth.Truth;
import com.google.protobuf.ByteString;
import com.google.protobuf.Timestamp;
-import com.google.protobuf.util.Timestamps;
import io.grpc.Status;
import io.grpc.Status.Code;
import io.grpc.StatusRuntimeException;
@@ -63,6 +62,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class ReadChangeStreamRetryTest {
@@ -74,7 +74,7 @@ public class ReadChangeStreamRetryTest {
private static final String HEARTBEAT_TOKEN = "heartbeat-token";
private static final String CLOSE_STREAM_TOKEN = "close-stream-token";
private static final String DATA_CHANGE_TOKEN = "data-change-token";
- private static final long REQUEST_START_TIME = 1000L;
+ private static final Instant REQUEST_START_TIME = Instant.ofEpochSecond(0L, 1000L);
@Rule public GrpcServerRule serverRule = new GrpcServerRule();
private TestBigtableService service;
@@ -446,7 +446,10 @@ static RpcExpectation create() {
}
RpcExpectation expectInitialRequest() {
- requestBuilder.setStartTime(Timestamps.fromNanos(REQUEST_START_TIME));
+ requestBuilder.setStartTime(
+ Timestamp.newBuilder()
+ .setSeconds(REQUEST_START_TIME.getEpochSecond())
+ .setNanos(REQUEST_START_TIME.getNano()));
return this;
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamUserCallableTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamUserCallableTest.java
index 2f50c7065b..043d6ff3dd 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamUserCallableTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/changestream/ReadChangeStreamUserCallableTest.java
@@ -25,6 +25,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.threeten.bp.Instant;
@RunWith(JUnit4.class)
public class ReadChangeStreamUserCallableTest {
@@ -40,8 +41,8 @@ public void testRequestIsConverted() {
ReadChangeStreamQuery query =
ReadChangeStreamQuery.create("fake-table")
.streamPartition("begin", "end")
- .startTime(1000L)
- .endTime(2000L)
+ .startTime(Instant.ofEpochSecond(0L, 1000L))
+ .endTime(Instant.ofEpochSecond(0L, 2000L))
.heartbeatDuration(Duration.ofSeconds(1));
callable.call(query);
Truth.assertThat(innerCallable.getActualRequest()).isEqualTo(query.toProto(REQUEST_CONTEXT));
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index 95a87d6af3..2fadb56493 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.19.1
+ 2.19.2
grpc-google-cloud-bigtable-admin-v2
GRPC library for grpc-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.19.1
+ 2.19.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.19.1
+ 2.19.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.19.1
+ 2.19.2
pom
import
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index e07cdd7639..28cdba2c32 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.19.1
+ 2.19.2
grpc-google-cloud-bigtable-v2
GRPC library for grpc-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.19.1
+ 2.19.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.19.1
+ 2.19.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.19.1
+ 2.19.2
pom
import
diff --git a/pom.xml b/pom.xml
index e25c83c964..6d1501a968 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parent
pom
- 2.19.1
+ 2.19.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.19.1
+ 2.19.2
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.19.1
+ 2.19.2
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.19.1
+ 2.19.2
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.19.1
+ 2.19.2
com.google.cloud
google-cloud-bigtable
- 2.19.1
+ 2.19.2
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index 2184cb186a..d0ab4c144f 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.19.1
+ 2.19.2
proto-google-cloud-bigtable-admin-v2
PROTO library for proto-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.19.1
+ 2.19.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.19.1
+ 2.19.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.19.1
+ 2.19.2
pom
import
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index 82c334af22..2d6de218d9 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.19.1
+ 2.19.2
proto-google-cloud-bigtable-v2
PROTO library for proto-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.19.1
+ 2.19.2
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.19.1
+ 2.19.2
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.19.1
+ 2.19.2
pom
import
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 176040b1c7..d4cb9fac5f 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.19.0
+ 2.19.1
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index c554da70c9..af5085f6a7 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
com.google.cloud
google-cloud-bigtable
- 2.19.1
+ 2.19.2
diff --git a/test-proxy/pom.xml b/test-proxy/pom.xml
index 98c710f83f..e2326f96d7 100644
--- a/test-proxy/pom.xml
+++ b/test-proxy/pom.xml
@@ -12,11 +12,11 @@
google-cloud-bigtable-parent
com.google.cloud
- 2.19.1
+ 2.19.2
- 2.19.1
+ 2.19.2
diff --git a/versions.txt b/versions.txt
index ca60d29965..98b9735ca9 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:2.19.1:2.19.1
-grpc-google-cloud-bigtable-admin-v2:2.19.1:2.19.1
-grpc-google-cloud-bigtable-v2:2.19.1:2.19.1
-proto-google-cloud-bigtable-admin-v2:2.19.1:2.19.1
-proto-google-cloud-bigtable-v2:2.19.1:2.19.1
-google-cloud-bigtable-emulator:0.156.1:0.156.1
-google-cloud-bigtable-emulator-core:2.19.1:2.19.1
+google-cloud-bigtable:2.19.2:2.19.2
+grpc-google-cloud-bigtable-admin-v2:2.19.2:2.19.2
+grpc-google-cloud-bigtable-v2:2.19.2:2.19.2
+proto-google-cloud-bigtable-admin-v2:2.19.2:2.19.2
+proto-google-cloud-bigtable-v2:2.19.2:2.19.2
+google-cloud-bigtable-emulator:0.156.2:0.156.2
+google-cloud-bigtable-emulator-core:2.19.2:2.19.2