You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "David Song (Jira)" <ji...@apache.org> on 2019/11/23 01:47:00 UTC
[jira] [Updated] (BEAM-8814) --no_auth flag is boolean type and is
misleading
[ https://issues.apache.org/jira/browse/BEAM-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Song updated BEAM-8814:
-----------------------------
Status: Open (was: Triage Needed)
> --no_auth flag is boolean type and is misleading
> ------------------------------------------------
>
> Key: BEAM-8814
> URL: https://issues.apache.org/jira/browse/BEAM-8814
> Project: Beam
> Issue Type: Bug
> Components: sdk-py-harness
> Affects Versions: 2.14.0, 2.15.0, 2.16.0
> Environment: Python2, Python3
> Reporter: David Song
> Priority: Blocker
> Fix For: 2.14.0, 2.15.0, 2.16.0
>
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> Pipeline options defines a [no_auth|[https://github.com/apache/beam/blob/master/sdks/python/apache_beam/options/pipeline_options.py#L468]] flag that is type=bool. This type is known to be ambiguous because it will expect a value, but anything passed to it will be considered True. For example, passing in "--no_auth=False" would still evaluate to True. We should instead use action="store_true" which only detects whether the flag is passed or not.
> Furthermore, [PipelineOptions.from_dictionary|[https://github.com/apache/beam/blob/master/sdks/python/apache_beam/options/pipeline_options.py#L229]] will assume that boolean flags are passed in without values (e.g. passing --no_auth, instead of --no_auth=True). This, combined with type=bool failing without a value, will ensure that it always fails.
> sdk_worker_main is the only place that uses from_dictionary (aside from tests), and it will crash if no_auth flag is passed. Looking at pipeline_options_test, tests that call [from_dictionary|[https://github.com/apache/beam/blob/master/sdks/python/apache_beam/options/pipeline_options_test.py#L218]] will feed in get_all_options, which means it have intended to only be used for serializing/deserializing flag options.
> So from here, to support the no_auth flag:
> * we change no_auth so that it is action="store_true", or
> * we change sdk_worker_main so that it does not use from_dictionary
> Or both.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)