Details
-
Bug
-
Status: Resolved
-
P2
-
Resolution: Fixed
-
2.25.0
-
None
Description
In the [BigQueryStorageStreamSource](https://github.com/apache/beam/blob/3bb232fb098700de408f574585dfe74bbaff7230/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryStorageStreamSource.java#L279), we perform two RPCs during splitAtFraction: one to split the current stream into primary and residual child streams, and a second to validate the reader's current offset within the primary stream to ensure that the reader has not advanced beyond the split point during the split process. For sufficiently large streams – particularly when combined with selective predicate filters – this process can take longer than the 2 minute limit beyond which the Dataflow runtime will consider the worker to be lost and can ultimately cause pipeline execution failures.
The short-term solution is to implement a consistent deadline for both RPCs which will fail the split operation if it takes too long. This does not address the potential for sub-optimal parallelism and dynamic work rebalancing, but it should at least prevent pipeline execution failures.
Attachments
Issue Links
- links to