Skip to content

Commit 0febebc

Browse files
committed
Merge branch 'main' of https://github.com/googleapis/java-spanner into grpc-telemetry-client-interceptor
2 parents aa729a0 + 8cd5163 commit 0febebc

File tree

92 files changed

+16000
-9843
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+16000
-9843
lines changed

.github/.OwlBot-hermetic.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14-
15-
docker:
16-
image: "gcr.io/cloud-devrel-public-resources/owlbot-java:latest"
17-
1814
deep-remove-regex:
1915
- "/grpc-google-.*/src"
2016
- "/proto-google-.*/src"

.github/workflows/hermetic_library_generation.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ on:
2020
env:
2121
HEAD_REF: ${{ github.head_ref }}
2222
REPO_FULL_NAME: ${{ github.event.pull_request.head.repo.full_name }}
23+
GITHUB_REPOSITORY: ${{ github.repository }}
2324

2425
jobs:
2526
library_generation:
26-
# skip pull requests coming from a forked repository
27-
if: github.env.REPO_FULL_NAME == github.repository
2827
runs-on: ubuntu-latest
2928
steps:
3029
- uses: actions/checkout@v4
@@ -35,6 +34,10 @@ jobs:
3534
shell: bash
3635
run: |
3736
set -ex
37+
if [[ "${GITHUB_REPOSITORY}" != "${REPO_FULL_NAME}" ]]; then
38+
echo "This PR comes from a fork. Generation will be skipped"
39+
exit 0
40+
fi
3841
[ -z "$(git config user.email)" ] && git config --global user.email "[email protected]"
3942
[ -z "$(git config user.name)" ] && git config --global user.name "cloud-java-bot"
4043
bash .github/scripts/hermetic_library_generation.sh \

.github/workflows/unmanaged_dependency_check.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ jobs:
1717
# repository
1818
.kokoro/build.sh
1919
- name: Unmanaged dependency check
20-
uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.34.0
20+
uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.35.0
2121
with:
2222
bom-path: google-cloud-spanner-bom/pom.xml

.kokoro/presubmit/graalvm-native-17.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Configure the docker image for kokoro-trampoline.
44
env_vars: {
55
key: "TRAMPOLINE_IMAGE"
6-
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.34.0"
6+
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.35.0"
77
}
88

