From 4943485fd518c080456086ddae338d37fe997251 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Fri, 10 Nov 2023 11:41:06 -0500
Subject: [PATCH 01/12] chore(main): release 2.29.2-SNAPSHOT (#1996)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
google-cloud-bigtable-bom/pom.xml | 18 +++++++++---------
google-cloud-bigtable-deps-bom/pom.xml | 2 +-
google-cloud-bigtable-emulator-core/pom.xml | 4 ++--
google-cloud-bigtable-emulator/pom.xml | 10 +++++-----
google-cloud-bigtable-stats/pom.xml | 6 +++---
google-cloud-bigtable/pom.xml | 10 +++++-----
.../com/google/cloud/bigtable/Version.java | 2 +-
grpc-google-cloud-bigtable-admin-v2/pom.xml | 8 ++++----
grpc-google-cloud-bigtable-v2/pom.xml | 8 ++++----
pom.xml | 12 ++++++------
proto-google-cloud-bigtable-admin-v2/pom.xml | 8 ++++----
proto-google-cloud-bigtable-v2/pom.xml | 8 ++++----
samples/snapshot/pom.xml | 2 +-
test-proxy/pom.xml | 4 ++--
versions.txt | 14 +++++++-------
15 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index c8684b1d3a2c..f73831bc9449 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.29.1
+ 2.29.2-SNAPSHOT
pom
com.google.cloud
@@ -63,42 +63,42 @@
com.google.cloud
google-cloud-bigtable
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.cloud
google-cloud-bigtable-emulator
- 0.166.1
+ 0.166.2-SNAPSHOT
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.166.1
+ 0.166.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.cloud
google-cloud-bigtable-stats
- 2.29.1
+ 2.29.2-SNAPSHOT
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index baa7485fe4a4..da114521d433 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.29.1
+ 2.29.2-SNAPSHOT
pom
diff --git a/google-cloud-bigtable-emulator-core/pom.xml b/google-cloud-bigtable-emulator-core/pom.xml
index 7cebe63c5437..142a1e8d5f1d 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.29.1
+ 2.29.2-SNAPSHOT
google-cloud-bigtable-emulator-core
- 0.166.1
+ 0.166.2-SNAPSHOT
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 7ea51c92b886..14f9ba204e8b 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.166.1
+ 0.166.2-SNAPSHOT
Google Cloud Java - Bigtable Emulator
https://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
scm:git:git@github.com:googleapis/java-bigtable.git
@@ -81,14 +81,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
@@ -99,7 +99,7 @@
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.166.1
+ 0.166.2-SNAPSHOT
diff --git a/google-cloud-bigtable-stats/pom.xml b/google-cloud-bigtable-stats/pom.xml
index 83c7ad36e56a..9d26c5e49639 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.29.1
+ 2.29.2-SNAPSHOT
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.29.1
+ 2.29.2-SNAPSHOT
Experimental project to shade OpenCensus dependencies.
@@ -21,7 +21,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 8fa180fb5799..7fd27114b2b4 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -2,7 +2,7 @@
4.0.0
google-cloud-bigtable
- 2.29.1
+ 2.29.2-SNAPSHOT
jar
Google Cloud Bigtable
https://github.com/googleapis/java-bigtable
@@ -12,11 +12,11 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
- 2.29.1
+ 2.29.2-SNAPSHOT
google-cloud-bigtable
@@ -47,14 +47,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
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 79c93d0148a8..b4c4578ab293 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.29.1";
+ public static String VERSION = "2.29.2-SNAPSHOT";
// {x-version-update-end}
}
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index 2a5084eada4b..bab7a4f0faa8 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.29.1
+ 2.29.2-SNAPSHOT
grpc-google-cloud-bigtable-admin-v2
GRPC library for grpc-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index e7590cc180ca..662111b76aca 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.29.1
+ 2.29.2-SNAPSHOT
grpc-google-cloud-bigtable-v2
GRPC library for grpc-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
diff --git a/pom.xml b/pom.xml
index 3011d9fca657..7544a12eb380 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parent
pom
- 2.29.1
+ 2.29.2-SNAPSHOT
Google Cloud Bigtable Parent
https://github.com/googleapis/java-bigtable
@@ -153,27 +153,27 @@
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.29.1
+ 2.29.2-SNAPSHOT
com.google.cloud
google-cloud-bigtable
- 2.29.1
+ 2.29.2-SNAPSHOT
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index 672a0c4c04d9..f65375310262 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.29.1
+ 2.29.2-SNAPSHOT
proto-google-cloud-bigtable-admin-v2
PROTO library for proto-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index cdadfae0580e..d1e6028468a6 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.29.1
+ 2.29.2-SNAPSHOT
proto-google-cloud-bigtable-v2
PROTO library for proto-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.1
+ 2.29.2-SNAPSHOT
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.1
+ 2.29.2-SNAPSHOT
pom
import
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 8ac838d3fef3..06cf918e4313 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
com.google.cloud
google-cloud-bigtable
- 2.29.1
+ 2.29.2-SNAPSHOT
diff --git a/test-proxy/pom.xml b/test-proxy/pom.xml
index 1f941596cbf7..fcb0ee68e5c8 100644
--- a/test-proxy/pom.xml
+++ b/test-proxy/pom.xml
@@ -12,11 +12,11 @@
google-cloud-bigtable-parent
com.google.cloud
- 2.29.1
+ 2.29.2-SNAPSHOT
- 2.29.1
+ 2.29.2-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index dff167209295..41a499a55dd0 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:2.29.1:2.29.1
-grpc-google-cloud-bigtable-admin-v2:2.29.1:2.29.1
-grpc-google-cloud-bigtable-v2:2.29.1:2.29.1
-proto-google-cloud-bigtable-admin-v2:2.29.1:2.29.1
-proto-google-cloud-bigtable-v2:2.29.1:2.29.1
-google-cloud-bigtable-emulator:0.166.1:0.166.1
-google-cloud-bigtable-emulator-core:0.166.1:0.166.1
+google-cloud-bigtable:2.29.1:2.29.2-SNAPSHOT
+grpc-google-cloud-bigtable-admin-v2:2.29.1:2.29.2-SNAPSHOT
+grpc-google-cloud-bigtable-v2:2.29.1:2.29.2-SNAPSHOT
+proto-google-cloud-bigtable-admin-v2:2.29.1:2.29.2-SNAPSHOT
+proto-google-cloud-bigtable-v2:2.29.1:2.29.2-SNAPSHOT
+google-cloud-bigtable-emulator:0.166.1:0.166.2-SNAPSHOT
+google-cloud-bigtable-emulator-core:0.166.1:0.166.2-SNAPSHOT
From 12591452238aef9b25ce2e53d4951f00c4c062b8 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 10 Nov 2023 17:42:26 +0100
Subject: [PATCH 02/12] build(deps): update dependency
com.google.cloud:google-cloud-shared-config to v1.6.1 (#1984)
---
google-cloud-bigtable-bom/pom.xml | 2 +-
google-cloud-bigtable-deps-bom/pom.xml | 2 +-
pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index f73831bc9449..bde24e45a134 100644
--- a/google-cloud-bigtable-bom/pom.xml
+++ b/google-cloud-bigtable-bom/pom.xml
@@ -8,7 +8,7 @@
com.google.cloud
google-cloud-shared-config
- 1.6.0
+ 1.6.1
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index da114521d433..c75a12d9b6f8 100644
--- a/google-cloud-bigtable-deps-bom/pom.xml
+++ b/google-cloud-bigtable-deps-bom/pom.xml
@@ -7,7 +7,7 @@
com.google.cloud
google-cloud-shared-config
- 1.6.0
+ 1.6.1
diff --git a/pom.xml b/pom.xml
index 7544a12eb380..ffb8d0203e5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-shared-config
- 1.6.0
+ 1.6.1
From 21e99220a099bcb0abe12a9b5bd9d080dffdcb57 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 10 Nov 2023 17:42:43 +0100
Subject: [PATCH 03/12] test(deps): update dependency
com.google.protobuf:protoc to v3.25.0 (#1986)
---
google-cloud-bigtable/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 7fd27114b2b4..0598d180ad26 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -39,7 +39,7 @@
1.59.0
- 3.24.4
+ 3.25.0
From 7ad70e3abc1af7dfab715386978bf14f02b34e5d Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 10 Nov 2023 17:43:02 +0100
Subject: [PATCH 04/12] deps: update dependency
org.junit.vintage:junit-vintage-engine to v5.10.1 (#1990)
---
samples/native-image-sample/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml
index b6c62862874c..377134cef1e2 100644
--- a/samples/native-image-sample/pom.xml
+++ b/samples/native-image-sample/pom.xml
@@ -83,7 +83,7 @@
org.junit.vintage
junit-vintage-engine
- 5.10.0
+ 5.10.1
test
From 0827252a1f20f847330998a6224d49146a41931a Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 10 Nov 2023 17:43:22 +0100
Subject: [PATCH 05/12] chore(deps): update dependency
com.google.cloud:google-cloud-bigtable to v2.29.1 (#1998)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(deps): update dependency com.google.cloud:google-cloud-bigtable to v2.29.1
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: Owl Bot
---
README.md | 8 ++++----
samples/install-without-bom/pom.xml | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 984083333090..736624d00aa7 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies:
com.google.cloud
google-cloud-bigtable
- 2.29.0
+ 2.29.1
```
@@ -57,13 +57,13 @@ implementation 'com.google.cloud:google-cloud-bigtable'
If you are using Gradle without BOM, add this to your dependencies:
```Groovy
-implementation 'com.google.cloud:google-cloud-bigtable:2.29.0'
+implementation 'com.google.cloud:google-cloud-bigtable:2.29.1'
```
If you are using SBT, add this to your dependencies:
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "2.29.0"
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "2.29.1"
```
@@ -609,7 +609,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
[kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-bigtable/java11.html
[stability-image]: https://img.shields.io/badge/stability-stable-green
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigtable.svg
-[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-bigtable/2.29.0
+[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-bigtable/2.29.1
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index b0fa13a80a45..b688c9276b5d 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.29.0
+ 2.29.1
From 4c73abd2f4a07808b591dd9178e87715d2f3008d Mon Sep 17 00:00:00 2001
From: Mattie Fu
Date: Mon, 27 Nov 2023 10:15:12 -0500
Subject: [PATCH 06/12] feat: client sends routing cookie back to server
(#1888)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: client sends retry cookie back to server
* udpate to use trailer instead of error info
* updating the header name
* address some comments
* udpate
* update tests and handling of retry cookie
* address comments
* address comments
* add cookie to readChangeStream
* also check headers and add a test
* simplify code
* clean up test
* clean up test
* update dependency
* test
* move MetadataSubject to a separate file
* add the file
* add license
* address comments
* close client
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: Owl Bot
---
README.md | 2 +-
.../bigtable/data/v2/stub/CookiesHolder.java | 70 +++
.../data/v2/stub/CookiesInterceptor.java | 96 +++
.../stub/CookiesServerStreamingCallable.java | 48 ++
.../data/v2/stub/CookiesUnaryCallable.java | 44 ++
.../data/v2/stub/EnhancedBigtableStub.java | 64 +-
.../bigtable/data/v2/MetadataSubject.java | 60 ++
.../data/v2/stub/CookiesHolderTest.java | 561 ++++++++++++++++++
8 files changed, 924 insertions(+), 21 deletions(-)
create mode 100644 google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolder.java
create mode 100644 google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesInterceptor.java
create mode 100644 google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesServerStreamingCallable.java
create mode 100644 google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesUnaryCallable.java
create mode 100644 google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/MetadataSubject.java
create mode 100644 google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java
diff --git a/README.md b/README.md
index 736624d00aa7..5caf555e9485 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ If you are using Maven without the BOM, add this to your dependencies:
If you are using Gradle 5.x or later, add this to your dependencies:
```Groovy
-implementation platform('com.google.cloud:libraries-bom:26.26.0')
+implementation platform('com.google.cloud:libraries-bom:26.27.0')
implementation 'com.google.cloud:google-cloud-bigtable'
```
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolder.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolder.java
new file mode 100644
index 000000000000..7d7ca6a0291c
--- /dev/null
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolder.java
@@ -0,0 +1,70 @@
+/*
+ * 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
+ *
+ * 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.stub;
+
+import io.grpc.CallOptions;
+import io.grpc.Metadata;
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Nullable;
+
+/** A cookie that holds information for retry or routing */
+class CookiesHolder {
+
+ static final CallOptions.Key COOKIES_HOLDER_KEY =
+ CallOptions.Key.create("bigtable-cookies");
+
+ /** Routing cookie key prefix. */
+ static final String COOKIE_KEY_PREFIX = "x-goog-cbt-cookie";
+
+ /** A map that stores all the routing cookies. */
+ private final Map, String> cookies = new HashMap<>();
+
+ /** Returns CookiesHolder if presents in CallOptions, otherwise returns null. */
+ @Nullable
+ static CookiesHolder fromCallOptions(CallOptions options) {
+ // CookiesHolder should be added by CookiesServerStreamingCallable and
+ // CookiesUnaryCallable for most methods. However, methods like PingAndWarm
+ // doesn't support routing cookie, in which case this will return null.
+ return options.getOption(COOKIES_HOLDER_KEY);
+ }
+
+ /** Add all the routing cookies to headers if any. */
+ Metadata injectCookiesInRequestHeaders(Metadata headers) {
+ for (Metadata.Key key : cookies.keySet()) {
+ headers.put(key, cookies.get(key));
+ }
+ return headers;
+ }
+
+ /**
+ * Iterate through all the keys in initial or trailing metadata, and add all the keys that match
+ * COOKIE_KEY_PREFIX to cookies. Values in trailers will override the value set in initial
+ * metadata for the same keys.
+ */
+ void extractCookiesFromMetadata(@Nullable Metadata trailers) {
+ if (trailers == null) {
+ return;
+ }
+ for (String key : trailers.keys()) {
+ if (key.startsWith(COOKIE_KEY_PREFIX)) {
+ Metadata.Key metadataKey = Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER);
+ String value = trailers.get(metadataKey);
+ cookies.put(metadataKey, value);
+ }
+ }
+ }
+}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesInterceptor.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesInterceptor.java
new file mode 100644
index 000000000000..77387851fabd
--- /dev/null
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesInterceptor.java
@@ -0,0 +1,96 @@
+/*
+ * 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
+ *
+ * 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.stub;
+
+import io.grpc.CallOptions;
+import io.grpc.Channel;
+import io.grpc.ClientCall;
+import io.grpc.ClientInterceptor;
+import io.grpc.ForwardingClientCall;
+import io.grpc.ForwardingClientCallListener;
+import io.grpc.Metadata;
+import io.grpc.MethodDescriptor;
+import io.grpc.Status;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A cookie interceptor that checks the cookie value from returned trailer, updates the cookie
+ * holder, and inject it in the header of the next request.
+ */
+class CookiesInterceptor implements ClientInterceptor {
+
+ private static final Logger LOG = Logger.getLogger(CookiesInterceptor.class.getName());
+
+ @Override
+ public ClientCall interceptCall(
+ MethodDescriptor methodDescriptor, CallOptions callOptions, Channel channel) {
+ return new ForwardingClientCall.SimpleForwardingClientCall(
+ channel.newCall(methodDescriptor, callOptions)) {
+ @Override
+ public void start(Listener responseListener, Metadata headers) {
+ // Gets the CookiesHolder added from CookiesServerStreamingCallable and
+ // CookiesUnaryCallable.
+ // Add CookiesHolder content to request headers if there's any.
+ try {
+ CookiesHolder cookie = CookiesHolder.fromCallOptions(callOptions);
+ if (cookie != null) {
+ headers = cookie.injectCookiesInRequestHeaders(headers);
+ responseListener = new UpdateCookieListener<>(responseListener, cookie);
+ }
+ } catch (Throwable e) {
+ LOG.warning("Failed to inject cookie to request headers: " + e);
+ } finally {
+ super.start(responseListener, headers);
+ }
+ }
+ };
+ }
+
+ /** Add headers and trailers to CookiesHolder if there's any. * */
+ static class UpdateCookieListener
+ extends ForwardingClientCallListener.SimpleForwardingClientCallListener {
+
+ private final CookiesHolder cookie;
+
+ UpdateCookieListener(ClientCall.Listener delegate, CookiesHolder cookiesHolder) {
+ super(delegate);
+ this.cookie = cookiesHolder;
+ }
+
+ @Override
+ public void onHeaders(Metadata headers) {
+ try {
+ cookie.extractCookiesFromMetadata(headers);
+ } catch (Throwable e) {
+ LOG.log(Level.WARNING, "Failed to extract cookie from response headers.", e);
+ } finally {
+ super.onHeaders(headers);
+ }
+ }
+
+ @Override
+ public void onClose(Status status, Metadata trailers) {
+ try {
+ cookie.extractCookiesFromMetadata(trailers);
+ } catch (Throwable e) {
+ LOG.log(Level.WARNING, "Failed to extract cookie from response trailers.", e);
+ } finally {
+ super.onClose(status, trailers);
+ }
+ }
+ }
+}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesServerStreamingCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesServerStreamingCallable.java
new file mode 100644
index 000000000000..0d012b8ea061
--- /dev/null
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesServerStreamingCallable.java
@@ -0,0 +1,48 @@
+/*
+ * 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
+ *
+ * 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.stub;
+
+import static com.google.cloud.bigtable.data.v2.stub.CookiesHolder.COOKIES_HOLDER_KEY;
+
+import com.google.api.gax.grpc.GrpcCallContext;
+import com.google.api.gax.rpc.ApiCallContext;
+import com.google.api.gax.rpc.ResponseObserver;
+import com.google.api.gax.rpc.ServerStreamingCallable;
+
+/**
+ * The cookie holder will act as operation scoped storage for all retry attempts. Each attempt's
+ * cookies will be merged into the value holder and will be sent out with the next retry attempt.
+ */
+class CookiesServerStreamingCallable
+ extends ServerStreamingCallable {
+
+ private final ServerStreamingCallable callable;
+
+ CookiesServerStreamingCallable(ServerStreamingCallable innerCallable) {
+ this.callable = innerCallable;
+ }
+
+ @Override
+ public void call(
+ RequestT request, ResponseObserver responseObserver, ApiCallContext context) {
+ GrpcCallContext grpcCallContext = (GrpcCallContext) context;
+ callable.call(
+ request,
+ responseObserver,
+ grpcCallContext.withCallOptions(
+ grpcCallContext.getCallOptions().withOption(COOKIES_HOLDER_KEY, new CookiesHolder())));
+ }
+}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesUnaryCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesUnaryCallable.java
new file mode 100644
index 000000000000..b0d42d59552a
--- /dev/null
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/CookiesUnaryCallable.java
@@ -0,0 +1,44 @@
+/*
+ * 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
+ *
+ * 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.stub;
+
+import static com.google.cloud.bigtable.data.v2.stub.CookiesHolder.COOKIES_HOLDER_KEY;
+
+import com.google.api.core.ApiFuture;
+import com.google.api.gax.grpc.GrpcCallContext;
+import com.google.api.gax.rpc.ApiCallContext;
+import com.google.api.gax.rpc.UnaryCallable;
+
+/**
+ * The cookie holder will act as operation scoped storage for all retry attempts. Each attempt's
+ * cookies will be merged into the value holder and will be sent out with the next retry attempt.
+ */
+class CookiesUnaryCallable extends UnaryCallable {
+ private final UnaryCallable innerCallable;
+
+ CookiesUnaryCallable(UnaryCallable callable) {
+ this.innerCallable = callable;
+ }
+
+ @Override
+ public ApiFuture futureCall(RequestT request, ApiCallContext context) {
+ GrpcCallContext grpcCallContext = (GrpcCallContext) context;
+ return innerCallable.futureCall(
+ request,
+ grpcCallContext.withCallOptions(
+ grpcCallContext.getCallOptions().withOption(COOKIES_HOLDER_KEY, new CookiesHolder())));
+ }
+}
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
index 0420e47dcf4b..705b3027ed62 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java
@@ -185,6 +185,14 @@ public static EnhancedBigtableStubSettings finalizeSettings(
// workaround JWT audience issues
patchCredentials(builder);
+ // patch cookies interceptor
+ InstantiatingGrpcChannelProvider.Builder transportProvider = null;
+ if (builder.getTransportChannelProvider() instanceof InstantiatingGrpcChannelProvider) {
+ transportProvider =
+ ((InstantiatingGrpcChannelProvider) builder.getTransportChannelProvider()).toBuilder();
+ transportProvider.setInterceptorProvider(() -> ImmutableList.of(new CookiesInterceptor()));
+ }
+
// Inject channel priming
if (settings.isRefreshingChannel()) {
// Fix the credentials so that they can be shared
@@ -194,20 +202,18 @@ public static EnhancedBigtableStubSettings finalizeSettings(
}
builder.setCredentialsProvider(FixedCredentialsProvider.create(credentials));
- // Inject the primer
- InstantiatingGrpcChannelProvider transportProvider =
- (InstantiatingGrpcChannelProvider) settings.getTransportChannelProvider();
-
- builder.setTransportChannelProvider(
- transportProvider
- .toBuilder()
- .setChannelPrimer(
- BigtableChannelPrimer.create(
- credentials,
- settings.getProjectId(),
- settings.getInstanceId(),
- settings.getAppProfileId()))
- .build());
+ if (transportProvider != null) {
+ transportProvider.setChannelPrimer(
+ BigtableChannelPrimer.create(
+ credentials,
+ settings.getProjectId(),
+ settings.getInstanceId(),
+ settings.getAppProfileId()));
+ }
+ }
+
+ if (transportProvider != null) {
+ builder.setTransportChannelProvider(transportProvider.build());
}
ImmutableMap attributes =
@@ -365,7 +371,11 @@ public ServerStreamingCallable createReadRowsCallable(
new TracedServerStreamingCallable<>(
readRowsUserCallable, clientContext.getTracerFactory(), span);
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ // CookieHolder needs to be injected to the CallOptions outside of retries, otherwise retry
+ // attempts won't see a CookieHolder.
+ ServerStreamingCallable withCookie = new CookiesServerStreamingCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
@@ -401,7 +411,9 @@ public UnaryCallable createReadRowCallable(RowAdapter
new TracedUnaryCallable<>(
firstRow, clientContext.getTracerFactory(), getSpanName("ReadRow"));
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ UnaryCallable withCookie = new CookiesUnaryCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
@@ -642,7 +654,9 @@ private UnaryCallable createBulkMutateRowsCallable() {
new TracedUnaryCallable<>(
tracedBatcherUnaryCallable, clientContext.getTracerFactory(), spanName);
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ UnaryCallable withCookie = new CookiesUnaryCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
@@ -924,7 +938,10 @@ public Map extract(
ServerStreamingCallable traced =
new TracedServerStreamingCallable<>(retrying, clientContext.getTracerFactory(), span);
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ ServerStreamingCallable withCookie =
+ new CookiesServerStreamingCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
@@ -1004,7 +1021,10 @@ public Map extract(
new TracedServerStreamingCallable<>(
readChangeStreamUserCallable, clientContext.getTracerFactory(), span);
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ ServerStreamingCallable withCookie =
+ new CookiesServerStreamingCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
/**
@@ -1017,7 +1037,11 @@ private UnaryCallable createUserFacin
UnaryCallable traced =
new TracedUnaryCallable<>(inner, clientContext.getTracerFactory(), getSpanName(methodName));
- return traced.withDefaultCallContext(clientContext.getDefaultCallContext());
+ // CookieHolder needs to be injected to the CallOptions outside of retries, otherwise retry
+ // attempts won't see a CookieHolder.
+ UnaryCallable withCookie = new CookiesUnaryCallable<>(traced);
+
+ return withCookie.withDefaultCallContext(clientContext.getDefaultCallContext());
}
private UnaryCallable createPingAndWarmCallable() {
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/MetadataSubject.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/MetadataSubject.java
new file mode 100644
index 000000000000..5e76ce38cd30
--- /dev/null
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/MetadataSubject.java
@@ -0,0 +1,60 @@
+/*
+ * 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
+ *
+ * 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;
+
+import static com.google.common.truth.Truth.assertAbout;
+
+import com.google.common.truth.FailureMetadata;
+import com.google.common.truth.Subject;
+import io.grpc.Metadata;
+import javax.annotation.Nullable;
+
+/** Utility class to test key-value pairs in {@link io.grpc.Metadata}. */
+public final class MetadataSubject extends Subject {
+
+ @Nullable private final Metadata actual;
+
+ public static Factory metadata() {
+ return MetadataSubject::new;
+ }
+
+ private MetadataSubject(FailureMetadata metadata, @Nullable Metadata actual) {
+ super(metadata, actual);
+ this.actual = actual;
+ }
+
+ public static MetadataSubject assertThat(@Nullable Metadata actual) {
+ return assertAbout(metadata()).that(actual);
+ }
+
+ public void containsAtLeast(String... keyValuePairs) {
+ assert actual != null;
+ for (int i = 0; i < keyValuePairs.length; i += 2) {
+ check("containsAtLeast()")
+ .that(actual.get(Metadata.Key.of(keyValuePairs[i], Metadata.ASCII_STRING_MARSHALLER)))
+ .isEqualTo(keyValuePairs[i + 1]);
+ }
+ }
+
+ public void doesNotContainKeys(String... keys) {
+ assert actual != null;
+ for (String key : keys) {
+ check("doesNotContainKeys()")
+ .that(actual.containsKey(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)))
+ .isFalse();
+ }
+ }
+}
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java
new file mode 100644
index 000000000000..5dac05352374
--- /dev/null
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java
@@ -0,0 +1,561 @@
+/*
+ * 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
+ *
+ * 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.stub;
+
+import static com.google.cloud.bigtable.data.v2.MetadataSubject.assertThat;
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.api.gax.retrying.RetrySettings;
+import com.google.api.gax.rpc.StatusCode;
+import com.google.bigtable.v2.BigtableGrpc;
+import com.google.bigtable.v2.CheckAndMutateRowRequest;
+import com.google.bigtable.v2.CheckAndMutateRowResponse;
+import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest;
+import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse;
+import com.google.bigtable.v2.MutateRowRequest;
+import com.google.bigtable.v2.MutateRowResponse;
+import com.google.bigtable.v2.MutateRowsRequest;
+import com.google.bigtable.v2.MutateRowsResponse;
+import com.google.bigtable.v2.ReadChangeStreamRequest;
+import com.google.bigtable.v2.ReadChangeStreamResponse;
+import com.google.bigtable.v2.ReadModifyWriteRowRequest;
+import com.google.bigtable.v2.ReadModifyWriteRowResponse;
+import com.google.bigtable.v2.ReadRowsRequest;
+import com.google.bigtable.v2.ReadRowsResponse;
+import com.google.bigtable.v2.SampleRowKeysRequest;
+import com.google.bigtable.v2.SampleRowKeysResponse;
+import com.google.cloud.bigtable.data.v2.BigtableDataClient;
+import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
+import com.google.cloud.bigtable.data.v2.FakeServiceBuilder;
+import com.google.cloud.bigtable.data.v2.models.BulkMutation;
+import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation;
+import com.google.cloud.bigtable.data.v2.models.Mutation;
+import com.google.cloud.bigtable.data.v2.models.Query;
+import com.google.cloud.bigtable.data.v2.models.ReadChangeStreamQuery;
+import com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow;
+import com.google.cloud.bigtable.data.v2.models.RowMutation;
+import com.google.cloud.bigtable.data.v2.models.RowMutationEntry;
+import io.grpc.ForwardingServerCall;
+import io.grpc.Metadata;
+import io.grpc.MethodDescriptor;
+import io.grpc.Server;
+import io.grpc.ServerCall;
+import io.grpc.ServerCallHandler;
+import io.grpc.ServerInterceptor;
+import io.grpc.Status;
+import io.grpc.StatusRuntimeException;
+import io.grpc.stub.StreamObserver;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.threeten.bp.Duration;
+
+@RunWith(JUnit4.class)
+public class CookiesHolderTest {
+ private static final Metadata.Key ROUTING_COOKIE_1 =
+ Metadata.Key.of("x-goog-cbt-cookie-routing", Metadata.ASCII_STRING_MARSHALLER);
+ private static final Metadata.Key ROUTING_COOKIE_2 =
+ Metadata.Key.of("x-goog-cbt-cookie-random", Metadata.ASCII_STRING_MARSHALLER);
+ private static final Metadata.Key BAD_KEY =
+ Metadata.Key.of("x-goog-cbt-not-cookie", Metadata.ASCII_STRING_MARSHALLER);
+ private static final String testCookie = "test-routing-cookie";
+
+ private Server server;
+ private final FakeService fakeService = new FakeService();
+ private BigtableDataClient client;
+ private final List serverMetadata = new ArrayList<>();
+
+ private final Set methods = new HashSet<>();
+
+ @Before
+ public void setup() throws Exception {
+ ServerInterceptor serverInterceptor =
+ new ServerInterceptor() {
+ @Override
+ public ServerCall.Listener interceptCall(
+ ServerCall serverCall,
+ Metadata metadata,
+ ServerCallHandler serverCallHandler) {
+ serverMetadata.add(metadata);
+ if (metadata.containsKey(ROUTING_COOKIE_1)) {
+ methods.add(serverCall.getMethodDescriptor().getBareMethodName());
+ }
+ return serverCallHandler.startCall(serverCall, metadata);
+ }
+ };
+
+ server = FakeServiceBuilder.create(fakeService).intercept(serverInterceptor).start();
+
+ BigtableDataSettings.Builder settings =
+ BigtableDataSettings.newBuilderForEmulator(server.getPort())
+ .setProjectId("fake-project")
+ .setInstanceId("fake-instance");
+
+ // Override CheckAndMutate and ReadModifyWrite retry settings here. These operations
+ // are currently not retryable but this could change in the future after we
+ // have routing cookie sends back meaningful information and changes how retry works.
+ // Routing cookie still needs to be respected and handled by the callables.
+ settings
+ .stubSettings()
+ .checkAndMutateRowSettings()
+ .setRetrySettings(
+ RetrySettings.newBuilder()
+ .setInitialRetryDelay(Duration.ofMillis(10))
+ .setMaxRetryDelay(Duration.ofMinutes(1))
+ .setMaxAttempts(2)
+ .build())
+ .setRetryableCodes(StatusCode.Code.UNAVAILABLE);
+
+ settings
+ .stubSettings()
+ .readModifyWriteRowSettings()
+ .setRetrySettings(
+ RetrySettings.newBuilder()
+ .setInitialRetryDelay(Duration.ofMillis(10))
+ .setMaxRetryDelay(Duration.ofMinutes(1))
+ .setMaxAttempts(2)
+ .build())
+ .setRetryableCodes(StatusCode.Code.UNAVAILABLE);
+
+ client = BigtableDataClient.create(settings.build());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (client != null) {
+ client.close();
+ }
+ if (server != null) {
+ server.shutdown();
+ }
+ }
+
+ @Test
+ public void testReadRows() {
+ client.readRows(Query.create("fake-table")).iterator().hasNext();
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(ROUTING_COOKIE_1.name(), "readRows", ROUTING_COOKIE_2.name(), testCookie);
+ assertThat(lastMetadata).doesNotContainKeys(BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testReadRow() {
+ client.readRow("fake-table", "key");
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(ROUTING_COOKIE_1.name(), "readRows", ROUTING_COOKIE_2.name(), testCookie);
+ assertThat(lastMetadata).doesNotContainKeys(BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testMutateRows() {
+ client.bulkMutateRows(
+ BulkMutation.create("fake-table")
+ .add(RowMutationEntry.create("key").setCell("cf", "q", "v")));
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(
+ ROUTING_COOKIE_1.name(), "mutateRows", ROUTING_COOKIE_2.name(), testCookie);
+ assertThat(lastMetadata).doesNotContainKeys(BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testMutateRow() {
+ client.mutateRow(RowMutation.create("table", "key").setCell("cf", "q", "v"));
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(ROUTING_COOKIE_1.name(), "mutateRow", ROUTING_COOKIE_2.name(), testCookie);
+ assertThat(lastMetadata).doesNotContainKeys(BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testSampleRowKeys() {
+
+ client.sampleRowKeys("fake-table");
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(
+ ROUTING_COOKIE_1.name(), "sampleRowKeys", ROUTING_COOKIE_2.name(), testCookie);
+ assertThat(lastMetadata).doesNotContainKeys(BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testNoCookieSucceedReadRows() {
+ fakeService.returnCookie = false;
+
+ client.readRows(Query.create("fake-table")).iterator().hasNext();
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata).doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testNoCookieSucceedReadRow() {
+ fakeService.returnCookie = false;
+
+ client.readRow("fake-table", "key");
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name(), BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testNoCookieSucceedMutateRows() {
+ fakeService.returnCookie = false;
+
+ client.bulkMutateRows(
+ BulkMutation.create("fake-table")
+ .add(RowMutationEntry.create("key").setCell("cf", "q", "v")));
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name(), BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testNoCookieSucceedMutateRow() {
+ fakeService.returnCookie = false;
+
+ client.mutateRow(RowMutation.create("fake-table", "key").setCell("cf", "q", "v"));
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name(), BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testNoCookieSucceedSampleRowKeys() {
+ fakeService.returnCookie = false;
+
+ client.sampleRowKeys("fake-table");
+
+ assertThat(fakeService.count.get()).isGreaterThan(1);
+ assertThat(serverMetadata).hasSize(fakeService.count.get());
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .doesNotContainKeys(ROUTING_COOKIE_1.name(), ROUTING_COOKIE_2.name(), BAD_KEY.name());
+
+ serverMetadata.clear();
+ }
+
+ @Test
+ public void testCookiesInHeaders() throws Exception {
+ // Send 2 cookies in the headers, with routingCookieKey and ROUTING_COOKIE_2. ROUTING_COOKIE_2
+ // is also sent in the trailers so the value should be overridden.
+ final Metadata.Key routingCookieKey =
+ Metadata.Key.of("x-goog-cbt-cookie-no-override", Metadata.ASCII_STRING_MARSHALLER);
+ final String routingCookieValue = "no-override";
+ ServerInterceptor serverInterceptor =
+ new ServerInterceptor() {
+ @Override
+ public ServerCall.Listener interceptCall(
+ ServerCall serverCall,
+ Metadata metadata,
+ ServerCallHandler serverCallHandler) {
+ serverMetadata.add(metadata);
+
+ metadata.put(routingCookieKey, routingCookieValue);
+ return serverCallHandler.startCall(
+ new ForwardingServerCall.SimpleForwardingServerCall(serverCall) {
+ @Override
+ public void sendHeaders(Metadata headers) {
+ headers.put(routingCookieKey, routingCookieValue);
+ headers.put(ROUTING_COOKIE_2, "will-be-overridden");
+ super.sendHeaders(headers);
+ }
+ },
+ metadata);
+ }
+ };
+
+ Server newServer = null;
+ try {
+ newServer = FakeServiceBuilder.create(fakeService).intercept(serverInterceptor).start();
+
+ BigtableDataSettings.Builder settings =
+ BigtableDataSettings.newBuilderForEmulator(newServer.getPort())
+ .setProjectId("fake-project")
+ .setInstanceId("fake-instance");
+
+ try (BigtableDataClient client = BigtableDataClient.create(settings.build())) {
+
+ client.readRows(Query.create("table")).iterator().hasNext();
+
+ Metadata lastMetadata = serverMetadata.get(fakeService.count.get() - 1);
+
+ assertThat(lastMetadata)
+ .containsAtLeast(
+ ROUTING_COOKIE_2.name(), testCookie, routingCookieKey.name(), routingCookieValue);
+ }
+ } finally {
+ if (newServer != null) {
+ newServer.shutdown();
+ }
+ }
+ }
+
+ @Test
+ public void testAllMethodsAreCalled() throws InterruptedException {
+ // This test ensures that all methods respect the retry cookie except for the ones that are
+ // explicitly added to the methods list. It requires that any newly method is exercised in this
+ // test. This is enforced by introspecting grpc method descriptors.
+ client.readRows(Query.create("fake-table")).iterator().hasNext();
+
+ fakeService.count.set(0);
+ client.mutateRow(RowMutation.create("fake-table", "key").setCell("cf", "q", "v"));
+
+ fakeService.count.set(0);
+ client.bulkMutateRows(
+ BulkMutation.create("fake-table")
+ .add(RowMutationEntry.create("key").setCell("cf", "q", "v")));
+
+ fakeService.count.set(0);
+ client.sampleRowKeys("fake-table");
+
+ fakeService.count.set(0);
+ client.checkAndMutateRow(
+ ConditionalRowMutation.create("fake-table", "key")
+ .then(Mutation.create().setCell("cf", "q", "v")));
+
+ fakeService.count.set(0);
+ client.readModifyWriteRow(
+ ReadModifyWriteRow.create("fake-table", "key").append("cf", "q", "v"));
+
+ fakeService.count.set(0);
+ client.generateInitialChangeStreamPartitions("fake-table").iterator().hasNext();
+
+ fakeService.count.set(0);
+ client.readChangeStream(ReadChangeStreamQuery.create("fake-table")).iterator().hasNext();
+
+ Set expected =
+ BigtableGrpc.getServiceDescriptor().getMethods().stream()
+ .map(MethodDescriptor::getBareMethodName)
+ .collect(Collectors.toSet());
+
+ // Exclude methods that are not supported by routing cookie
+ methods.add("PingAndWarm");
+
+ assertThat(methods).containsExactlyElementsIn(expected);
+ }
+
+ static class FakeService extends BigtableGrpc.BigtableImplBase {
+
+ private boolean returnCookie = true;
+ private final AtomicInteger count = new AtomicInteger();
+
+ @Override
+ public void readRows(
+ ReadRowsRequest request, StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "readRows");
+ responseObserver.onNext(ReadRowsResponse.getDefaultInstance());
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(ReadRowsResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void mutateRow(
+ MutateRowRequest request, StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "mutateRow");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(MutateRowResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void mutateRows(
+ MutateRowsRequest request, StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "mutateRows");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(
+ MutateRowsResponse.newBuilder()
+ .addEntries(MutateRowsResponse.Entry.getDefaultInstance())
+ .build());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void sampleRowKeys(
+ SampleRowKeysRequest request, StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "sampleRowKeys");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(SampleRowKeysResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void checkAndMutateRow(
+ CheckAndMutateRowRequest request,
+ StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "checkAndMutate");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(CheckAndMutateRowResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void readModifyWriteRow(
+ ReadModifyWriteRowRequest request,
+ StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "readModifyWrite");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(ReadModifyWriteRowResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void readChangeStream(
+ ReadChangeStreamRequest request,
+ StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "readChangeStream");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(
+ ReadChangeStreamResponse.newBuilder()
+ .setCloseStream(ReadChangeStreamResponse.CloseStream.getDefaultInstance())
+ .build());
+ responseObserver.onCompleted();
+ }
+
+ @Override
+ public void generateInitialChangeStreamPartitions(
+ GenerateInitialChangeStreamPartitionsRequest request,
+ StreamObserver responseObserver) {
+ if (count.getAndIncrement() < 1) {
+ Metadata trailers = new Metadata();
+ maybePopulateCookie(trailers, "generateInitialChangeStreamPartitions");
+ StatusRuntimeException exception = new StatusRuntimeException(Status.UNAVAILABLE, trailers);
+ responseObserver.onError(exception);
+ return;
+ }
+ responseObserver.onNext(GenerateInitialChangeStreamPartitionsResponse.getDefaultInstance());
+ responseObserver.onCompleted();
+ }
+
+ private void maybePopulateCookie(Metadata trailers, String label) {
+ if (returnCookie) {
+ trailers.put(ROUTING_COOKIE_1, label);
+ trailers.put(ROUTING_COOKIE_2, testCookie);
+ trailers.put(BAD_KEY, "bad-key");
+ }
+ }
+ }
+}
From 8230069fe2fcadae96f5c7ba85768d8bd30d01ec Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 29 Nov 2023 17:07:19 +0100
Subject: [PATCH 07/12] build(deps): update dependency
org.codehaus.mojo:build-helper-maven-plugin to v3.5.0 (#2013)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* build(deps): update dependency org.codehaus.mojo:build-helper-maven-plugin to v3.5.0
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: Owl Bot
---
google-cloud-bigtable/pom.xml | 2 +-
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 0598d180ad26..011faaac8a22 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -630,7 +630,7 @@
org.codehaus.mojo
build-helper-maven-plugin
- 3.4.0
+ 3.5.0
add-source
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index b688c9276b5d..e7462e744d3e 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -53,7 +53,7 @@
org.codehaus.mojo
build-helper-maven-plugin
- 3.4.0
+ 3.5.0
add-snippets-source
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 06cf918e4313..9496f6a1e919 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -52,7 +52,7 @@
org.codehaus.mojo
build-helper-maven-plugin
- 3.4.0
+ 3.5.0
add-snippets-source
From 1023a503541aaa3988b341d02cb896e7e1c3f204 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 29 Nov 2023 17:07:40 +0100
Subject: [PATCH 08/12] test(deps): update dependency
com.google.protobuf:protoc to v3.25.1 (#2010)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* test(deps): update dependency com.google.protobuf:protoc to v3.25.1
* 🦉 Updates from OwlBot post-processor
See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md
---------
Co-authored-by: Owl Bot
---
google-cloud-bigtable/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 011faaac8a22..55bc0be7079e 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -39,7 +39,7 @@
1.59.0
- 3.25.0
+ 3.25.1
From 7a2cafae3560dc698f7bf5ddd2681930ee2cd9c5 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 29 Nov 2023 17:32:15 +0100
Subject: [PATCH 09/12] test(deps): update dependency
io.grpc:protoc-gen-grpc-java to v1.59.1 (#2014)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[](https://renovatebot.com)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.grpc:protoc-gen-grpc-java](https://togithub.com/grpc/grpc-java) | `1.59.0` -> `1.59.1` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
grpc/grpc-java (io.grpc:protoc-gen-grpc-java)
### [`v1.59.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.1)
- netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final.
- netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset
- xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
â™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-bigtable).
---
google-cloud-bigtable/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index 55bc0be7079e..abe258f630f4 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -38,7 +38,7 @@
batch-bigtable.googleapis.com:443
- 1.59.0
+ 1.59.1
3.25.1
From c3c383b72636e42c63fbc1fb99eb0e4a9c29b5b9 Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Mon, 4 Dec 2023 15:57:06 -0500
Subject: [PATCH 10/12] ci: Update ci.yaml to introduce Java 21 unit testing
(#1907) (#2019)
Source-Link: https://github.com/googleapis/synthtool/commit/c06d605503f34e91c9d7dfee8f5287d58b5988ae
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-java:latest@sha256:6f431774e11cc46619cf093fd1481193c4024031073697fa18f0099b943aab88
Co-authored-by: Owl Bot
---
.github/.OwlBot.lock.yaml | 4 ++--
.github/workflows/ci.yaml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 208af343821b..d304652e1c44 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest
- digest: sha256:fb7584f6adb3847ac480ed49a4bfe1463965026b2919a1be270e3174f3ce1191
-# created: 2023-10-26T23:22:21.357007231Z
+ digest: sha256:6f431774e11cc46619cf093fd1481193c4024031073697fa18f0099b943aab88
+# created: 2023-12-01T19:50:20.444857406Z
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index e27b2c57563c..ae66b1973b17 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -25,7 +25,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- java: [11, 17]
+ java: [11, 17, 21]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
From 4e49dffa72db8dd04e75ca86178d875fab6f566b Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 5 Dec 2023 17:30:16 +0100
Subject: [PATCH 11/12] deps: update shared dependencies (#2016)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[](https://renovatebot.com)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-shared-dependencies](https://togithub.com/googleapis/sdk-platform-java) | `3.19.0` -> `3.20.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
| [com.google.cloud:gapic-libraries-bom](https://togithub.com/googleapis/google-cloud-java) | `1.24.0` -> `1.25.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
googleapis/google-cloud-java (com.google.cloud:gapic-libraries-bom)
### [`v1.25.0`](https://togithub.com/googleapis/google-cloud-java/blob/HEAD/CHANGELOG.md#1250-2023-12-04)
[Compare Source](https://togithub.com/googleapis/google-cloud-java/compare/v1.24.0...v1.25.0)
##### âš BREAKING CHANGES
- add FeatureViewDataFormat, FeatureViewDataKey to FeatureOnlineStoreService
- \[recaptchaenterprise] added required annotations ([#10045](https://togithub.com/googleapis/google-cloud-java/issues/10045))
- change the resource pattern value to `properties/{property}/audienceLists/{audience_list}` for the resource definition `analyticsdata.googleapis.com/AudienceList`
- change the resource pattern value to `properties/{property}` for the resource definition `analyticsadmin.googleapis.com/Property`
##### Features
- \[aiplatform] add ComputeTokens and CountTokens API ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[aiplatform] add ComputeTokens API ([#10053](https://togithub.com/googleapis/google-cloud-java/issues/10053)) ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[aiplatform] add deployment_timeout to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[aiplatform] add deployment_timeout to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[aiplatform] add grpc_ports to UploadModel ModelContainerSpec ([#10065](https://togithub.com/googleapis/google-cloud-java/issues/10065)) ([de32d7a](https://togithub.com/googleapis/google-cloud-java/commit/de32d7a5c7738761b2cb30fb30b6b53836c9556c))
- \[aiplatform] add grpc_ports to UploadModel ModelContainerSpec ([#10091](https://togithub.com/googleapis/google-cloud-java/issues/10091)) ([eeb5108](https://togithub.com/googleapis/google-cloud-java/commit/eeb510862b36a32523b385deda0b7a5207d052b6))
- \[aiplatform] add protected_artifact_location_id to CustomJob ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[aiplatform] add protected_artifact_location_id to CustomJob ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- \[analyticsdata] add `CreateRecurringAudienceList`, `GetRecurringAudienceList`, `ListRecurringAudienceLists` methods to the Data API v1 alpha ([#10092](https://togithub.com/googleapis/google-cloud-java/issues/10092)) ([e4f430e](https://togithub.com/googleapis/google-cloud-java/commit/e4f430eb37c310c1f3caf1ddbc3b3b42bd7ae75f))
- \[analyticsdata] add the `SheetExportAudienceList` method to the Data API v1 alpha ([#10047](https://togithub.com/googleapis/google-cloud-java/issues/10047)) ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- \[batch] add a CloudLoggingOption and use_generic_task_monitored_resource fields for users to opt out new batch monitored resource in cloud logging ([#10056](https://togithub.com/googleapis/google-cloud-java/issues/10056)) ([a9830d9](https://togithub.com/googleapis/google-cloud-java/commit/a9830d9373cad9d2235ed93a625ebee886ff6ff0))
- \[batch] add a CloudLoggingOption and use_generic_task_monitored_resource fields for users to opt out new batch monitored resource in cloud logging ([#10073](https://togithub.com/googleapis/google-cloud-java/issues/10073)) ([5c91759](https://togithub.com/googleapis/google-cloud-java/commit/5c91759a2067bb7bf8d6ffe26f5aeef07c9cbb0a))
- \[binaryauthorization] add container_name, container_type fields to Continuous Validation Logs ([#10085](https://togithub.com/googleapis/google-cloud-java/issues/10085)) ([ee237cd](https://togithub.com/googleapis/google-cloud-java/commit/ee237cd3a511aaa7b135d619892bdfe7ac307e75))
- \[cloudprofiler] add client side retry config for export service ([#10060](https://togithub.com/googleapis/google-cloud-java/issues/10060)) ([1961c40](https://togithub.com/googleapis/google-cloud-java/commit/1961c40a135f0932aedb983ab3c75174f97a71d7))
- \[confidentialcomputing] Add a new field `token_type` to `TokenOptions` message proto ([#10051](https://togithub.com/googleapis/google-cloud-java/issues/10051)) ([e8c974b](https://togithub.com/googleapis/google-cloud-java/commit/e8c974b8781c12ac67d7e878cd869324086e75c0))
- \[dataplex] add data quality score to DataQualityResult ([#10108](https://togithub.com/googleapis/google-cloud-java/issues/10108)) ([fbbbc5c](https://togithub.com/googleapis/google-cloud-java/commit/fbbbc5c2aaa8fe3e38c4a507db075a65e3d83627))
- \[dataplex] added DataQualityResult.score, dimension_score, column_score ([#10064](https://togithub.com/googleapis/google-cloud-java/issues/10064)) ([7a49d63](https://togithub.com/googleapis/google-cloud-java/commit/7a49d63e7318436ad652bf73475efd9018d83eeb))
- \[dialogflow-cx] add agent answer feedback capability ([#10066](https://togithub.com/googleapis/google-cloud-java/issues/10066)) ([8cca9aa](https://togithub.com/googleapis/google-cloud-java/commit/8cca9aac54a8be5b7cce69c855c0b5d94c33f381))
- \[dialogflow-cx] added Generator API ([#10089](https://togithub.com/googleapis/google-cloud-java/issues/10089)) ([bd47695](https://togithub.com/googleapis/google-cloud-java/commit/bd4769513ffb031f5c3d48b139d7ffaf8454a0ea))
- \[discoveryengine] add data store and engine services ([#10054](https://togithub.com/googleapis/google-cloud-java/issues/10054)) ([5a71294](https://togithub.com/googleapis/google-cloud-java/commit/5a71294201f9007512a0c669bbc93f3eda04acba))
- \[file] Added REGIONAL tier support in the v1 API ([7d1f4fe](https://togithub.com/googleapis/google-cloud-java/commit/7d1f4fe6c044fd7328c5fdd78ba16c166e801e00))
- \[file] Added REGIONAL tier support in the v1beta1 API ([#10058](https://togithub.com/googleapis/google-cloud-java/issues/10058)) ([7d1f4fe](https://togithub.com/googleapis/google-cloud-java/commit/7d1f4fe6c044fd7328c5fdd78ba16c166e801e00))
- \[recaptchaenterprise] added AnnotateAssessmentRequest.account_id ([#10077](https://togithub.com/googleapis/google-cloud-java/issues/10077)) ([9fe85ef](https://togithub.com/googleapis/google-cloud-java/commit/9fe85efadd651bfae22ff92d904762954ffa18fd))
- \[securesourcemanager] new module for securesourcemanager ([#10032](https://togithub.com/googleapis/google-cloud-java/issues/10032)) ([64a3b28](https://togithub.com/googleapis/google-cloud-java/commit/64a3b289052a64c37a58503938e2ed3796c10812))
- \[telcoautomation] new module for telcoautomation ([#10070](https://togithub.com/googleapis/google-cloud-java/issues/10070)) ([6188d44](https://togithub.com/googleapis/google-cloud-java/commit/6188d44761bcfa4dab77a02f51097474e2403e9d))
- add `creation_quota_tokens_charged`, `row_count`, `error_message` to the `AudienceList` resource ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- add BatchDeletePipelineJobs, BatchDeletePipelineJobsRequest and BatchDeletePipelineJobsResponse to PipelineService ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add CountTokensRequest to PredictionService ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add FeatureGroup, FeatureOnlineStore, FeatureOnlineStoreAdminService, FeatureOnlineStoreService, FeatureRegistryService, FeatureView, FeatureViewSync ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add FeatureViewDataFormat, FeatureViewDataKey to FeatureOnlineStoreService ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add NumericRestriction to Index ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add NumericRestriction to Index ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add shared_memory_size_mb to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add shared_memory_size_mb to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add startup_probe, health_probe to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add startup_probe, health_probe to UploadModel ModelContainerSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add StudyTimeConstraint to Study ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add StudyTimeConstraint to Study ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add tpu_topology to MachineResources ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add tpu_topology to MachineSpec ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
- add value_type, version_column_name to Feature ([5352821](https://togithub.com/googleapis/google-cloud-java/commit/5352821b5cc151131728a072adeb3f146edee9fc))
##### Bug Fixes
- \[recaptchaenterprise] added required annotations ([#10045](https://togithub.com/googleapis/google-cloud-java/issues/10045)) ([27888dd](https://togithub.com/googleapis/google-cloud-java/commit/27888ddb1e49f606e317bede7ef033fff48fef84))
- add `optional` annotation to the `dimension_name` field of the `AudienceDimension` type ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- add `optional` annotation to the `offset`, `limit` fields of the `QueryAudienceListRequest` type ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- add `optional` annotation to the `page_token` field of the `ListAudienceListsRequest` type ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- add `optional` annotation to the `property`, `date_ranges`, `funnel`, `funnel_breakdown`, `funnel_visualization_type`, `segments`, `dimension_filter`, `return_property_quota`, `limit` fields of the `RunFunnelReportRequest` type ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- add `required` annotation to the `name` field of the `QueryAudienceListRequest` type ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- change the resource pattern value to `properties/{property}/audienceLists/{audience_list}` for the resource definition `analyticsdata.googleapis.com/AudienceList` ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- change the resource pattern value to `properties/{property}` for the resource definition `analyticsadmin.googleapis.com/Property` ([a6880a0](https://togithub.com/googleapis/google-cloud-java/commit/a6880a0581983878ca13a287f8bd956a6262735e))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([0d18fcc](https://togithub.com/googleapis/google-cloud-java/commit/0d18fcc847c3e26f9ed8809266d1acf349f92391))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([9d555bc](https://togithub.com/googleapis/google-cloud-java/commit/9d555bc118bcb9e34529df54c909dd0d4c17fa49))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([3756776](https://togithub.com/googleapis/google-cloud-java/commit/375677643b8a7fca86a5d12b4f34b2e9e5f2c3e1))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([8d05c8b](https://togithub.com/googleapis/google-cloud-java/commit/8d05c8b2ca4839923ac2362f11447ee49efa3002))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([7fe1280](https://togithub.com/googleapis/google-cloud-java/commit/7fe128038269013125901735b45a3af9ba0a146f))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([43bfb4b](https://togithub.com/googleapis/google-cloud-java/commit/43bfb4b2cd449f056c1bc3e2b0635043385b3d85))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([7651030](https://togithub.com/googleapis/google-cloud-java/commit/76510309dd1cc68b074ab8d99819cfb29e82aeca))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([9eac6a9](https://togithub.com/googleapis/google-cloud-java/commit/9eac6a96bde6806dd81faba026daa0166d2e7ff3))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10094](https://togithub.com/googleapis/google-cloud-java/issues/10094)) ([7651030](https://togithub.com/googleapis/google-cloud-java/commit/76510309dd1cc68b074ab8d99819cfb29e82aeca))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10095](https://togithub.com/googleapis/google-cloud-java/issues/10095)) ([9eac6a9](https://togithub.com/googleapis/google-cloud-java/commit/9eac6a96bde6806dd81faba026daa0166d2e7ff3))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10096](https://togithub.com/googleapis/google-cloud-java/issues/10096)) ([3756776](https://togithub.com/googleapis/google-cloud-java/commit/375677643b8a7fca86a5d12b4f34b2e9e5f2c3e1))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10097](https://togithub.com/googleapis/google-cloud-java/issues/10097)) ([8d05c8b](https://togithub.com/googleapis/google-cloud-java/commit/8d05c8b2ca4839923ac2362f11447ee49efa3002))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10098](https://togithub.com/googleapis/google-cloud-java/issues/10098)) ([43bfb4b](https://togithub.com/googleapis/google-cloud-java/commit/43bfb4b2cd449f056c1bc3e2b0635043385b3d85))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10099](https://togithub.com/googleapis/google-cloud-java/issues/10099)) ([7fe1280](https://togithub.com/googleapis/google-cloud-java/commit/7fe128038269013125901735b45a3af9ba0a146f))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10100](https://togithub.com/googleapis/google-cloud-java/issues/10100)) ([0d18fcc](https://togithub.com/googleapis/google-cloud-java/commit/0d18fcc847c3e26f9ed8809266d1acf349f92391))
- **deps:** \[Many APIs] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10101](https://togithub.com/googleapis/google-cloud-java/issues/10101)) ([9d555bc](https://togithub.com/googleapis/google-cloud-java/commit/9d555bc118bcb9e34529df54c909dd0d4c17fa49))
- **deps:** \[securesourcemanager] Update the Java code generator (gapic-generator-java) to 2.30.0 ([2a527e1](https://togithub.com/googleapis/google-cloud-java/commit/2a527e112e76737c5a11cdc1050854583eab9252))
- **deps:** \[securesourcemanager] Update the Java code generator (gapic-generator-java) to 2.30.0 ([#10102](https://togithub.com/googleapis/google-cloud-java/issues/10102)) ([2a527e1](https://togithub.com/googleapis/google-cloud-java/commit/2a527e112e76737c5a11cdc1050854583eab9252))
- **deps:** update dependency com.google.apis:google-api-services-storage to v1-rev20231117-2.0.0 ([#10105](https://togithub.com/googleapis/google-cloud-java/issues/10105)) ([8fbbdbc](https://togithub.com/googleapis/google-cloud-java/commit/8fbbdbc48c23c841c031a6bc32f83211c1f036bc))
- **deps:** update dependency com.google.cloud:google-cloud-pubsub-bom to v1.125.12 ([#10084](https://togithub.com/googleapis/google-cloud-java/issues/10084)) ([6b0166b](https://togithub.com/googleapis/google-cloud-java/commit/6b0166b448d756f3c33597e071c92fcb1562e5ca))
- **deps:** update dependency com.google.cloud:google-cloud-shared-dependencies to v3.20.0 ([#10093](https://togithub.com/googleapis/google-cloud-java/issues/10093)) ([91a4e4e](https://togithub.com/googleapis/google-cloud-java/commit/91a4e4e20252f667b8fc6bda0d9ceaf947348274))
- **deps:** update dependency com.google.cloud:google-cloud-storage to v2.29.1 ([#10035](https://togithub.com/googleapis/google-cloud-java/issues/10035)) ([eefb1b2](https://togithub.com/googleapis/google-cloud-java/commit/eefb1b2fa83b77d87ae9020cdc9552e385e4ff6b))
- use path wildcards in java-iam owlbot yaml ([#10050](https://togithub.com/googleapis/google-cloud-java/issues/10050)) ([f89e45a](https://togithub.com/googleapis/google-cloud-java/commit/f89e45a3d72d85e8ec9720f54b8bf36de1a4e332))
##### Documentation
- \[cloudscheduler] correct timezone/offset information for Cloud Scheduler headers ([#10048](https://togithub.com/googleapis/google-cloud-java/issues/10048)) ([2511217](https://togithub.com/googleapis/google-cloud-java/commit/25112175ee71861a900b3d77a712d2e74bb90543))
- \[contactcenterinsights] Update IngestConversations and BulkAnalyzeConversations comments ([#10069](https://togithub.com/googleapis/google-cloud-java/issues/10069)) ([8a2c241](https://togithub.com/googleapis/google-cloud-java/commit/8a2c241780711f745cdc393d698e040c9d55eb3e))
- \[container] improve API documentation for Binary Authorization ([#10063](https://togithub.com/googleapis/google-cloud-java/issues/10063)) ([25aa532](https://togithub.com/googleapis/google-cloud-java/commit/25aa532caf161cceac7795ee8ddd3a03786b97ce))
- \[dataplex] updated comments for `DataQualityResult.dimensions` field ([#10044](https://togithub.com/googleapis/google-cloud-java/issues/10044)) ([404a852](https://togithub.com/googleapis/google-cloud-java/commit/404a85295344cf2e8b3fe13d9f595279847630fa))
- \[documentai] update comment for ProcessOptions.page_range ([#10076](https://togithub.com/googleapis/google-cloud-java/issues/10076)) ([84fe051](https://togithub.com/googleapis/google-cloud-java/commit/84fe051733c88f13d0db34080b3191b09c742527))
- \[securitycenter] Modify documentation of SimulateSecurityHealthAnalyticsCustomModuleRequest ([#10075](https://togithub.com/googleapis/google-cloud-java/issues/10075)) ([8313e78](https://togithub.com/googleapis/google-cloud-java/commit/8313e78b3fa363068af9da4a2f43868bcb17e81d))
- keep the API doc up-to-date with recent changes ([5a71294](https://togithub.com/googleapis/google-cloud-java/commit/5a71294201f9007512a0c669bbc93f3eda04acba))
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
â™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-bigtable).
---
google-cloud-bigtable-deps-bom/pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index c75a12d9b6f8..c3ea5bc5417f 100644
--- a/google-cloud-bigtable-deps-bom/pom.xml
+++ b/google-cloud-bigtable-deps-bom/pom.xml
@@ -66,14 +66,14 @@
com.google.cloud
gapic-libraries-bom
- 1.24.0
+ 1.25.0
pom
import
com.google.cloud
google-cloud-shared-dependencies
- 3.19.0
+ 3.20.0
pom
import
From a28ac9eaaa3f4fcc758d69ee888e16a749a63c4b Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 5 Dec 2023 18:28:15 +0000
Subject: [PATCH 12/12] chore(main): release 2.30.0 (#2008)
:robot: I have created a release *beep* *boop*
---
## [2.30.0](https://togithub.com/googleapis/java-bigtable/compare/v2.29.1...v2.30.0) (2023-12-05)
### Features
* Client sends routing cookie back to server ([#1888](https://togithub.com/googleapis/java-bigtable/issues/1888)) ([4c73abd](https://togithub.com/googleapis/java-bigtable/commit/4c73abd2f4a07808b591dd9178e87715d2f3008d))
### Dependencies
* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.1 ([#1990](https://togithub.com/googleapis/java-bigtable/issues/1990)) ([7ad70e3](https://togithub.com/googleapis/java-bigtable/commit/7ad70e3abc1af7dfab715386978bf14f02b34e5d))
* Update shared dependencies ([#2016](https://togithub.com/googleapis/java-bigtable/issues/2016)) ([4e49dff](https://togithub.com/googleapis/java-bigtable/commit/4e49dffa72db8dd04e75ca86178d875fab6f566b))
---
This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
---
CHANGELOG.md | 13 +++++++++++++
google-cloud-bigtable-bom/pom.xml | 18 +++++++++---------
google-cloud-bigtable-deps-bom/pom.xml | 2 +-
google-cloud-bigtable-emulator-core/pom.xml | 4 ++--
google-cloud-bigtable-emulator/pom.xml | 10 +++++-----
google-cloud-bigtable-stats/pom.xml | 6 +++---
google-cloud-bigtable/pom.xml | 10 +++++-----
.../com/google/cloud/bigtable/Version.java | 2 +-
grpc-google-cloud-bigtable-admin-v2/pom.xml | 8 ++++----
grpc-google-cloud-bigtable-v2/pom.xml | 8 ++++----
pom.xml | 12 ++++++------
proto-google-cloud-bigtable-admin-v2/pom.xml | 8 ++++----
proto-google-cloud-bigtable-v2/pom.xml | 8 ++++----
samples/snapshot/pom.xml | 2 +-
test-proxy/pom.xml | 4 ++--
versions.txt | 14 +++++++-------
16 files changed, 71 insertions(+), 58 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3bef1b670eb..e03e2c932131 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [2.30.0](https://github.com/googleapis/java-bigtable/compare/v2.29.1...v2.30.0) (2023-12-05)
+
+
+### Features
+
+* Client sends routing cookie back to server ([#1888](https://github.com/googleapis/java-bigtable/issues/1888)) ([4c73abd](https://github.com/googleapis/java-bigtable/commit/4c73abd2f4a07808b591dd9178e87715d2f3008d))
+
+
+### Dependencies
+
+* Update dependency org.junit.vintage:junit-vintage-engine to v5.10.1 ([#1990](https://github.com/googleapis/java-bigtable/issues/1990)) ([7ad70e3](https://github.com/googleapis/java-bigtable/commit/7ad70e3abc1af7dfab715386978bf14f02b34e5d))
+* Update shared dependencies ([#2016](https://github.com/googleapis/java-bigtable/issues/2016)) ([4e49dff](https://github.com/googleapis/java-bigtable/commit/4e49dffa72db8dd04e75ca86178d875fab6f566b))
+
## [2.29.1](https://github.com/googleapis/java-bigtable/compare/v2.29.0...v2.29.1) (2023-11-07)
diff --git a/google-cloud-bigtable-bom/pom.xml b/google-cloud-bigtable-bom/pom.xml
index bde24e45a134..7512e99da650 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.29.2-SNAPSHOT
+ 2.30.0
pom
com.google.cloud
@@ -63,42 +63,42 @@
com.google.cloud
google-cloud-bigtable
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.cloud
google-cloud-bigtable-emulator
- 0.166.2-SNAPSHOT
+ 0.167.0
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.166.2-SNAPSHOT
+ 0.167.0
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.cloud
google-cloud-bigtable-stats
- 2.29.2-SNAPSHOT
+ 2.30.0
diff --git a/google-cloud-bigtable-deps-bom/pom.xml b/google-cloud-bigtable-deps-bom/pom.xml
index c3ea5bc5417f..b0733f362d30 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.29.2-SNAPSHOT
+ 2.30.0
pom
diff --git a/google-cloud-bigtable-emulator-core/pom.xml b/google-cloud-bigtable-emulator-core/pom.xml
index 142a1e8d5f1d..b00a569bc0d4 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.29.2-SNAPSHOT
+ 2.30.0
google-cloud-bigtable-emulator-core
- 0.166.2-SNAPSHOT
+ 0.167.0
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 14f9ba204e8b..63241aa35d0e 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.166.2-SNAPSHOT
+ 0.167.0
Google Cloud Java - Bigtable Emulator
https://github.com/googleapis/java-bigtable
@@ -14,7 +14,7 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
scm:git:git@github.com:googleapis/java-bigtable.git
@@ -81,14 +81,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
@@ -99,7 +99,7 @@
com.google.cloud
google-cloud-bigtable-emulator-core
- 0.166.2-SNAPSHOT
+ 0.167.0
diff --git a/google-cloud-bigtable-stats/pom.xml b/google-cloud-bigtable-stats/pom.xml
index 9d26c5e49639..b5e46be9d3fd 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.29.2-SNAPSHOT
+ 2.30.0
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.29.2-SNAPSHOT
+ 2.30.0
Experimental project to shade OpenCensus dependencies.
@@ -21,7 +21,7 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml
index abe258f630f4..57c976d877a1 100644
--- a/google-cloud-bigtable/pom.xml
+++ b/google-cloud-bigtable/pom.xml
@@ -2,7 +2,7 @@
4.0.0
google-cloud-bigtable
- 2.29.2-SNAPSHOT
+ 2.30.0
jar
Google Cloud Bigtable
https://github.com/googleapis/java-bigtable
@@ -12,11 +12,11 @@
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
- 2.29.2-SNAPSHOT
+ 2.30.0
google-cloud-bigtable
@@ -47,14 +47,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
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 b4c4578ab293..60fb95c75cef 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.29.2-SNAPSHOT";
+ public static String VERSION = "2.30.0";
// {x-version-update-end}
}
diff --git a/grpc-google-cloud-bigtable-admin-v2/pom.xml b/grpc-google-cloud-bigtable-admin-v2/pom.xml
index bab7a4f0faa8..2c9af872ff9c 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.29.2-SNAPSHOT
+ 2.30.0
grpc-google-cloud-bigtable-admin-v2
GRPC library for grpc-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
diff --git a/grpc-google-cloud-bigtable-v2/pom.xml b/grpc-google-cloud-bigtable-v2/pom.xml
index 662111b76aca..5f0ad3cb46d9 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.29.2-SNAPSHOT
+ 2.30.0
grpc-google-cloud-bigtable-v2
GRPC library for grpc-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
diff --git a/pom.xml b/pom.xml
index ffb8d0203e5c..d1ceadc6425f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
google-cloud-bigtable-parent
pom
- 2.29.2-SNAPSHOT
+ 2.30.0
Google Cloud Bigtable Parent
https://github.com/googleapis/java-bigtable
@@ -153,27 +153,27 @@
com.google.api.grpc
proto-google-cloud-bigtable-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
proto-google-cloud-bigtable-admin-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
grpc-google-cloud-bigtable-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.api.grpc
grpc-google-cloud-bigtable-admin-v2
- 2.29.2-SNAPSHOT
+ 2.30.0
com.google.cloud
google-cloud-bigtable
- 2.29.2-SNAPSHOT
+ 2.30.0
diff --git a/proto-google-cloud-bigtable-admin-v2/pom.xml b/proto-google-cloud-bigtable-admin-v2/pom.xml
index f65375310262..60044ab20a7f 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.29.2-SNAPSHOT
+ 2.30.0
proto-google-cloud-bigtable-admin-v2
PROTO library for proto-google-cloud-bigtable-admin-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
diff --git a/proto-google-cloud-bigtable-v2/pom.xml b/proto-google-cloud-bigtable-v2/pom.xml
index d1e6028468a6..b59ed7b8353e 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.29.2-SNAPSHOT
+ 2.30.0
proto-google-cloud-bigtable-v2
PROTO library for proto-google-cloud-bigtable-v2
com.google.cloud
google-cloud-bigtable-parent
- 2.29.2-SNAPSHOT
+ 2.30.0
@@ -18,14 +18,14 @@
com.google.cloud
google-cloud-bigtable-deps-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
com.google.cloud
google-cloud-bigtable-bom
- 2.29.2-SNAPSHOT
+ 2.30.0
pom
import
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 9496f6a1e919..7bd6ab705d38 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
com.google.cloud
google-cloud-bigtable
- 2.29.2-SNAPSHOT
+ 2.30.0
diff --git a/test-proxy/pom.xml b/test-proxy/pom.xml
index fcb0ee68e5c8..c3c154927773 100644
--- a/test-proxy/pom.xml
+++ b/test-proxy/pom.xml
@@ -12,11 +12,11 @@
google-cloud-bigtable-parent
com.google.cloud
- 2.29.2-SNAPSHOT
+ 2.30.0
- 2.29.2-SNAPSHOT
+ 2.30.0
diff --git a/versions.txt b/versions.txt
index 41a499a55dd0..d46263f5514a 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,10 +1,10 @@
# Format:
# module:released-version:current-version
-google-cloud-bigtable:2.29.1:2.29.2-SNAPSHOT
-grpc-google-cloud-bigtable-admin-v2:2.29.1:2.29.2-SNAPSHOT
-grpc-google-cloud-bigtable-v2:2.29.1:2.29.2-SNAPSHOT
-proto-google-cloud-bigtable-admin-v2:2.29.1:2.29.2-SNAPSHOT
-proto-google-cloud-bigtable-v2:2.29.1:2.29.2-SNAPSHOT
-google-cloud-bigtable-emulator:0.166.1:0.166.2-SNAPSHOT
-google-cloud-bigtable-emulator-core:0.166.1:0.166.2-SNAPSHOT
+google-cloud-bigtable:2.30.0:2.30.0
+grpc-google-cloud-bigtable-admin-v2:2.30.0:2.30.0
+grpc-google-cloud-bigtable-v2:2.30.0:2.30.0
+proto-google-cloud-bigtable-admin-v2:2.30.0:2.30.0
+proto-google-cloud-bigtable-v2:2.30.0:2.30.0
+google-cloud-bigtable-emulator:0.167.0:0.167.0
+google-cloud-bigtable-emulator-core:0.167.0:0.167.0