You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bigquery-storage: set gRPC keepalive by default on BigQueryReadClient #18784
ReadRows streams can sit idle for a long time, for example while BigQuery finishes a query job before the first row arrives. Without keepalive pings, a NAT or load balancer can drop the idle connection without telling either side.
google-cloud-bigquery works around this for Arrow query results (#18652) by building its own gRPC transport with grpc.keepalive_time_ms and grpc.keepalive_timeout_ms (_create_bqstorage_transport). As suggested in review on #18652, this belongs in google-cloud-bigquery-storage, so every long ReadRows read gets it.
Proposal: when the caller doesn't pass a transport or channel, BigQueryReadClient adds keepalive options to its default gRPC channel.
Open question: this changes the default channel for all bigquery-storage users, so the values and the default need agreement from the bigquery-storage owners.
Once this is released and google-cloud-bigquery requires it, google-cloud-bigquery can drop _create_bqstorage_transport (tracked in #18785).
Activity
docs(bigquery): say who closes the shared Storage client
feat(bigquery-storage): send gRPC keepalive pings by default (#18792)