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());
}
}