From db527be024cd0e8c36d3b22e0b8f5c185c56f74f Mon Sep 17 00:00:00 2001 From: Gaole Meng Date: Wed, 10 Jan 2024 11:44:07 -0800 Subject: [PATCH] feat: add configuration in json steam writer to configure the timeout in request waiting queue (#2362) * make the request timeout configurable in connection worker * feat: add api to set the maximum wait queue wait time --- .../cloud/bigquery/storage/v1/JsonStreamWriter.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 8aa66b789e..64d683438c 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 @@ -23,6 +23,7 @@ import com.google.api.gax.rpc.TransportChannelProvider; import com.google.protobuf.Descriptors; import java.io.IOException; +import java.time.Duration; import java.util.Map; import org.json.JSONArray; @@ -193,6 +194,16 @@ public static Builder newBuilder(String streamOrTableName, BigQueryWriteClient c SchemaAwareStreamWriter.newBuilder(streamOrTableName, client, JsonToProtoMessage.INSTANCE)); } + /** + * Sets the maximum time a request is allowed to be waiting in request waiting queue. Under very + * low chance, it's possible for append request to be waiting indefintely for request callback + * when Google networking SDK does not detect the networking breakage. The default timeout is 15 + * minutes. We are investigating the root cause for callback not triggered by networking SDK. + */ + public static void setMaxRequestCallbackWaitTime(Duration waitTime) { + ConnectionWorker.MAXIMUM_REQUEST_CALLBACK_WAIT_TIME = waitTime; + } + @Override public void close() { this.schemaAwareStreamWriter.close();