diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ede5c2ecf..3ead8d9dea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,19 @@
# Changelog
+## [1.8.0](https://www.github.com/googleapis/java-bigtable/compare/v1.7.1...v1.8.0) (2019-12-17)
+
+
+### Features
+
+* add implementation of ChannelPrimer to establish connection to GFE and integrate into bigtable client ([#115](https://www.github.com/googleapis/java-bigtable/issues/115)) ([276f942](https://www.github.com/googleapis/java-bigtable/commit/276f942dd2e668600347a59496525a589d7560da))
+* update filter to accept an exact timestamp for better accessibility ([#92](https://www.github.com/googleapis/java-bigtable/issues/92)) ([e25758b](https://www.github.com/googleapis/java-bigtable/commit/e25758b3164618ac16d57fffe6ba0e4175229960))
+
+
+### Dependencies
+
+* update gax.version to v1.51.0 ([#105](https://www.github.com/googleapis/java-bigtable/issues/105)) ([dcdd0c3](https://www.github.com/googleapis/java-bigtable/commit/dcdd0c347f10802be57c4f7267c2b82c59ea2278))
+* upgrade gax to 1.52.0, google-cloud-core to 1.92.0 ([#118](https://www.github.com/googleapis/java-bigtable/issues/118)) ([c106497](https://www.github.com/googleapis/java-bigtable/commit/c1064977eff3889e4f8b6ba8ab44a08f6f96ae1f))
+
### [1.7.1](https://www.github.com/googleapis/java-bigtable/compare/v1.7.0...v1.7.1) (2019-11-13)
diff --git a/README.md b/README.md
index 895e3b5fb6..ae32a554c0 100644
--- a/README.md
+++ b/README.md
@@ -17,16 +17,16 @@ If you are using Maven, add this to your pom.xml file
com.google.cloudgoogle-cloud-bigtable
- 1.7.1
+ 1.8.0
```
If you are using Gradle, add this to your dependencies
```Groovy
-compile 'com.google.cloud:google-cloud-bigtable:1.7.1'
+compile 'com.google.cloud:google-cloud-bigtable:1.8.0'
```
If you are using SBT, add this to your dependencies
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "1.7.1"
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "1.8.0"
```
[//]: # ({x-version-update-end})
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index bea8e3c9d8..4c3d25a57c 100644
--- a/google-cloud-bigtable-bom/pom.xml
+++ b/google-cloud-bigtable-bom/pom.xml
@@ -3,12 +3,12 @@
4.0.0com.google.cloudgoogle-cloud-bigtable-bom
- 1.7.1
+ 1.8.0pomcom.google.cloudgoogle-cloud-shared-config
- 0.2.1
+ 0.3.0Google Cloud Bigtable BOM
@@ -72,32 +72,32 @@
com.google.cloudgoogle-cloud-bigtable
- 1.7.1
+ 1.8.0com.google.cloudgoogle-cloud-bigtable-emulator
- 0.116.1
+ 0.117.0com.google.api.grpcgrpc-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0com.google.api.grpcgrpc-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0com.google.api.grpcproto-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0com.google.api.grpcproto-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0
@@ -111,6 +111,16 @@
true
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+
+
+ false
+
+
\ No newline at end of file
diff --git a/google-cloud-bigtable-emulator/pom.xml b/google-cloud-bigtable-emulator/pom.xml
index 4d251c69e1..0b35714cae 100644
--- a/google-cloud-bigtable-emulator/pom.xml
+++ b/google-cloud-bigtable-emulator/pom.xml
@@ -5,7 +5,7 @@
4.0.0google-cloud-bigtable-emulator
- 0.116.1
+ 0.117.0Google Cloud Java - Bigtable Emulatorhttps://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0scm:git:git@github.com:googleapis/java-bigtable.git
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 42bf77049c..a5382f3e5f 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -2,7 +2,7 @@
4.0.0google-cloud-bigtable
- 1.7.1
+ 1.8.0jarGoogle Cloud Bigtablehttps://github.com/googleapis/java-bigtable
@@ -12,7 +12,7 @@
com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0google-cloud-bigtable
@@ -22,12 +22,12 @@
false${skipTests}
- bigtable.googleapis.com:443
- bigtableadmin.googleapis.com:443
-
-
- testdirectpath-bigtable.sandbox.googleapis.com:443
- test-bigtableadmin.sandbox.googleapis.com:443
+
+
+
+
+
+
+ true
+
classes2Ctrue
@@ -369,74 +378,4 @@
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 3.1.1
-
- protected
- true
- none
- true
-
-
-
-
- com/google/cloud/bigtable/gaxx/**
-
-
- com/google/cloud/bigtable/admin/v2/internal/**
- com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminClient.java
- com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java
- com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminCallableFactory.java
- com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminStub.java
- com/google/cloud/bigtable/admin/v2/stub/BigtableInstanceAdminStub.java
-
-
- com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java
- com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminSettings.java
- com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminCallableFactory.java
- com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminStub.java
- com/google/cloud/bigtable/admin/v2/stub/BigtableTableAdminStub.java
- com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java
-
-
- com/google/cloud/bigtable/data/v2/internal/**
- com/google/cloud/bigtable/data/v2/BaseBigtableDataClient.java
- com/google/cloud/bigtable/data/v2/BaseBigtableDataSettings.java
- com/google/cloud/bigtable/data/v2/stub/BigtableStub.java
- com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java
- com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java
- com/google/cloud/bigtable/data/v2/stub/GrpcBigtableCallableFactory.java
- com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
- com/google/cloud/bigtable/data/v2/stub/mutaterows/**
- com/google/cloud/bigtable/data/v2/stub/readrows/**
- com/google/cloud/bigtable/data/v2/stub/metrics/**
-
-
-
-
- ${project.javadoc.protobufBaseURL}
- ../../../../../google-api-grpc/proto-google-cloud-bigtable-v2/target/site/apidocs/
-
-
- ${project.javadoc.protobufBaseURL}
- ../../../../../google-api-grpc/grpc-google-cloud-bigtable-v2/target/site/apidocs/
-
-
- ${project.javadoc.protobufBaseURL}
- ../../../../../google-api-grpc/proto-google-cloud-bigtable-admin-v2/target/site/apidocs/
-
-
- ${project.javadoc.protobufBaseURL}
- ../../../../../google-api-grpc/grpc-google-cloud-bigtable-admin-v2/target/site/apidocs/
-
-
-
-
-
-
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
index bc60362b85..ff97408809 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
@@ -184,6 +184,12 @@ public String getAppProfileId() {
return stubSettings.getAppProfileId();
}
+ /** Gets if channels will gracefully refresh connections to Cloud Bigtable service */
+ @BetaApi("This API depends on experimental gRPC APIs")
+ public boolean isRefreshingChannel() {
+ return stubSettings.isRefreshingChannel();
+ }
+
/** Returns the underlying RPC settings. */
public EnhancedBigtableStubSettings getStubSettings() {
return stubSettings;
@@ -275,6 +281,26 @@ public CredentialsProvider getCredentialsProvider() {
return stubSettings.getCredentialsProvider();
}
+ /**
+ * Configure periodic gRPC channel refreshes.
+ *
+ *
This feature will gracefully refresh connections to the Cloud Bigtable service. This is an
+ * experimental feature to address tail latency caused by the service dropping long lived gRPC
+ * connections, which causes the client to renegotiate the gRPC connection in the request path,
+ * which causes periodic spikes in latency
+ */
+ @BetaApi("This API depends on experimental gRPC APIs")
+ public Builder setRefreshingChannel(boolean isRefreshingChannel) {
+ stubSettings.setRefreshingChannel(isRefreshingChannel);
+ return this;
+ }
+
+ /** Gets if channels will gracefully refresh connections to Cloud Bigtable service */
+ @BetaApi("This API depends on experimental gRPC APIs")
+ public boolean isRefreshingChannel() {
+ return stubSettings.isRefreshingChannel();
+ }
+
/**
* Returns the underlying settings for making RPC calls. The settings should be changed with
* care.
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannel.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannel.java
new file mode 100644
index 0000000000..e34ecd750d
--- /dev/null
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannel.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2019 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
+ *
+ * https://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.
+ */
+package com.google.cloud.bigtable.data.v2.internal;
+
+import com.google.api.core.BetaApi;
+import com.google.api.core.InternalApi;
+import com.google.api.gax.grpc.ChannelPrimer;
+import io.grpc.ConnectivityState;
+import io.grpc.ManagedChannel;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Establish a connection to the Cloud Bigtable service on managedChannel
+ *
+ *
This class is considered an internal implementation detail and not meant to be used by
+ * applications.
+ */
+@BetaApi("This API depends on gRPC experimental API")
+@InternalApi
+public final class RefreshChannel implements ChannelPrimer {
+
+ /**
+ * primeChannel establishes a connection to Cloud Bigtable service. This typically take less than
+ * 1s. In case of service failure, an upper limit of 10s prevents primeChannel from looping
+ * forever.
+ */
+ @Override
+ public void primeChannel(ManagedChannel managedChannel) {
+ for (int i = 0; i < 10; i++) {
+ ConnectivityState connectivityState = managedChannel.getState(true);
+ if (connectivityState == ConnectivityState.READY) {
+ break;
+ }
+ try {
+ TimeUnit.SECONDS.sleep(1);
+ } catch (InterruptedException e) {
+ break;
+ }
+ }
+ }
+}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultRowAdapter.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultRowAdapter.java
index 18943265ce..279ebf6407 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultRowAdapter.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/DefaultRowAdapter.java
@@ -149,8 +149,8 @@ public Row finishRow() {
sortedCells = currentFamilyCells.build();
} else {
// Normal path: concatenate the cells order by family.
- ImmutableList.Builder sortedCellsBuilder =
- ImmutableList.builderWithExpectedSize(totalCellCount);
+ // TODO: use builderWithExpectedSize(totalCellCount) when it stabilizes
+ ImmutableList.Builder sortedCellsBuilder = ImmutableList.builder();
for (ImmutableList.Builder familyCells : cellsByFamily.values()) {
sortedCellsBuilder.addAll(familyCells.build());
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Filters.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Filters.java
index 6ada09391b..bd310cd2c5 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Filters.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/Filters.java
@@ -516,6 +516,15 @@ private TimestampFilter() {}
public TimestampRangeFilter range() {
return new TimestampRangeFilter();
}
+
+ /**
+ * Matches cells with exact given timestamp.
+ *
+ * @return a {@link TimestampRangeFilter} with start/end closed timestamp.
+ */
+ public TimestampRangeFilter exact(Long exactTimestamp) {
+ return new TimestampRangeFilter().startClosed(exactTimestamp).endClosed(exactTimestamp);
+ }
}
/** Matches only cells with microsecond timestamps within the given range. */
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java
index a23cf780c5..11d4726080 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java
@@ -15,6 +15,7 @@
*/
package com.google.cloud.bigtable.data.v2.stub;
+import com.google.api.core.BetaApi;
import com.google.api.gax.batching.BatchingSettings;
import com.google.api.gax.batching.FlowControlSettings;
import com.google.api.gax.batching.FlowController.LimitExceededBehavior;
@@ -29,6 +30,7 @@
import com.google.api.gax.rpc.TransportChannelProvider;
import com.google.api.gax.rpc.UnaryCallSettings;
import com.google.api.gax.tracing.OpencensusTracerFactory;
+import com.google.cloud.bigtable.data.v2.internal.RefreshChannel;
import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation;
import com.google.cloud.bigtable.data.v2.models.KeyOffset;
import com.google.cloud.bigtable.data.v2.models.Query;
@@ -149,6 +151,7 @@ public class EnhancedBigtableStubSettings extends StubSettings readRowsSettings;
private final UnaryCallSettings readRowSettings;
@@ -179,6 +182,7 @@ private EnhancedBigtableStubSettings(Builder builder) {
projectId = builder.projectId;
instanceId = builder.instanceId;
appProfileId = builder.appProfileId;
+ isRefreshingChannel = builder.isRefreshingChannel;
// Per method settings.
readRowsSettings = builder.readRowsSettings.build();
@@ -210,6 +214,12 @@ public String getAppProfileId() {
return appProfileId;
}
+ /** Returns if channels will gracefully refresh connections to Cloud Bigtable service */
+ @BetaApi("This API depends on experimental gRPC APIs")
+ public boolean isRefreshingChannel() {
+ return isRefreshingChannel;
+ }
+
/** Returns a builder for the default ChannelProvider for this service. */
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
return BigtableStubSettings.defaultGrpcTransportProviderBuilder()
@@ -413,6 +423,7 @@ public static class Builder extends StubSettings.Builder readRowsSettings;
private final UnaryCallSettings.Builder readRowSettings;
@@ -433,6 +444,7 @@ public static class Builder extends StubSettings.Builder readRowsSettings() {
return readRowsSettings;
@@ -642,6 +672,18 @@ public EnhancedBigtableStubSettings build() {
Preconditions.checkState(projectId != null, "Project id must be set");
Preconditions.checkState(instanceId != null, "Instance id must be set");
+ // Set ChannelPrimer on TransportChannelProvider so channels will gracefully refresh
+ // connections to Cloud Bigtable service
+ if (isRefreshingChannel) {
+ Preconditions.checkArgument(
+ getTransportChannelProvider() instanceof InstantiatingGrpcChannelProvider,
+ "refreshingChannel only works with InstantiatingGrpcChannelProviders");
+ InstantiatingGrpcChannelProvider.Builder channelBuilder =
+ ((InstantiatingGrpcChannelProvider) getTransportChannelProvider())
+ .toBuilder()
+ .setChannelPrimer(new RefreshChannel());
+ setTransportChannelProvider(channelBuilder.build());
+ }
return new EnhancedBigtableStubSettings(this);
}
//
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannelTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannelTest.java
new file mode 100644
index 0000000000..c41fa4d2a5
--- /dev/null
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/internal/RefreshChannelTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2019 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
+ *
+ * https://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.
+ */
+package com.google.cloud.bigtable.data.v2.internal;
+
+import io.grpc.ConnectivityState;
+import io.grpc.ManagedChannel;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mockito;
+
+@RunWith(JUnit4.class)
+public class RefreshChannelTest {
+ // RefreshChannel should establish connection to the server through managedChannel.getState(true)
+ @Test
+ public void testGetStateIsCalled() {
+ RefreshChannel refreshChannel = new RefreshChannel();
+ ManagedChannel managedChannel = Mockito.mock(ManagedChannel.class);
+
+ Mockito.doReturn(ConnectivityState.READY).when(managedChannel).getState(true);
+
+ refreshChannel.primeChannel(managedChannel);
+ Mockito.verify(managedChannel, Mockito.atLeastOnce()).getState(true);
+ }
+}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/FiltersTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/FiltersTest.java
index 509c99da7a..ad79025258 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/FiltersTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/models/FiltersTest.java
@@ -350,6 +350,21 @@ public void timestampRange() {
assertThat(actualFilter).isEqualTo(expectedFilter);
}
+ @Test
+ public void timestampAtExactTime() {
+ RowFilter actualFilter = FILTERS.timestamp().exact(20_000L).toProto();
+
+ RowFilter expectedFilter =
+ RowFilter.newBuilder()
+ .setTimestampRangeFilter(
+ TimestampRange.newBuilder()
+ .setStartTimestampMicros(20_000L)
+ .setEndTimestampMicros(20_000L + 1))
+ .build();
+
+ assertThat(actualFilter).isEqualTo(expectedFilter);
+ }
+
@Test
public void timestampOpenClosedFakeRange() {
RowFilter actualFilter =
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java
index 6adf129f94..b9b6a69cde 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java
@@ -61,6 +61,7 @@ public void settingsAreNotLostTest() {
String projectId = "my-project";
String instanceId = "my-instance";
String appProfileId = "my-app-profile-id";
+ boolean isRefreshingChannel = true;
String endpoint = "some.other.host:123";
CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class);
WatchdogProvider watchdogProvider = Mockito.mock(WatchdogProvider.class);
@@ -71,6 +72,7 @@ public void settingsAreNotLostTest() {
.setProjectId(projectId)
.setInstanceId(instanceId)
.setAppProfileId(appProfileId)
+ .setRefreshingChannel(isRefreshingChannel)
.setEndpoint(endpoint)
.setCredentialsProvider(credentialsProvider)
.setStreamWatchdogProvider(watchdogProvider)
@@ -81,6 +83,7 @@ public void settingsAreNotLostTest() {
projectId,
instanceId,
appProfileId,
+ isRefreshingChannel,
endpoint,
credentialsProvider,
watchdogProvider,
@@ -90,6 +93,7 @@ public void settingsAreNotLostTest() {
projectId,
instanceId,
appProfileId,
+ isRefreshingChannel,
endpoint,
credentialsProvider,
watchdogProvider,
@@ -99,6 +103,7 @@ public void settingsAreNotLostTest() {
projectId,
instanceId,
appProfileId,
+ isRefreshingChannel,
endpoint,
credentialsProvider,
watchdogProvider,
@@ -110,6 +115,7 @@ private void verifyBuilder(
String projectId,
String instanceId,
String appProfileId,
+ boolean isRefreshingChannel,
String endpoint,
CredentialsProvider credentialsProvider,
WatchdogProvider watchdogProvider,
@@ -117,6 +123,7 @@ private void verifyBuilder(
assertThat(builder.getProjectId()).isEqualTo(projectId);
assertThat(builder.getInstanceId()).isEqualTo(instanceId);
assertThat(builder.getAppProfileId()).isEqualTo(appProfileId);
+ assertThat(builder.isRefreshingChannel()).isEqualTo(isRefreshingChannel);
assertThat(builder.getEndpoint()).isEqualTo(endpoint);
assertThat(builder.getCredentialsProvider()).isEqualTo(credentialsProvider);
assertThat(builder.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider);
@@ -128,6 +135,7 @@ private void verifySettings(
String projectId,
String instanceId,
String appProfileId,
+ boolean isRefreshingChannel,
String endpoint,
CredentialsProvider credentialsProvider,
WatchdogProvider watchdogProvider,
@@ -135,6 +143,7 @@ private void verifySettings(
assertThat(settings.getProjectId()).isEqualTo(projectId);
assertThat(settings.getInstanceId()).isEqualTo(instanceId);
assertThat(settings.getAppProfileId()).isEqualTo(appProfileId);
+ assertThat(settings.isRefreshingChannel()).isEqualTo(isRefreshingChannel);
assertThat(settings.getEndpoint()).isEqualTo(endpoint);
assertThat(settings.getCredentialsProvider()).isEqualTo(credentialsProvider);
assertThat(settings.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider);
@@ -521,4 +530,31 @@ private void verifyRetrySettingAreSane(Set retryCodes, RetrySettings retry
assertThat(retrySettings.getRpcTimeoutMultiplier()).isAtLeast(1.0);
assertThat(retrySettings.getMaxRpcTimeout()).isGreaterThan(Duration.ZERO);
}
+
+ @Test
+ public void isRefreshingChannelDefaultValueTest() {
+ String dummyProjectId = "my-project";
+ String dummyInstanceId = "my-instance";
+ EnhancedBigtableStubSettings.Builder builder =
+ EnhancedBigtableStubSettings.newBuilder()
+ .setProjectId(dummyProjectId)
+ .setInstanceId(dummyInstanceId);
+ assertThat(builder.isRefreshingChannel()).isFalse();
+ assertThat(builder.build().isRefreshingChannel()).isFalse();
+ assertThat(builder.build().toBuilder().isRefreshingChannel()).isFalse();
+ }
+
+ @Test
+ public void isRefreshingChannelFalseValueTest() {
+ String dummyProjectId = "my-project";
+ String dummyInstanceId = "my-instance";
+ EnhancedBigtableStubSettings.Builder builder =
+ EnhancedBigtableStubSettings.newBuilder()
+ .setProjectId(dummyProjectId)
+ .setInstanceId(dummyInstanceId)
+ .setRefreshingChannel(false);
+ assertThat(builder.isRefreshingChannel()).isFalse();
+ assertThat(builder.build().isRefreshingChannel()).isFalse();
+ assertThat(builder.build().toBuilder().isRefreshingChannel()).isFalse();
+ }
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java
index b393fdef9a..bee4dfb9d2 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java
@@ -22,6 +22,7 @@
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
import com.google.common.base.MoreObjects;
+import com.google.common.base.Strings;
import java.io.IOException;
import javax.annotation.Nullable;
@@ -57,8 +58,8 @@ class CloudEnv extends AbstractTestEnv {
static CloudEnv fromSystemProperties() {
return new CloudEnv(
- getOptionalProperty(DATA_ENDPOINT_PROPERTY_NAME, "bigtable.googleapis.com:443"),
- getOptionalProperty(ADMIN_ENDPOINT_PROPERTY_NAME, "bigtableadmin.googleapis.com:443"),
+ getOptionalProperty(DATA_ENDPOINT_PROPERTY_NAME, ""),
+ getOptionalProperty(ADMIN_ENDPOINT_PROPERTY_NAME, ""),
getRequiredProperty(PROJECT_PROPERTY_NAME),
getRequiredProperty(INSTANCE_PROPERTY_NAME),
getRequiredProperty(TABLE_PROPERTY_NAME));
@@ -76,18 +77,18 @@ private CloudEnv(
this.dataSettings =
BigtableDataSettings.newBuilder().setProjectId(projectId).setInstanceId(instanceId);
- if (dataEndpoint != null) {
+ if (!Strings.isNullOrEmpty(dataEndpoint)) {
dataSettings.stubSettings().setEndpoint(dataEndpoint);
}
this.tableAdminSettings =
BigtableTableAdminSettings.newBuilder().setProjectId(projectId).setInstanceId(instanceId);
- if (adminEndpoint != null) {
+ if (!Strings.isNullOrEmpty(adminEndpoint)) {
this.tableAdminSettings.stubSettings().setEndpoint(adminEndpoint);
}
this.instanceAdminSettings = BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId);
- if (adminEndpoint != null) {
+ if (!Strings.isNullOrEmpty(adminEndpoint)) {
this.instanceAdminSettings.stubSettings().setEndpoint(adminEndpoint);
}
}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/TestEnvRule.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/TestEnvRule.java
index 2fa2a26156..52c269b72c 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/TestEnvRule.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/TestEnvRule.java
@@ -103,7 +103,7 @@ protected void before(Description description) throws Throwable {
default:
throw new IllegalArgumentException(
String.format(
- "Unknown env: %s. Please set the system property %s to either 'emulator' or 'prod'.",
+ "Unknown env: %s. Please set the system property %s to either 'emulator' or 'cloud'.",
env, ENV_PROPERTY));
}
testEnv.start();
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index e41cb94d57..0a04bff09d 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.0com.google.api.grpcgrpc-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0grpc-google-cloud-bigtable-admin-v2GRPC library for grpc-google-cloud-bigtable-admin-v2com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index 45e6a24bc6..c61ef638d0 100644
--- a/grpc-google-cloud-bigtable-v2/pom.xml
+++ b/grpc-google-cloud-bigtable-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0com.google.api.grpcgrpc-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0grpc-google-cloud-bigtable-v2GRPC library for grpc-google-cloud-bigtable-v2com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0
diff --git a/pom.xml b/pom.xml
index a7990efe02..74f523cd48 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parentpom
- 1.7.1
+ 1.8.0Google Cloud Bigtable Parenthttps://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloudgoogle-cloud-shared-config
- 0.2.1
+ 0.3.0
@@ -154,15 +154,15 @@
https://googleapis.dev/java/google-api-grpc/latest1.7
- 1.50.1
+ 1.52.01.8.11.17.0
- 1.91.3
+ 1.92.01.25.028.1-android0.24.0
- 3.10.0
+ 3.11.11.4.0
@@ -195,27 +195,27 @@
com.google.cloudgoogle-cloud-bigtable-emulator
- 0.116.1
+ 0.117.0com.google.api.grpcgrpc-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0com.google.api.grpcgrpc-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0com.google.api.grpcproto-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0com.google.api.grpcproto-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0
@@ -257,7 +257,7 @@
com.google.errorproneerror_prone_annotations
- 2.3.3
+ 2.3.4com.google.code.findbugs
@@ -305,7 +305,7 @@
com.google.cloudgoogle-cloud-conformance-tests
- 0.0.1
+ 0.0.2org.apache.maven.plugins
- maven-project-info-reports-plugin
- 3.0.0
-
-
-
- index
- dependency-info
- team
- ci-management
- issue-management
- licenses
- scm
- dependency-management
- distribution-management
- summary
- modules
-
-
-
+ maven-site-plugin
+
- true
- ${site.installationModule}
- jar
+ falseorg.apache.maven.pluginsmaven-javadoc-plugin3.1.1
-
-
- html
-
- aggregate
- javadoc
-
-
-
+
+
+ aggregate
+ false
+ site
+
+ aggregate
+
+
+
+
+ **/com/google/bigtable/**
+
+
+
+
+
noneprotectedtrue${project.build.directory}/javadoc
-
-
- Test helpers packages
- com.google.cloud.testing
-
-
- SPI packages
- com.google.cloud.spi*
-
-
+
+
+
+
+ **/com/google/cloud/bigtable/gaxx/**
+
+
+ **/com/google/cloud/bigtable/admin/v2/internal/**
+ **/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminClient.java
+ **/com/google/cloud/bigtable/admin/v2/BaseBigtableInstanceAdminSettings.java
+ **/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminCallableFactory.java
+ **/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableInstanceAdminStub.java
+ **/com/google/cloud/bigtable/admin/v2/stub/BigtableInstanceAdminStub.java
+
+
+ **/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminClient.java
+ **/com/google/cloud/bigtable/admin/v2/BaseBigtableTableAdminSettings.java
+ **/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminCallableFactory.java
+ **/com/google/cloud/bigtable/admin/v2/stub/GrpcBigtableTableAdminStub.java
+ **/com/google/cloud/bigtable/admin/v2/stub/BigtableTableAdminStub.java
+ **/com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java
+
+
+ **/com/google/cloud/bigtable/data/v2/internal/**
+ **/com/google/cloud/bigtable/data/v2/BaseBigtableDataClient.java
+ **/com/google/cloud/bigtable/data/v2/BaseBigtableDataSettings.java
+ **/com/google/cloud/bigtable/data/v2/stub/BigtableStub.java
+ **/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java
+ **/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableStub.java
+ **/com/google/cloud/bigtable/data/v2/stub/GrpcBigtableCallableFactory.java
+ **/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
+ **/com/google/cloud/bigtable/data/v2/stub/mutaterows/**
+ **/com/google/cloud/bigtable/data/v2/stub/readrows/**
+ **/com/google/cloud/bigtable/data/v2/stub/metrics/**
+
+
+
- https://grpc.io/grpc-java/javadoc/
- https://developers.google.com/protocol-buffers/docs/reference/java/
- https://googleapis.dev/java/google-auth-library/latest/
- https://googleapis.dev/java/gax/latest/
+ https://googleapis.dev/java/gax/${gax.version}/
https://googleapis.github.io/api-common-java/${google.api-common.version}/apidocs/
-
+
+
+
+ proto-google-cloud-bigtable-v2
+ grpc-google-cloud-bigtable-v2
+ proto-google-cloud-bigtable-admin-v2
+ grpc-google-cloud-bigtable-admin-v2
+ google-cloud-bigtable
+ google-cloud-bigtable-emulator
+ google-cloud-bigtable-bom
+
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index dbcceac78e..6432a48b52 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.0com.google.api.grpcproto-google-cloud-bigtable-admin-v2
- 1.7.1
+ 1.8.0proto-google-cloud-bigtable-admin-v2PROTO library for proto-google-cloud-bigtable-admin-v2com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index 2b10bd04fd..f90922a231 100644
--- a/proto-google-cloud-bigtable-v2/pom.xml
+++ b/proto-google-cloud-bigtable-v2/pom.xml
@@ -4,13 +4,13 @@
4.0.0com.google.api.grpcproto-google-cloud-bigtable-v2
- 1.7.1
+ 1.8.0proto-google-cloud-bigtable-v2PROTO library for proto-google-cloud-bigtable-v2com.google.cloudgoogle-cloud-bigtable-parent
- 1.7.1
+ 1.8.0
diff --git a/versions.txt b/versions.txt
index cae9503e8c..ea5b102db2 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,9 +1,9 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:1.7.1:1.7.1
-grpc-google-cloud-bigtable-admin-v2:1.7.1:1.7.1
-grpc-google-cloud-bigtable-v2:1.7.1:1.7.1
-proto-google-cloud-bigtable-admin-v2:1.7.1:1.7.1
-proto-google-cloud-bigtable-v2:1.7.1:1.7.1
-google-cloud-bigtable-emulator:0.116.1:0.116.1
+google-cloud-bigtable:1.8.0:1.8.0
+grpc-google-cloud-bigtable-admin-v2:1.8.0:1.8.0
+grpc-google-cloud-bigtable-v2:1.8.0:1.8.0
+proto-google-cloud-bigtable-admin-v2:1.8.0:1.8.0
+proto-google-cloud-bigtable-v2:1.8.0:1.8.0
+google-cloud-bigtable-emulator:0.117.0:0.117.0