diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java index bce8a8d375..68c37561c9 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java @@ -468,12 +468,18 @@ public AsyncTransactionManagerImpl transactionManagerAsync(TransactionOption... @Override public ApiFuture asyncClose() { + if (getIsMultiplexed()) { + return com.google.api.core.ApiFutures.immediateFuture(Empty.getDefaultInstance()); + } XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); return spanner.getRpc().asyncDeleteSession(getName(), reqId.withOptions(getOptions())); } @Override public void close() { + if (getIsMultiplexed()) { + return; + } ISpan span = tracer.spanBuilder(SpannerImpl.DELETE_SESSION); try (IScope s = tracer.withSpan(span)) { XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java index fa8b5c982f..fa95c55183 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java @@ -3601,9 +3601,16 @@ public void testBackendPartitionQueryOptions() { // statistics package and directed read options. List requests = mockSpanner.getRequests(); assert requests.size() >= 2 : "required to have at least 2 requests"; - assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); - assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class); - ExecuteSqlRequest executeSqlRequest = (ExecuteSqlRequest) requests.get(requests.size() - 2); + if (isMultiplexedSessionsEnabled()) { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(ExecuteSqlRequest.class); + } else { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); + assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class); + } + ExecuteSqlRequest executeSqlRequest = + (ExecuteSqlRequest) + requests.get( + isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2); assertThat(executeSqlRequest.getQueryOptions()).isNotNull(); assertThat(executeSqlRequest.getQueryOptions().getOptimizerVersion()).isEqualTo("1"); assertThat(executeSqlRequest.getQueryOptions().getOptimizerStatisticsPackage()) @@ -3651,9 +3658,16 @@ public void testBackendPartitionQueryOptions() { // statistics package and directed read options. List requests = mockSpanner.getRequests(); assert requests.size() >= 2 : "required to have at least 2 requests"; - assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); - assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class); - ExecuteSqlRequest executeSqlRequest = (ExecuteSqlRequest) requests.get(requests.size() - 2); + if (isMultiplexedSessionsEnabled()) { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(ExecuteSqlRequest.class); + } else { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); + assertThat(requests.get(requests.size() - 2)).isInstanceOf(ExecuteSqlRequest.class); + } + ExecuteSqlRequest executeSqlRequest = + (ExecuteSqlRequest) + requests.get( + isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2); assertThat(executeSqlRequest.getQueryOptions()).isNotNull(); assertThat(executeSqlRequest.getQueryOptions().getOptimizerVersion()).isEqualTo("1"); assertThat(executeSqlRequest.getQueryOptions().getOptimizerStatisticsPackage()) @@ -3697,9 +3711,16 @@ public void testBackendPartitionReadOptions() { // statistics package and directed read options. List requests = mockSpanner.getRequests(); assert requests.size() >= 2 : "required to have at least 2 requests"; - assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); - assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class); - ReadRequest readRequest = (ReadRequest) requests.get(requests.size() - 2); + if (isMultiplexedSessionsEnabled()) { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(ReadRequest.class); + } else { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); + assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class); + } + ReadRequest readRequest = + (ReadRequest) + requests.get( + isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2); assertThat(readRequest.getDirectedReadOptions()).isEqualTo(DIRECTED_READ_OPTIONS1); } } @@ -3740,9 +3761,16 @@ public void testBackendPartitionReadOptions() { // statistics package and directed read options. List requests = mockSpanner.getRequests(); assert requests.size() >= 2 : "required to have at least 2 requests"; - assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); - assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class); - ReadRequest readRequest = (ReadRequest) requests.get(requests.size() - 2); + if (isMultiplexedSessionsEnabled()) { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(ReadRequest.class); + } else { + assertThat(requests.get(requests.size() - 1)).isInstanceOf(DeleteSessionRequest.class); + assertThat(requests.get(requests.size() - 2)).isInstanceOf(ReadRequest.class); + } + ReadRequest readRequest = + (ReadRequest) + requests.get( + isMultiplexedSessionsEnabled() ? requests.size() - 1 : requests.size() - 2); assertThat(readRequest.getDirectedReadOptions()).isEqualTo(DIRECTED_READ_OPTIONS2); } }