Sam Whittle created BEAM-9660:
---------------------------------
Summary: StreamingDataflowWorker has confusing exception on
commits over 2GB
Key: BEAM-9660
URL: https://issues.apache.org/jira/browse/BEAM-9660
Project: Beam
Issue Type: Bug
Components: runner-dataflow
Affects Versions: 2.19.0, 2.18.0
Reporter: Sam Whittle
Assignee: Sam Whittle
Commits over 2GB have a negative serialized commit size.
When not using streaming engine the max commit limit is 2GB.
https://github.com/apache/beam/blob/v2.19.0/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorker.java#L450
There appears to be a logging regression introduced by
https://github.com/apache/beam/pull/10013
With the new code, if the serialization overflows the estimated bytes is set to
Integer.MAX which equals the commit limit for appliance.
Then the comparison here:
https://github.com/apache/beam/blob/v2.19.0/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorker.java#L1371
which uses > does not trigger and the large commit is just passed on to the
commit queue, triggering the exception seen in #3 [2] when the weigher uses the
negative serialized size for the semaphore acquire call.
So previously where we would have thrown a KeyCommitTooLargeException we are
throwing the IllegalArgumentException.
>From that exception description:
>https://github.com/apache/beam/blob/v2.19.0/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorker.java#L236
". This may be caused by grouping a very "
+ "large amount of data in a single window without using Combine,"
+ " or by producing a large amount of data from a single input
element."
The overflow could be remembered explicitly instead of just comparing with max.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)