Skip to content

Commit 488f091

Browse files
committed
fix: skip session delete in case of multiplexed sessions
1 parent 2dac4bc commit 488f091

File tree

2 files changed

+42
-12
lines changed

2 files changed

+42
-12
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,12 +468,18 @@ public AsyncTransactionManagerImpl transactionManagerAsync(TransactionOption...
468468

469469
@Override
470470
public ApiFuture<Empty> asyncClose() {
471+
if (getIsMultiplexed()) {
472+
return com.google.api.core.ApiFutures.immediateFuture(Empty.getDefaultInstance());
473+
}
471474
XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1);
472475
return spanner.getRpc().asyncDeleteSession(getName(), reqId.withOptions(getOptions()));
473476
}
474477

475478
@Override
476479
public void close() {
480+
if (getIsMultiplexed()) {
481+
return;
482+
}
477483
ISpan span = tracer.spanBuilder(SpannerImpl.DELETE_SESSION);
478484
try (IScope s = tracer.withSpan(span)) {
479485
XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1);

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

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3601,9 +3601,15 @@ public void testBackendPartitionQueryOptions() {
36013601
// statistics package and directed read options.
36023602
List<AbstractMessage> requests = mockSpanner.getRequests();
36033603
assert requests.size() >= 2 : "required to have at least 2 requests";
3604-
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3605-
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class);
3606-
ExecuteSqlRequest executeSqlRequest = (ExecuteSqlRequest) requests.get(requests.size() - 2);
3604+
if (isMultiplexedSessionsEnabled()) {
3605+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(ExecuteSqlRequest.class);
3606+
} else {
3607+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3608+
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class);
3609+
}
3610+
ExecuteSqlRequest executeSqlRequest =
3611+
(ExecuteSqlRequest)
3612+
requests.get(isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2);
36073613
assertThat(executeSqlRequest.getQueryOptions()).isNotNull();
36083614
assertThat(executeSqlRequest.getQueryOptions().getOptimizerVersion()).isEqualTo("1");
36093615
assertThat(executeSqlRequest.getQueryOptions().getOptimizerStatisticsPackage())
@@ -3651,9 +3657,15 @@ public void testBackendPartitionQueryOptions() {
36513657
// statistics package and directed read options.
36523658
List<AbstractMessage> requests = mockSpanner.getRequests();
36533659
assert requests.size() >= 2 : "required to have at least 2 requests";
3654-
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3655-
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class);
3656-
ExecuteSqlRequest executeSqlRequest = (ExecuteSqlRequest) requests.get(requests.size() - 2);
3660+
if (isMultiplexedSessionsEnabled()) {
3661+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(ExecuteSqlRequest.class);
3662+
} else {
3663+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3664+
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class);
3665+
}
3666+
ExecuteSqlRequest executeSqlRequest =
3667+
(ExecuteSqlRequest)
3668+
requests.get(isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2);
36573669
assertThat(executeSqlRequest.getQueryOptions()).isNotNull();
36583670
assertThat(executeSqlRequest.getQueryOptions().getOptimizerVersion()).isEqualTo("1");
36593671
assertThat(executeSqlRequest.getQueryOptions().getOptimizerStatisticsPackage())
@@ -3697,9 +3709,15 @@ public void testBackendPartitionReadOptions() {
36973709
// statistics package and directed read options.
36983710
List<AbstractMessage> requests = mockSpanner.getRequests();
36993711
assert requests.size() >= 2 : "required to have at least 2 requests";
3700-
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3701-
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class);
3702-
ReadRequest readRequest = (ReadRequest) requests.get(requests.size() - 2);
3712+
if (isMultiplexedSessionsEnabled()) {
3713+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(ReadRequest.class);
3714+
} else {
3715+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3716+
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class);
3717+
}
3718+
ReadRequest readRequest =
3719+
(ReadRequest)
3720+
requests.get(isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2);
37033721
assertThat(readRequest.getDirectedReadOptions()).isEqualTo(DIRECTED_READ_OPTIONS1);
37043722
}
37053723
}
@@ -3740,9 +3758,15 @@ public void testBackendPartitionReadOptions() {
37403758
// statistics package and directed read options.
37413759
List<AbstractMessage> requests = mockSpanner.getRequests();
37423760
assert requests.size() >= 2 : "required to have at least 2 requests";
3743-
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3744-
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class);
3745-
ReadRequest readRequest = (ReadRequest) requests.get(requests.size() - 2);
3761+
if (isMultiplexedSessionsEnabled()) {
3762+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(ReadRequest.class);
3763+
} else {
3764+
assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class);
3765+
assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class);
3766+
}
3767+
ReadRequest readRequest =
3768+
(ReadRequest)
3769+
requests.get(isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2);
37463770
assertThat(readRequest.getDirectedReadOptions()).isEqualTo(DIRECTED_READ_OPTIONS2);
37473771
}
37483772
}

0 commit comments

Comments
 (0)