Skip to content

Commit a6db4d5

Browse files
chore: merge main into generate-libraries-main
2 parents 8046755 + 32b2373 commit a6db4d5

File tree

18 files changed

+106
-52
lines changed

18 files changed

+106
-52
lines changed

benchmarks/pom.xml

Lines changed: 1 addition & 1 deletion
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.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>

google-cloud-spanner-bom/pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner-bom</artifactId>
6-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
@@ -53,43 +53,43 @@
5353
<dependency>
5454
<groupId>com.google.cloud</groupId>
5555
<artifactId>google-cloud-spanner</artifactId>
56-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
9393
</dependency>
9494
</dependencies>
9595
</dependencyManagement>

google-cloud-spanner-executor/pom.xml

Lines changed: 2 additions & 2 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.92.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.92.1-SNAPSHOT</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.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

google-cloud-spanner/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner</artifactId>
6-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>jar</packaging>
88
<name>Google Cloud Spanner</name>
99
<url>https://github.com/googleapis/java-spanner</url>
1010
<description>Java idiomatic client for Google Cloud Spanner.</description>
1111
<parent>
1212
<groupId>com.google.cloud</groupId>
1313
<artifactId>google-cloud-spanner-parent</artifactId>
14-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1515
</parent>
1616
<properties>
1717
<site.installationModule>google-cloud-spanner</site.installationModule>

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,6 +1314,7 @@ default void addListener(Runnable listener, Executor exec) {}
13141314
class PooledSessionFuture extends SimpleForwardingListenableFuture<PooledSession>
13151315
implements SessionFuture {
13161316

1317+
private boolean closed;
13171318
private volatile LeakedSessionException leakedException;
13181319
private final AtomicBoolean inUse = new AtomicBoolean();
13191320
private final CountDownLatch initialized = new CountDownLatch(1);
@@ -1331,6 +1332,7 @@ void clearLeakedException() {
13311332
}
13321333

13331334
private void markCheckedOut() {
1335+
13341336
if (options.isTrackStackTraceOfSessionCheckout()) {
13351337
this.leakedException = new LeakedSessionException();
13361338
synchronized (SessionPool.this.lock) {
@@ -1520,6 +1522,13 @@ public void close() {
15201522

15211523
@Override
15221524
public ApiFuture<Empty> asyncClose() {
1525+
synchronized (this) {
1526+
// Don't add the session twice to the pool if a resource is being closed multiple times.
1527+
if (closed) {
1528+
return ApiFutures.immediateFuture(Empty.getDefaultInstance());
1529+
}
1530+
closed = true;
1531+
}
15231532
try {
15241533
PooledSession delegate = getOrNull();
15251534
if (delegate != null) {
@@ -3142,6 +3151,13 @@ int totalSessions() {
31423151
}
31433152
}
31443153

3154+
@VisibleForTesting
3155+
int numSessionsInPool() {
3156+
synchronized (lock) {
3157+
return sessions.size();
3158+
}
3159+
}
3160+
31453161
private ApiFuture<Empty> closeSessionAsync(final PooledSession sess) {
31463162
ApiFuture<Empty> res = sess.delegate.asyncClose();
31473163
res.addListener(

google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ default <T extends ProtocolMessageEnum> List<T> getProtoEnumList(
648648

649649
List<UUID> getUuidList(int columnIndex);
650650

651-
List<UUID> getUuidList(String columnNameÏ);
651+
List<UUID> getUuidList(String columnName);
652652

653653
/**
654654
* @param columnIndex index of the column

google-cloud-spanner/src/test/java/com/google/cloud/spanner/AsyncTransactionManagerTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,6 +1237,44 @@ public void testAbandonedAsyncTransactionManager_rollbackFails() throws Exceptio
12371237
assertTrue(gotException);
12381238
}
12391239

1240+
@Test
1241+
public void testRollbackAndCloseEmptyTransaction() throws Exception {
1242+
assumeFalse(
1243+
spannerWithEmptySessionPool
1244+
.getOptions()
1245+
.getSessionPoolOptions()
1246+
.getUseMultiplexedSessionForRW());
1247+
1248+
DatabaseClientImpl client = (DatabaseClientImpl) clientWithEmptySessionPool();
1249+
1250+
// Create a transaction manager and start a transaction. This should create a session and
1251+
// check it out of the pool.
1252+
AsyncTransactionManager manager = client.transactionManagerAsync();
1253+
manager.beginAsync().get();
1254+
assertEquals(0, client.pool.numSessionsInPool());
1255+
assertEquals(1, client.pool.totalSessions());
1256+
1257+
// Rolling back an empty transaction will return the session to the pool.
1258+
manager.rollbackAsync().get();
1259+
assertEquals(1, client.pool.numSessionsInPool());
1260+
// Closing the transaction manager should not cause the session to be added to the pool again.
1261+
manager.close();
1262+
// The total number of sessions does not change.
1263+
assertEquals(1, client.pool.numSessionsInPool());
1264+
1265+
// Check out 2 sessions. Make sure that the pool really created a new session, and did not
1266+
// return the same session twice.
1267+
AsyncTransactionManager manager1 = client.transactionManagerAsync();
1268+
AsyncTransactionManager manager2 = client.transactionManagerAsync();
1269+
manager1.beginAsync().get();
1270+
manager2.beginAsync().get();
1271+
assertEquals(2, client.pool.totalSessions());
1272+
assertEquals(0, client.pool.numSessionsInPool());
1273+
manager1.close();
1274+
manager2.close();
1275+
assertEquals(2, client.pool.numSessionsInPool());
1276+
}
1277+
12401278
private boolean isMultiplexedSessionsEnabled() {
12411279
if (spanner.getOptions() == null || spanner.getOptions().getSessionPoolOptions() == null) {
12421280
return false;

grpc-google-cloud-spanner-admin-database-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
7-
<version>6.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-database-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-database-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-admin-instance-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
7-
<version>6.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-instance-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-instance-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-executor-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-executor-v1</artifactId>
7-
<version>6.92.0</version><!-- {x-version-update:grpc-google-cloud-spanner-executor-v1:current} -->
7+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-executor-v1:current} -->
88
<name>grpc-google-cloud-spanner-executor-v1</name>
99
<description>GRPC library for google-cloud-spanner</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.92.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.92.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

0 commit comments

Comments
 (0)