Valentyn Tymofieiev created BEAM-1973:
-----------------------------------------

             Summary: Improve error message for missing required Pipeline 
options in Java API
                 Key: BEAM-1973
                 URL: https://issues.apache.org/jira/browse/BEAM-1973
             Project: Beam
          Issue Type: Improvement
          Components: runner-dataflow
            Reporter: Valentyn Tymofieiev
            Assignee: Davor Bonaci
            Priority: Minor


Here is an example error message when we fail to set GCP project ID:

Caused by: java.lang.IllegalArgumentException: Missing required value for 
[public abstract java.lang.String 
org.apache.beam.runners.dataflow.options.DataflowPipelineOptions.getProject(), 
"Project id. Required when running a Dataflow in the cloud. See 
https://cloud.google.com/storage/docs/projects for further details."].

We should make the error message more actionable by suggesting a command line 
parameter that sets the pipeline option or pointing to relevant programmatic 
API that sets it.

Full error message:

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Failed to construct instance from 
factory method DataflowRunner#fromOptions(interface 
org.apache.beam.sdk.options.PipelineOptions)
        at 
org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:233)
        at 
org.apache.beam.sdk.util.InstanceBuilder.build(InstanceBuilder.java:162)
        at 
org.apache.beam.sdk.runners.PipelineRunner.fromOptions(PipelineRunner.java:56)
        at org.apache.beam.sdk.Pipeline.create(Pipeline.java:135)
        at org.apache.beam.examples.WordCount.main(WordCount.java:175)
        ... 6 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:222)
        ... 10 more
Caused by: java.lang.IllegalArgumentException: Missing required value for 
[public abstract java.lang.String 
org.apache.beam.runners.dataflow.options.DataflowPipelineOptions.getProject(), 
"Project id. Required when running a Dataflow in the cloud. See 
https://cloud.google.com/storage/docs/projects for further details."].
        at 
org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:383)
        at 
org.apache.beam.sdk.options.PipelineOptionsValidator.validate(PipelineOptionsValidator.java:70)
        at 
org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:196)
        ... 15 more





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to