diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/OutputTooLargeException.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/OutputTooLargeException.java index 9f4b413841c5495d64b4eb4171301691ccb87eb8..acfd8a291108b4951cd8d9022fa21afaeef15401 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/OutputTooLargeException.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/OutputTooLargeException.java @@ -22,7 +22,9 @@ import org.checkerframework.checker.nullness.qual.Nullable; /** Indicates that an output element was too large. */ public class OutputTooLargeException extends RuntimeException { public OutputTooLargeException(String reason) { - super(reason); + super( + reason + + " See https://cloud.google.com/dataflow/docs/guides/common-errors#key-commit-too-large-exception."); } /** Returns whether an exception was caused by a {@link OutputTooLargeException}. */ diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/WindmillSink.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/WindmillSink.java index 78d0c6b4550af2cf839210d77a9bb61b35cb5586..f83c68ab3c90c801e6041fee73d8d2ea02e508d8 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/WindmillSink.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/WindmillSink.java @@ -183,7 +183,9 @@ class WindmillSink<T> extends Sink<WindowedValue<T>> { "Trying to output too large key with size " + key.size() + ". Limit is " - + context.getMaxOutputKeyBytes()); + + context.getMaxOutputKeyBytes() + + ". See https://cloud.google.com/dataflow/docs/guides/common-errors#key-commit-too-large-exception." + + " Running with --experiments=throw_exceptions_on_large_output will instead throw an OutputTooLargeException which may be caught in user code."); } } if (value.size() > context.getMaxOutputValueBytes()) { @@ -194,7 +196,9 @@ class WindmillSink<T> extends Sink<WindowedValue<T>> { "Trying to output too large value with size " + value.size() + ". Limit is " - + context.getMaxOutputValueBytes()); + + context.getMaxOutputValueBytes() + + ". See https://cloud.google.com/dataflow/docs/guides/common-errors#key-commit-too-large-exception." + + " Running with --experiments=throw_exceptions_on_large_output will instead throw an OutputTooLargeException which may be caught in user code."); } } diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/streaming/KeyCommitTooLargeException.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/streaming/KeyCommitTooLargeException.java index 090d9981309e5cc59746c7fdf87d60a7b8e5cc5c..76228b9092b397e0718740686e2f6e1eadd5b22d 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/streaming/KeyCommitTooLargeException.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/streaming/KeyCommitTooLargeException.java @@ -40,7 +40,8 @@ public final class KeyCommitTooLargeException extends Exception { message.append( ". 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."); + + " or by producing a large amount of data from a single input element." + + " See https://cloud.google.com/dataflow/docs/guides/common-errors#key-commit-too-large-exception."); return new KeyCommitTooLargeException(message.toString()); }