99
env_vars: {

.kokoro/presubmit/graalvm-native.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Configure the docker image for kokoro-trampoline.
44
env_vars: {
55
key: "TRAMPOLINE_IMAGE"
6-
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.34.0"
6+
value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.35.0"
77
}
88

99
env_vars: {

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# Changelog
22

3+
## [6.75.0](https://github.com/googleapis/java-spanner/compare/v6.74.1...v6.75.0) (2024-09-19)
4+
5+
6+
### Features
7+
8+
* Support multiplexed session for blind write with single use transaction ([#3229](https://github.com/googleapis/java-spanner/issues/3229)) ([b3e2b0f](https://github.com/googleapis/java-spanner/commit/b3e2b0f4892951867715cb7f354c089fca4f050f))
9+
10+
## [6.74.1](https://github.com/googleapis/java-spanner/compare/v6.74.0...v6.74.1) (2024-09-16)
11+
12+
13+
### Bug Fixes
14+
15+
* Use core pool size 1 for maintainer ([#3314](https://github.com/googleapis/java-spanner/issues/3314)) ([cce008d](https://github.com/googleapis/java-spanner/commit/cce008d212535d32da990242973f7f517ca5d6dc))
16+
17+
18+
### Dependencies
19+
20+
* Update dependency com.google.cloud:sdk-platform-java-config to v3.35.0 ([#3329](https://github.com/googleapis/java-spanner/issues/3329)) ([654835f](https://github.com/googleapis/java-spanner/commit/654835f2433b97665c74be9ec80c169ac905a720))
21+
322
## [6.74.0](https://github.com/googleapis/java-spanner/compare/v6.73.0...v6.74.0) (2024-08-27)
423

524

benchmarks/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<parent>
2525
<groupId>com.google.cloud</groupId>
2626
<artifactId>google-cloud-spanner-parent</artifactId>
27-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>
@@ -92,7 +92,7 @@
9292
<dependency>
9393
<groupId>com.google.cloud</groupId>
9494
<artifactId>google-cloud-spanner</artifactId>
95-
<version>6.72.0</version>
95+
<version>6.74.0</version>
9696
</dependency>
9797
<dependency>
9898
<groupId>commons-cli</groupId>

google-cloud-spanner-bom/pom.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner-bom</artifactId>
6-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
1010
<artifactId>sdk-platform-java-config</artifactId>
11-
<version>3.34.0</version>
11+
<version>3.35.0</version>
1212
</parent>
1313

1414
<name>Google Cloud Spanner BOM</name>
@@ -53,43 +53,43 @@
5353
<dependency>
5454
<groupId>com.google.cloud</groupId>
5555
<artifactId>google-cloud-spanner</artifactId>
56-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
5757
</dependency>
5858
<dependency>
5959
<groupId>com.google.cloud</groupId>
6060
<artifactId>google-cloud-spanner</artifactId>
6161
<type>test-jar</type>
62-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6363
</dependency>
6464
<dependency>
6565
<groupId>com.google.api.grpc</groupId>
6666
<artifactId>grpc-google-cloud-spanner-v1</artifactId>
67-
<version>6.74.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.75.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
6868
</dependency>
6969
<dependency>
7070
<groupId>com.google.api.grpc</groupId>
7171
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
72-
<version>6.74.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.75.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7373
</dependency>
7474
<dependency>
7575
<groupId>com.google.api.grpc</groupId>
7676
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
77-
<version>6.74.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.75.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7878
</dependency>
7979
<dependency>
8080
<groupId>com.google.api.grpc</groupId>
8181
<artifactId>proto-google-cloud-spanner-admin-instance-v1</artifactId>
82-
<version>6.74.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.75.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
8383
</dependency>
8484
<dependency>
8585
<groupId>com.google.api.grpc</groupId>
8686
<artifactId>proto-google-cloud-spanner-v1</artifactId>
87-
<version>6.74.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.75.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
8888
</dependency>
8989
<dependency>
9090
<groupId>com.google.api.grpc</groupId>
9191
<artifactId>proto-google-cloud-spanner-admin-database-v1</artifactId>
92-
<version>6.74.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.75.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
9393
</dependency>
9494
</dependencies>
9595
</dependencyManagement>

google-cloud-spanner-executor/assembly-descriptor.xml

Lines changed: 0 additions & 27 deletions
This file was deleted.

google-cloud-spanner-executor/pom.xml

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.google.cloud</groupId>
77
<artifactId>google-cloud-spanner-executor</artifactId>
8-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
99
<packaging>jar</packaging>
1010
<name>Google Cloud Spanner Executor</name>
1111

1212
<parent>
1313
<groupId>com.google.cloud</groupId>
1414
<artifactId>google-cloud-spanner-parent</artifactId>
15-
<version>6.74.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.75.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>
@@ -160,30 +160,61 @@
160160

161161
</dependencies>
162162
<build>
163-
<finalName>google-spanner-cloud-executor</finalName>
164163
<plugins>
165164
<plugin>
166-
<artifactId>maven-assembly-plugin</artifactId>
167-
<version>3.7.1</version>
165+
<artifactId>maven-resources-plugin</artifactId>
166+
<executions>
167+
<execution>
168+
<id>copy-resources</id>
169+
<phase>validate</phase>
170+
<goals>
171+
<goal>copy-resources</goal>
172+
</goals>
173+
<configuration>
174+
<outputDirectory>${project.build.directory}/spanner-executor</outputDirectory>
175+
<resources>
176+
<resource>
177+
<directory>resources</directory>
178+
<filtering>true</filtering>
179+
</resource>
180+
</resources>
181+
</configuration>
182+
</execution>
183+
</executions>
184+
</plugin>
185+
<plugin>
186+
<groupId>org.apache.maven.plugins</groupId>
187+
<artifactId>maven-dependency-plugin</artifactId>
188+
<executions>
189+
<execution>
190+
<id>copy-dependencies</id>
191+
<phase>prepare-package</phase>
192+
<goals>
193+
<goal>copy-dependencies</goal>
194+
</goals>
195+
<configuration>
196+
<outputDirectory>${project.build.directory}/spanner-executor/lib</outputDirectory>
197+
<overWriteReleases>false</overWriteReleases>
198+
<overWriteSnapshots>false</overWriteSnapshots>
199+
<overWriteIfNewer>true</overWriteIfNewer>
200+
</configuration>
201+
</execution>
202+
</executions>
203+
</plugin>
204+
<plugin>
205+
<groupId>org.apache.maven.plugins</groupId>
206+
<artifactId>maven-jar-plugin</artifactId>
168207
<configuration>
169-
<descriptors>
170-
<descriptor>assembly-descriptor.xml</descriptor>
171-
</descriptors>
208+
<finalName>spanner-executor/google-spanner-cloud-executor</finalName>
172209
<archive>
210+
<index>false</index>
173211
<manifest>
174212
<mainClass>com.google.cloud.executor.spanner.WorkerProxy</mainClass>
213+
<addClasspath>true</addClasspath>
214+
<classpathPrefix>lib/</classpathPrefix>
175215
</manifest>
176216
</archive>
177217
</configuration>
178-
<executions>
179-
<execution>
180-
<id>make-assembly</id>
181-
<phase>package</phase>
182-
<goals>
183-
<goal>single</goal>
184-
</goals>
185-
</execution>
186-
</executions>
187218
</plugin>
188219
<plugin>
189220
<groupId>org.apache.maven.plugins</groupId>

google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -803,10 +803,13 @@ private synchronized Spanner getClient(long timeoutSeconds, boolean useMultiplex
803803
.setTotalTimeout(rpcTimeout)
804804
.build();
805805

806-
com.google.cloud.spanner.SessionPoolOptions sessionPoolOptions =
807-
SessionPoolOptionsHelper.setUseMultiplexedSession(
808-
com.google.cloud.spanner.SessionPoolOptions.newBuilder(), useMultiplexedSession)
809-
.build();
806+
com.google.cloud.spanner.SessionPoolOptions.Builder poolOptionsBuilder =
807+
com.google.cloud.spanner.SessionPoolOptions.newBuilder();
808+
SessionPoolOptionsHelper.setUseMultiplexedSession(
809+
com.google.cloud.spanner.SessionPoolOptions.newBuilder(), useMultiplexedSession);
810+
SessionPoolOptionsHelper.setUseMultiplexedSessionBlindWrite(
811+
com.google.cloud.spanner.SessionPoolOptions.newBuilder(), useMultiplexedSession);
812+
com.google.cloud.spanner.SessionPoolOptions sessionPoolOptions = poolOptionsBuilder.build();
810813
// Cloud Spanner Client does not support global retry settings,
811814
// Thus, we need to add retry settings to each individual stub.
812815
SpannerOptions.Builder optionsBuilder =

google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudExecutor.java

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -416,39 +416,48 @@ public Status sendOutcome(SpannerActionOutcome outcome) {
416416

417417
/** Map Cloud ErrorCode to Status. */
418418
protected Status toStatus(SpannerException e) {
419+
String errorMessage = e.getMessage();
420+
com.google.rpc.Status rpcStatus = io.grpc.protobuf.StatusProto.fromThrowable(e);
421+
if (rpcStatus != null) {
422+
if (rpcStatus.getDetailsCount() > 0) {
423+
errorMessage += "/n";
424+
}
425+
for (int i = 0; i < rpcStatus.getDetailsCount(); i++) {
426+
errorMessage += "\nError detail: " + rpcStatus.getDetails(i).toString();
427+
}
428+
}
419429
switch (e.getErrorCode()) {
420430
case INVALID_ARGUMENT:
421-
return Status.fromCode(Status.INVALID_ARGUMENT.getCode()).withDescription(e.getMessage());
431+
return Status.fromCode(Status.INVALID_ARGUMENT.getCode()).withDescription(errorMessage);
422432
case PERMISSION_DENIED:
423-
return Status.fromCode(Status.PERMISSION_DENIED.getCode()).withDescription(e.getMessage());
433+
return Status.fromCode(Status.PERMISSION_DENIED.getCode()).withDescription(errorMessage);
424434
case ABORTED:
425-
return Status.fromCode(Status.ABORTED.getCode()).withDescription(e.getMessage());
435+
return Status.fromCode(Status.ABORTED.getCode()).withDescription(errorMessage);
426436
case ALREADY_EXISTS:
427-
return Status.fromCode(Status.ALREADY_EXISTS.getCode()).withDescription(e.getMessage());
437+
return Status.fromCode(Status.ALREADY_EXISTS.getCode()).withDescription(errorMessage);
428438
case CANCELLED:
429-
return Status.fromCode(Status.CANCELLED.getCode()).withDescription(e.getMessage());
439+
return Status.fromCode(Status.CANCELLED.getCode()).withDescription(errorMessage);
430440
case INTERNAL:
431441
return Status.fromCode(Status.INTERNAL.getCode())
432-
.withDescription(e.getMessage() + e.getReason() == null ? "" : ": " + e.getReason());
442+
.withDescription(errorMessage + e.getReason() == null ? "" : ": " + e.getReason());
433443
case FAILED_PRECONDITION:
434-
return Status.fromCode(Status.FAILED_PRECONDITION.getCode())
435-
.withDescription(e.getMessage());
444+
return Status.fromCode(Status.FAILED_PRECONDITION.getCode()).withDescription(errorMessage);
436445
case NOT_FOUND:
437-
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(e.getMessage());
446+
return Status.fromCode(Status.NOT_FOUND.getCode()).withDescription(errorMessage);
438447
case DEADLINE_EXCEEDED:
439-
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(e.getMessage());
448+
return Status.fromCode(Status.DEADLINE_EXCEEDED.getCode()).withDescription(errorMessage);
440449
case RESOURCE_EXHAUSTED:
441-
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(e.getMessage());
450+
return Status.fromCode(Status.RESOURCE_EXHAUSTED.getCode()).withDescription(errorMessage);
442451
case OUT_OF_RANGE:
443-
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(e.getMessage());
452+
return Status.fromCode(Status.OUT_OF_RANGE.getCode()).withDescription(errorMessage);
444453
case UNAUTHENTICATED:
445-
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(e.getMessage());
454+
return Status.fromCode(Status.UNAUTHENTICATED.getCode()).withDescription(errorMessage);
446455
case UNIMPLEMENTED:
447-
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(e.getMessage());
456+
return Status.fromCode(Status.UNIMPLEMENTED.getCode()).withDescription(errorMessage);
448457
case UNAVAILABLE:
449-
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(e.getMessage());
458+
return Status.fromCode(Status.UNAVAILABLE.getCode()).withDescription(errorMessage);
450459
case UNKNOWN:
451-
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(e.getMessage());
460+
return Status.fromCode(Status.UNKNOWN.getCode()).withDescription(errorMessage);
452461
default:
453462
return Status.fromCode(Status.UNKNOWN.getCode())
454463
.withDescription("Unsupported Spanner error code: " + e.getErrorCode());

google-cloud-spanner-executor/src/main/java/com/google/cloud/spanner/SessionPoolOptionsHelper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,12 @@ public static SessionPoolOptions.Builder setUseMultiplexedSession(
3030
SessionPoolOptions.Builder sessionPoolOptionsBuilder, boolean useMultiplexedSession) {
3131
return sessionPoolOptionsBuilder.setUseMultiplexedSession(useMultiplexedSession);
3232
}
33+
34+
// TODO: Remove when multiplexed session for blind write is released.
35+
public static SessionPoolOptions.Builder setUseMultiplexedSessionBlindWrite(
36+
SessionPoolOptions.Builder sessionPoolOptionsBuilder,
37+
boolean useMultiplexedSessionBlindWrite) {
38+
return sessionPoolOptionsBuilder.setUseMultiplexedSessionBlindWrite(
39+
useMultiplexedSessionBlindWrite);
40+
}
3341
}

0 commit comments

Comments
 (0)