diff --git a/google-cloud-bigquerystorage/clirr-ignored-differences.xml b/google-cloud-bigquerystorage/clirr-ignored-differences.xml index b0d2b7c898..96d4b3d595 100644 --- a/google-cloud-bigquerystorage/clirr-ignored-differences.xml +++ b/google-cloud-bigquerystorage/clirr-ignored-differences.xml @@ -147,4 +147,15 @@ com/google/cloud/bigquery/storage/v1/ConnectionWorkerPool ConnectionWorkerPool(long, long, java.time.Duration, com.google.api.gax.batching.FlowController$LimitExceededBehavior, java.lang.String, com.google.cloud.bigquery.storage.v1.BigQueryWriteSettings) + + 7002 + com/google/cloud/bigquery/storage/v1/StreamWriter + boolean isDone() + + + 7002 + com/google/cloud/bigquery/storage/v1/JsonStreamWriter + boolean isDone() + + diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java index 5cf3cec250..24061878f2 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriter.java @@ -387,8 +387,13 @@ public void close() { * JsonStreamWriter is explicitly closed or the underlying connection is broken when * connection pool is not used. Client should recreate JsonStreamWriter in this case. */ - public boolean isDone() { - return this.streamWriter.isDone(); + public boolean isClosed() { + return this.streamWriter.isClosed(); + } + + /** @return if user explicitly closed the writer. */ + public boolean isUserClosed() { + return this.streamWriter.isUserClosed(); } public static final class Builder { diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java index e09467981c..0a65c656b4 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/StreamWriter.java @@ -425,7 +425,7 @@ public String getLocation() { * StreamWriter is explicitly closed or the underlying connection is broken when connection * pool is not used. Client should recreate StreamWriter in this case. */ - public boolean isDone() { + public boolean isClosed() { if (singleConnectionOrConnectionPool.getKind() == Kind.CONNECTION_WORKER) { return userClosed.get() || singleConnectionOrConnectionPool.connectionWorker().isConnectionInUnrecoverableState(); @@ -435,6 +435,11 @@ public boolean isDone() { } } + /** @return if user explicitly closed the writer. */ + public boolean isUserClosed() { + return userClosed.get(); + } + /** Close the stream writer. Shut down all resources. */ @Override public void close() { diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java index 1cb8000858..286061a795 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java @@ -1141,10 +1141,11 @@ public void testWriterId() @Test public void testIsDone() throws DescriptorValidationException, IOException, InterruptedException { - JsonStreamWriter writer1 = getTestJsonStreamWriterBuilder(TEST_STREAM, TABLE_SCHEMA).build(); - Assert.assertFalse(writer1.isDone()); - writer1.close(); - Assert.assertTrue(writer1.isDone()); + JsonStreamWriter writer = getTestJsonStreamWriterBuilder(TEST_STREAM, TABLE_SCHEMA).build(); + Assert.assertFalse(writer.isClosed()); + writer.close(); + Assert.assertTrue(writer.isClosed()); + Assert.assertTrue(writer.isUserClosed()); } private AppendRowsResponse createAppendResponse(long offset) { diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java index 731d6d6364..383301d820 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/StreamWriterTest.java @@ -1237,7 +1237,7 @@ public void testStreamWriterUserCloseMultiplexing() throws Exception { .build(); writer.close(); - assertTrue(writer.isDone()); + assertTrue(writer.isClosed()); ApiFuture appendFuture1 = sendTestMessage(writer, new String[] {"A"}); ExecutionException ex = assertThrows( @@ -1248,6 +1248,7 @@ public void testStreamWriterUserCloseMultiplexing() throws Exception { assertEquals( Status.Code.FAILED_PRECONDITION, ((StatusRuntimeException) ex.getCause()).getStatus().getCode()); + assertTrue(writer.isUserClosed()); } @Test(timeout = 10000) @@ -1256,7 +1257,7 @@ public void testStreamWriterUserCloseNoMultiplexing() throws Exception { StreamWriter.newBuilder(TEST_STREAM_1, client).setWriterSchema(createProtoSchema()).build(); writer.close(); - assertTrue(writer.isDone()); + assertTrue(writer.isClosed()); ApiFuture appendFuture1 = sendTestMessage(writer, new String[] {"A"}); ExecutionException ex = assertThrows( @@ -1267,6 +1268,7 @@ public void testStreamWriterUserCloseNoMultiplexing() throws Exception { assertEquals( Status.Code.FAILED_PRECONDITION, ((StatusRuntimeException) ex.getCause()).getStatus().getCode()); + assertTrue(writer.isUserClosed()); } @Test(timeout = 10000) @@ -1291,7 +1293,8 @@ public void testStreamWriterPermanentErrorMultiplexing() throws Exception { appendFuture2.get(); }); assertTrue(ex.getCause() instanceof InvalidArgumentException); - assertFalse(writer.isDone()); + assertFalse(writer.isClosed()); + assertFalse(writer.isUserClosed()); } @Test(timeout = 10000) @@ -1311,7 +1314,8 @@ public void testStreamWriterPermanentErrorNoMultiplexing() throws Exception { () -> { appendFuture2.get(); }); - assertTrue(writer.isDone()); + assertTrue(writer.isClosed()); assertTrue(ex.getCause() instanceof InvalidArgumentException); + assertFalse(writer.isUserClosed()); } }